Berkeley DB Сжатие файлов - PullRequest
       27

Berkeley DB Сжатие файлов

2 голосов
/ 04 января 2012

Это в сочетании с моим предыдущим вопросом Нажмите здесь . Мы используем Berkeley DB для временного хранения до того, как она будет обработана и сохранена в реляционной БД. Проблема возникает, когда размер увеличивается выше определенной точки. Теперь нам нужно либо разбить файлы на более мелкие, либо сжать существующие файлы. Вопрос, который я хочу задать части сжатия: есть ли в Berkeley DB какая-либо встроенная утилита сжатия, или мы должны делать это программно. Если она встроена, то она всегда будет быстрее.

1 Ответ

2 голосов
/ 18 апреля 2012

С здесь :

В соответствии с часто задаваемыми вопросами Berkeley есть два способа его оптимизации (до сжатия):

  1. Компактный
  2. Вакуум

Вы также можете реализовать свой собственный алгоритм сжатия, как показано здесь .

Насколько Бакли DB DB VACUUM отличается от SQLite?

SQLite реализует команду VACUUM как дамп базы данных, за которым следует полная перезагрузка из этой свалки. Это дорогая операция, блокировка вся база данных на время операции. Это также все или ничего операция. Либо это работает, либо не получается, и вы должны попробуйте еще раз когда-нибудь. Когда SQLite заканчивается, база данных часто меньше по размеру (размер файла меньше) и btree лучше организовано (меньше), чем раньше, из-за вставки данные из файла дампа. SQLite, когда это работает и когда вы можете себе позволить Блокировка всех из базы данных, делает хорошую работу VACUUM. Беркли Д.Б. подходит к этому совершенно по-другому. Для многих выпускает теперь реализацию B-Tree Беркли DB имеет возможность компактировать, пока другие варианты находятся в полете. Сжатие является процесс, в котором проверяются узлы B-Tree и, когда меньше оптимально, они реорганизованы (обратное разбиение и т. д.). Более мелкий ваш B-Tree, меньше запросов, необходимых для поиска данных на листе узел. Berkeley DB может компактировать разделы дерева или всего дерева однажды. Для работы 7x24x365 (пять девяток) это критично. БДБ версия Compact не окажет негативного влияния на текущие операции с базой данных в то время как подход SQLite делает. Но уплотнение не обращается пустым разделы базы данных (сегменты файла базы данных, где удалены данные когда-то жили). Berkeley DB также поддерживает сжатие базы данных файлы, перемещая данные в файле, а затем обрезая файл возвращая это пространство в файловую систему. Начиная с выпуска 5.1 Беркли DB, команда VACUUM сжимает и сжимает файл (ы) базы данных. Эта операция занимает больше времени, чем дамп / загрузка в SQLite потому что он делает больше работы, чтобы база данных оставалась в рабочем состоянии. Мы считаем, что это правильный компромисс, но если вы не согласен, вы всегда можете сбросить / загрузить базу данных в коде.

...