-
Although, there is a lot of valuable information in the README. It was not very clear to me how lmdb-store is adding value compared to node-lmdb. Does adding a summary list of features make sense? Features
As a user of lmdb-store, how much understanding of node-lmdb is required? Is MessagePack added by lmdb-store? These are the few questions I'm wondering. |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 1 reply
-
The most simplified distinction would be that node-lmdb is a low-level interface designed to directly expose the LMDB API functions, whereas lmdb-store is designed to provide a higher level interface for more efficient and idiomatic JS interaction. However, lmdb-store isn't really built "on top off" node-lmdb, since many/most of the improvements that lmdb-store makes actually involve extending/modifying the C++ code, for example adding the ability to coordinate batches of operations and commit (and compress) them in a separate thread, and perform multi-threaded coordination of asynchronous transactions, which is mostly done in C++. lmdb-store is written as a "branch" or fork of node-lmdb, building from the node-lmdb C++ code. Basically the whole set of features listed at the beginning of the readme are features in lmdb-store that aren't available in node-lmdb, are lmdb-store further optimizes:
I also help with maintenance of node-lmdb, but since many of the features needed to really accelerate modern applications require the higher level integrations of lmdb-store, lmdb-store is just getting a lot more dev now. Using lmdb-store shouldn't require any knowledge of node-lmdb. It may be of interest to familiarize yourself with LMDB itself and the LMDB docs provide more information on certain settings/options if you get more into optimizing, but lmdb-store docs are designed to be pretty standalone. And yes, lmdb-store adds integration of MessagePack (again, by internalizing the buffer reuse, it is much faster than returning buffers and having a separate step of deserializing using JSON.parse or anything else). Anyway, hope that helps, let me know if you have any other questions about the differences. |
Beta Was this translation helpful? Give feedback.
The most simplified distinction would be that node-lmdb is a low-level interface designed to directly expose the LMDB API functions, whereas lmdb-store is designed to provide a higher level interface for more efficient and idiomatic JS interaction. However, lmdb-store isn't really built "on top off" node-lmdb, since many/most of the improvements that lmdb-store makes actually involve extending/modifying the C++ code, for example adding the ability to coordinate batches of operations and commit (and compress) them in a separate thread, and perform multi-threaded coordination of asynchronous transactions, which is mostly done in C++. lmdb-store is written as a "branch" or fork of node-lmdb,…