What would be the performance difference (reads/writes) between some C++ implementation of in-memory B-Tree (for example google btree) and the LMDB (without taking into consideration all the feacures of LMDB such as transactions, isolation, shared access etc.)?
相关问题
- Merge two LMDB databases for feeding to the networ
- Error in creating LMDB database file in Python for
- Is it possible to run caffe models on the data-set
- Write jpeg file directly to lmdb [closed]
- Creating large LMDBs for Caffe with numpy arrays
相关文章
- Error in creating LMDB database file in Python for
- Is it possible to run caffe models on the data-set
- Write jpeg file directly to lmdb [closed]
- Creating large LMDBs for Caffe with numpy arrays
- Compressing LMDB files
- Count number of records in lmdb databse with pytho
- What is special about internal design of LMDB?
- 一个指南convert_imageset.cpp一个指南convert_imageset.cpp(A
This 2014 lmdb design presentation by its architect Howard Chu covers the design and tradeoffs of
lmdb
.To summarize:
lmdb
is a copy-on-write, bottom-up updated, double-buffered, b-tree where the implementation always favors simplicity whenever it clashes with other considerations.The smart design choices make it one of the highest performance and corruption-resistant B-tree implementations out there.
lmdb
relies on the underlying OS for cachingObviously, these choices mean that
lmdb
is not friendly to complex scenarios such as:lmdb
favors simpler multiple readers and single writer schemesThere's much more in the full (over 100 pages) presentation. The above is just a summary of the spirit of
lmdb
.lmdb
is used as the core storage engine in prominent open source projects such as Open LDAP and Memcached and in both cases speed-ups of orders of magnitude have been observed compared to alternatives as can be seen in micro-benchmark results.