Как добавить поддержку сжатия в LMDB?

#database #leveldb #lmdb

#База данных #leveldb #lmdb

Вопрос:

По умолчанию LMDB не поддерживает сжатие. Единственные минусы. с LMDB это занимает много места на диске по сравнению с leveldb.

Так есть ли у них какой-либо способ уменьшить размер базы данных LMDB любыми методами сжатия?

Например, добавление библиотеки быстрого сжатия (leveldb имеет встроенную поддержку быстрого сжатия)

Ответ №1:

У вас есть два варианта:

  • Сжимайте значения с помощью любой библиотеки, которая вам подходит (например, snappy). Это означает, что вы всегда считываете полное значение (вам не всегда нужно это делать, потому что значение указывает на карту памяти). Очевидно, что это помогает только в том случае, если ваши значения выигрывают от сжатия.
  • Сожмите файл базы данных с помощью любой библиотеки, которая вам подходит. Я полагаю, что это может быть допустимым подходом, если у вас есть базы данных, к которым редко обращаются, и вы можете позволить себе сначала распаковать, прежде чем обращаться к чему-либо, что, вероятно, не подходит для большинства случаев использования.

К сожалению, lmdb не поддерживает сжатие, т.Е. это внутренние страницы, которые предлагали бы различные компромиссы, которые мы не можем получить сейчас без изменения самой lmdb. Довольно хороший обзор этого можно найти здесь: https://banksco.de/p/lmdb-the-leveldb-killer.html