aatree
aatree copied to clipboard
Heifer Database
Heifer is a Copy-On-Write database like Yearling, but with the addition of a transaction log. Updates then must be serializable. It is also time to add a recovery mechanism so that processing can continue after an update throws an exception without having to reopen the database or reread the root data. Updates then can be batched for greater efficiency.
A pipeline using async looks good. First stage will group updates into batches and log them. Once the log is sync'ed, they should be passed to the second stage which does the db update.
Initially we can use a null-logger and later provide something more reasonable. The logger then should not be a part of heifer.
Also, the root block should contain the current log file name and position. This can be used for quickly updating a backup with just the new transactions.