Xodus: есть максимальная длина ключа и / или значения? - PullRequest
0 голосов
/ 09 ноября 2018

Существует ли максимальная длина ключа и / или значения ByteIterable в Xodus? Если существует жесткий предел, что это за предел (то есть, сколько байтов)? И что будет, если ByteIterable превысит этот предел?

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

Xodus - это база данных с лог-структурой, все изменения записываются последовательно в журнал, представляющий собой бесконечную последовательность файлов .xd. На самом низком уровне любая пара ключ / значение записывается как одна запись, которая может существовать только в одном файле .xd. Это означает, что сумма размеров ключа и значения не может превышать размер одного файла .xd. Более того, не стоит хранить пары ключ / значение размером, близким к размеру одного файла .xd, поскольку это создаст базу данных с большим количеством неподвижного (с помощью сборщика мусора базы данных) свободного пространства. Попытка записать слишком большую пару ключ / значение потерпит неудачу с TooBigLoggableException брошенным.

Размер отдельного файла .xd регулируется настройкой EnvironmentConfig.LOG_FILE_SIZE. По умолчанию это 8388608 байт (0x800000, 8 МБ), поэтому ответ на вопрос похож на максимальную длину ключа, а значение равно 8388608 (0x800000) байт.

Для работы с данными произвольного размера используйте Виртуальные файловые системы .

0 голосов
/ 09 ноября 2018

Похоже, что должно быть Integer.MAX_VALUE. Будет искать его дальше и предоставлять обновления.

...