2012-01-04 3 views
1

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

ответ

2

От here:

Согласно Беркли FAQ есть два способа его оптимизации (до сжатия):

  1. Compact
  2. Вакуумный

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

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

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

+0

После долгого боя.Теперь я убежден, что сжатие не улучшает производительность. Теперь я отказался от всей идеи сжатия и думал о внедрении оптимизации на уровне аппаратного обеспечения, таком как RAID. – Madusudanan

+1

Но, по крайней мере, вы сохраняете диск? – skan

Смежные вопросы