Всегда ли содержимое LMDB хранится ОБА на диске И в памяти?
Я хочу использовать ржавую реализацию LMDB, но я не могу найти, будет ли она всегда поддерживать копию того, что находится в памяти, также на диске и наоборот. Я полагаю, что в БД будет некоторый кеш, и любые переполнения будут записаны на диск, но, поскольку я не могу найти его в документации, я не уверен.
В другом случае LMDB отображает свое содержимое на диске в память, и это будет работать для небольших количеств, но не для того, что я имею в виду.
Кто-нибудь знает, как работает LMDB в этом отношении?
2 ответа
Кто-нибудь знает, как работает LMDB в этом отношении?
Если вы беспокоитесь о том, что не сможете работать с набором данных, который не помещается в памяти, все в порядке — LMDB справится с этим. Ваш набор данных не ограничен размером оперативной памяти.
LMDB отображается в памяти, что является методом, который позволяет разработчикам читать/записывать данные на диск «как» в памяти — ОС выполняет всю необходимую тяжелую работу.
LMDB всегда хранится ОБА на диске И в памяти?
Весь набор данных находится на диске. Некоторые его части остались в памяти. Когда нужны части, которых нет в памяти - ОС извлекает их с диска и отдает приложению, помещая в память процесса
В другом случае LMDB сопоставляет свое содержимое на диске с памятью, и это будет работать для небольших количеств, но не для того, что я имею в виду.
Да, это так.
Я читал, что RocksDB поддерживает использование, которое вы ищете, предлагая аналогичные гарантии.
Небольшие количества зависят от доступной оперативной памяти. Основные поставщики, включая mongodb с бэкэндом wiredtiger, но не только, также приходит на ум postgresql, который настоятельно рекомендует иметь столько памяти, сколько рабочий набор данных .
Наоборот, вы можете найти системы баз данных, такие как полнотекстовый поисковый движок rust, использующие холодное (автономное?) хранилище объектов.