FAQ: Where Are Set and Bin Names Stored in In-Memory Namespaces?
In the Capacity Planning Guide, the section on Data Storage Size explicity includes the bytes occupied by the set name in each record and the bin name in each bin. However, the section on Memory Required for Data-in-Memory does not include any allocation for these strings. Is this an error? If not, where does this information get stored?
While the Aerospike server process (asd) is running, the set and bin names are stored in tables in process memory and internally referred to by indexes into those tables (which is why there are limits on the total number of different set names and bin names per namespace). These names are also stored in the records on disk so that the tables can be rebuilt after a cold start, but that is not a consideration for in-memory namespaces, so records in memory only contain the indices, which are included in the per-record and per-bin overhead.
As of version 5.4, the related limits are
- 1023 set names per namespace (10 bits)
- 65,535 bin names per namespace (16 bits)
- 32,767 bins per record
- 63 ASCII characters per set name
- 15 ASCII characters per bin name
Please see the Known Limitations page as these may change.
IN-MEMORY INMEMORY DISK STORAGE COLD START MEMORY SET BIN NAME