Ehsan Ghanbari

Experience, DotNet, Solutions

A quick look at LMDB situation in NoSQL world

A comparison in  encouraged me to write about LMDB situation within NoSQL databases. LMDB is a key/value NoSQL database and this is A comparison of popular NoSQL databases.




There is another comparison in here if you are interested in to read more. One of the great features of LMDB is that it's a memory-mapped file like LevelDB (I think so!) and it makes the reading performance more and more. If you refer the above link I mentioned, you can see the complete list of LMDB Capabilities:

  1. Ordered-map interface (keys are always sorted, supports range lookups)
  2. Fully transactional, full ACID semantics with MVCC.
  3. Reader/writer transactions: readers don't block writers and writers don't block readers. Writers are fully serialized, so writes are always deadlock-free.
  4. Read transactions are extremely cheap and can be performed using no mallocs or any other blocking calls.
  5. Supports multi-thread and multi-process concurrency, environments may be opened by multiple processes on the same host.
  6. Multiple sub-databases may be created with transactions covering all sub-databases.
  7. Memory-mapped, allowing for zero-copy lookup and iteration.
  8. Maintenance-free, no external processor background cleanup/compaction required.
  9. No application-level caching. LMDB fully exploits the operating system's buffer cache.
  10. 32KB of object code and 6KLOC of C.
  11. Licensed under the OpenLDAP Public License

LMDB also supports multiple platforms and OS such as Linux, Mac OS, and windows (I've just heard about this one and haven't tested yet). LMDB is one of the fastest databases because it is in-process and runs just like other apps in the memory. I've not enough experience about working with key/value NoSQL databases but it seems that all of the above claims are true!

About Me

Ehsan Ghanbari

Hi! my name is Ehsan. I'm a developer, passionate technologist, and fan of clean code. I'm interested in enterprise and large-scale applications architecture and design patterns and I'm spending a lot of my time on architecture subject. Since 2008, I've been as a developer for companies and organizations and I've been focusing on Microsoft ecosystem all the time. During the&nb Read More

Post Tags
Pending Blog Posts
Strategic design
Factory Pattern
time out pattern in ajax
Selectors in Jquery
Peridic pattern
How to use PagedList In MVC
Redis as a cache server
Domain driven design VS model driven architecture
How to query over Icollection<> of a type with linq
What's the DDD-lite?
comments powered by Disqus