C# Class Platform.Data.Core.Pairs.UInt64Links.Transaction

Другие варианты реализации транзакций (атомарности): 1. Разделение хранения значения связи ((Source Target) или (Source Linker Target)) и индексов. 2. Хранение трансформаций/операций в отдельной Links базе данных, но дополнительно потребуется решить вопрос со ссылками на внешние идентификаторы, или как-то иначе решить вопрос с пересечениями идентификаторов. Где хранить промежуточный список транзакций? В оперативной памяти: Минусы: 1. Может усложнить систему, если она будет функционировать самостоятельно, так как нужно отдельно выделять память под список трансформаций. 2. Выделенной оперативной памяти может не хватить, в том случае, если транзакция использует слишком много трансформаций. -> Можно использовать жёсткий диск для слишком длинных транзакций. -> Максимальный размер списка трансформаций можно ограничить / задать константой. 3. При подтверждении транзакции (Commit) все трансформации записываются разом создавая задержку. На жёстком диске: Минусы: 1. Длительный отклик, на запись каждой трансформации. 2. Лог транзакций дополнительно наполняется отменёнными транзакциями. -> Это может решаться упаковкой/исключением дублирующих операций. -> Также это может решаться тем, что короткие транзакции вообще не будут записываться в случае отката. 3. Перед тем как выполнять отмену операций транзакции нужно дождаться пока все операции (трансформации) будут записаны в лог.
Inheritance: DisposableBase
显示文件 Open project: Konard/LinksPlatform

Public Methods

Method Description
Commit ( ) : void
Transaction ( UInt64Links links ) : System

Protected Methods

Method Description
DisposeCore ( bool manual ) : void

Private Methods

Method Description
Revert ( ) : void

Method Details

Commit() public method

public Commit ( ) : void
return void

DisposeCore() protected method

protected DisposeCore ( bool manual ) : void
manual bool
return void

Transaction() public method

public Transaction ( UInt64Links links ) : System
links UInt64Links
return System