Not sure how I feel about that philosophy. Transaction support is extremely complex and should be left to a storage engine if ever possible.
What is the benefit of this over something like Berkeley DB?
Not sure how I feel about that philosophy. Transaction support is extremely complex and should be left to a storage engine if ever possible.
What is the benefit of this over something like Berkeley DB?
One can take Badger and build a transactional layer above it, and it would still be below the application layer.
Transaction support comes with a set of performance compromises, and different companies may want to make different compromises.
Then comparing it to Rocks DB is unfair (infact title of this post is misleading). Stuff like transactions and MVCC is way complicated than it sounds.
TransactionDB* txn_db; Status s = TransactionDB::Open(options, path, &txn_db);
Transaction* txn = txn_db->BeginTransaction(write_options, txn_options); s = txn->Put(“key”, “value”); s = txn->Delete(“key2”); s = txn->Merge(“key3”, “value”); s = txn->Commit(); delete txn;