Skip to content

Rewind is a high performance command log layer for LMDB.

License

Notifications You must be signed in to change notification settings

kellabyte/rewind

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rewind

Rewind is a command log library. Similar to a WAL (write-ahead-log).

Command logging provides durability of database operations. Command logging keeps a record of every transaction. If the server fails for any reason, the database can restore the last snapshot and "replay" the log entries to recover the database.

Differences between a Command Log and a Write-Ahead-Log

The difference between a command log and write-ahead-log is that a command log records the invocations, whereas a WAL records the consequences of the transactions.

Goals

The goal for Rewind is to implement an optional logical command log for LMDB. LMDB is a very fast storage engine that performs very fast for many types of workloads but there are a few workloads that could potentially benefit from having a commit log in place. It's my long standing theory that a command log or WAL can help LMDB catch up to RocksDB in benchmarks RocksDB excels against LMDB without all the LSM complexity and LSM drawbacks. Rewind is an attempt to implement my ideas without adding a bunch of internal complexity to LMDB while enabling most LMDB consumers to use Rewind with very little or no code change.

Log entry format

TODO.

Prerequisites

If you're on macOS don't forget to install the CLI developer tools.

xcode-select --install

Compiling

make

Running tests

make test

===============================================================================
test cases: 1 | 1 passed
assertions: - none -

Running benchmarks

make benchmark

About

Rewind is a high performance command log layer for LMDB.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages