LDT inline/outline storage


Assume there are already 2 sub-records in a LDT lmap record (root-record), Then I put a 3rd sub-record.

Will Aerospike completely remove the previous LDT record (with 2 sub-records) and add a new LDT record to contain with those 3 sub-records (as inline data)? Or put the 3rd sub-record somewhere (as outline data) and link it to the LDT root-record?


Hi Hanson, The current LMAP design is a static Hash Directory that lives in the Top Record. That hash directory contains hash cells that can contain either a (configurable) small number of data objects or a pointer to a sub-record that contains the data objects. The Hash Directory size is configurable.

So, in the current design, it is never the case that we replace multiple sub-records with a single sub-record. Each sub-record aligns to a hash cell. Also, the user does not have direct control over the sub-records. They are employed by the LSET/LMAP code and are used as needed. The user has control ONLY over how many data objects are added or removed.

And, just FYI … We will soon be adding a dynamic hash table option (that uses the Linear Hashing Algorithm) that will grow gracefully as the size of the data collection grows. In that case, where the hash table grows and shrinks, we may find that we not only split sub-records during growth, but also coalesce sub-records as the hash table shrinks.


Thanks toby, it’s clear.



Thank you for posting about LDTs in our forum. Please see the LDT Feature Guide for current LDT recommendations and best practices.



Effective immediately, we will no longer actively support the LDT feature and will eventually remove the API. The exact deprecation and removal timeline will depend on customer and community requirements. Instead of LDTs, we advise that you use our newer List and SortedMap APIs, which are now available in all Aerospike-supported clients at the General Availability level. Read our blog post for details.