When we think of Databases we usually want them to conform to the ACID-principle. Since DataFS works with objects and is relational, we will often hear developers claim that DataFS is BASE. However, this couldn't be further from the truth. Here we list the ACID-Model again for our repetition.
Let's now look at the way DataFS lets us do transactions - it's fairly simple and straight-forward.
DataFS uses 4 functions: open, create, load or store inside it's Transactions. These functions are queued in a special list waiting to be executed (1 - see in the images below). In WDomain this list is called Transaction and in UStorage it's called ActionGroup.
WSomeObject::Open(&pSomeObject, &pSomeObjectLink->oiObjectId, pDomain); WSomeObject::Create(&pSomeObject, pDomain); SomeObject->Load(); SomeObject->Store();
This list gets updated with all the changes and as soon as we execute (2) the transaction starts the request (a) to the server which in turn responds (b). When we open or load, our object will be updated by the List (c).
domain->Execute(Transaction::Load) domain->Execute(Transaction::Store)
Now since we know how DataFS does Transactions we can discuss if it holds up.