A comparison in http://symas.com/mdb/  encouraged me to write about LMDB situation within NoSQl databases. LMDB is a key/value NoSQL data base 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 files 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 process or 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 for multiple platforms and OS's such as Linux, Mac OS and windows (I've just heard about this one and haven't tested yet). LMDB is one 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!

Tags: NoSQl