Сцилла описывает одну реализацию в своих документах . (У меня нет никакой связи со Сциллой. Мне просто это пригодилось.) Они хранят длину ключа для записей индекса (не совсем то, что вы ищете) в их структуре index_entry
.
struct index_file {
struct index_entry entries[];
};
struct index_entry {
be16 key_length;
char key[key_length];
varint position; // decoded into a 64-bit integer
varint promoted_index_length; // decoded into a 32-bit integer
byte promoted_index[promoted_index_length];
};
Если ваша реализация поддерживает ключи различной длины - как я думаю, что все внедрения SSTable коммерческого уровня - это обычно для хранения их длины. В общем, программное обеспечение, которое хранит «вещи» различной длины, использует структуру данных, которая включает в себя длину «вещи». (Сцилла, вероятно, использует итератор Java.)