Ask HN: Deterministic Transactions KV/DBs in RAM


Non-deterministic transaction ordering is neatly reviewed in [2]. Summary: DBs would perhaps perhaps objective reorder transactions because getting learn/write objects, locks, or I/O timeouts will block some transactions, but others can proceed. This form moderate throughput is better.

Calvin [4], reviewed within the Morning Paper [3], builds on [1] & argues for a deterministic ordering of transactions. It's advantages are:

– no two section protocol, which is I/O heavy

– no logging of physical structure of CRUD adjustments made to disk by disk. Need only log transaction inputs

– Calvin's sequencing and scheduling layer would perhaps perhaps objective even be bolted onto any CRUD API over storage

I’d plot reader's consideration to [4, pg4]:

“Calvin divides time into 10-millisecond epochs at some stage in which every and every machine’s sequencer part collects transaction requests
from customers. At the discontinue of every epoch, all requests that non-public arrived at a sequencer node are compiled accurate into a batch. Here’s the
point at which replication of transactional inputs (talked about below) occurs.”

So whereas it avoids varied complications, the implication is that no transaction can complete in than the less epoch time. That'd be too low, because an all in memory DB or KV can't be stalled by disk … I rather hoped Calvin would perhaps perhaps neatly be regarded as for low-latency KV store given I would perhaps perhaps perhaps bound storage below it.

Did I recede over something?

Insist that except one falls abet to OCC, or goes VoltDb and enhance transactions on single partitions only, there’s now not any longer any formulation to manual obvious of locking in deterministic transaction scheduling because that's single core work.





Leave A Reply

Your email address will not be published.