Valerii Hiora wrote:
Hi Howard,
I have a couple of questions regarding LMDB.
In the future, please send questions to the openldap-technical mailing list.
- MDB_INTEGERKEY
Setting this option requires all keys to be the same size, typically sizeof(int) or sizeof(size_t)
It is unclear from this description if size of the key depends on arch or the only requirement is to have all keys to have same size. Is it possible use i64 keys independent of arch?
The documentation is precise - if the actual word size mattered, we would say so. You can use 64 bit integers on any arch. You could use 16 bit or 128 bit as well, it makes no difference.
- MDB_DUPSORT - how is it organized internally, i.e. which are
penalties of having big number of items for one key. And how cheap/expensive is cursor count operation for a key?
This is already documented - the values of a dupsort key are their own sub-database. Cursor count just returns md_entries of the subDB.
- Multiple databases
Currently a moderate number of slots are cheap but a huge number gets expensive: 7-120 words per transaction, and every mdb_dbi_open() does a linear search of the opened slots.
So if the space isn't a problem and mdb_dbi_open() is called only once and returned handle is kept - are there any other penalties for multiple dbs? Can you also specify "moderate number of slots" to have a better understanding?
You should understand "moderate" as it applies to your own situation. We state quite clearly it does a linear search - you can see how the cost adds up. There are no costs other than those we have documented.