Warp is a HyperDex add-on that provides support for ACID transactions that span multiple objects.
Transactions in HyperDex Warp are one-copy serializable, with ACID guarantees. Specifically, HyperDex Warp makes the following guarantees:
Atomicity: Either the entire transaction completes or it has no effect.
Consistency: Invariants enforced by the application are preserved.
Isolation: Concurrent transactions are logically serialized and have no side effects until committed.
Durability: Every write will be seen at all f + 1 replicas.
HyperDex Warp provides a true transactional interface. A Warp client has access to all of the datatypes and key-based operations that HyperDex offers. Clients can start any number of transactions concurrently, and issue, in any intermixed order, operations in each of those transactions. A client can access any number of objects within a transaction, and can modify any number of them. Warp transactions operate independently with full database isolation, their side-effects are not visible until the transaction commits. Transactions employ optimistic concurrency control, wherein conflicting transactions may abort, in which case they have no effect on the database. A successful commit takes place atomically, as if the set of modifications were applied on all objects involved in the transaction at the same time.
HyperDex does not support nested transactions, and message size and memory limits apply.
What makes these properties possible is a novel technique called linear transactions. Linear transactions build on the value-dependent chaining technique pioneered by HyperDex. The nature of the chain makes it possible to provide ACID properties.
Linear transactions provide fault-tolerance naturally, building on the guarantees provided by value-dependent chaining. A node failure during a transaction will not leave the database in an undefined state. An acknowledgement from the system necessarily means that the data was committed at all f+1 replicas. Unlike traditional two-phase commit protocols, failure of a client will not leave the database deadlocked or otherwise unable to continue.
HyperDex Warp transactions are fully distributed. The transactional chains technique coordinates between all servers involved in a transaction. There is no centralized component for ordering or applying transactions. Instead, a new protocol commits transactions in an ACID compliant manner. The inherently distributed nature of the protocol allows for greater scalability by eliminating the central bottleneck present in other distributed transaction protocols.