Berkeley DB: сравнение префиксов btree для ключей, похожих на каталоги? - PullRequest
1 голос
/ 10 апреля 2010

Я собираюсь проиндексировать BDB с ключами, которые во многом похожи на пути к каталогам ('/ foo / bar', '/ foo / baz' и т. Д., С уровнями слешей, как правило, <10). </p>

Есть ли у кого-нибудь опыт использования для этого процедуры сравнения префиксов Btree [1]? Стоит ли экономить? Любые ссылки на опыт работы на эту тему?

[1] http://www.stanford.edu/class/cs276a/projects/docs/berkeleydb/ref/am_conf/bt_prefix.html

1 Ответ

1 голос
/ 21 апреля 2011

Возможно, вы захотите опубликовать свой вопрос на форуме Berkeley DB по OTN здесь . Существует активное сообщество разработчиков поддержки, разработки и приложений BDB, которые непосредственно взаимодействуют на этом форуме.

Что я слышал от заказчиков и наше собственное использование префикса Btree в продукте BDB XML, так это то, что он может значительно уменьшить размер внутренних узлов btree, а также повысить эффективность кэша, сократить объем операций ввода-вывода и тем самым повышение эффективности поиска отдельных ключей. Об этом также говорится в документации о префиксной функции btree, расположенной здесь . Степень улучшения производительности зависит от a) ваших данных, b) шаблонов доступа к данным вашего приложения. Если значение ключа в основном идентично, то вы сэкономите больше места в индексе btree. Если ваши шаблоны доступа к данным выполняют много ключевых операций поиска и, имея меньшее дерево, вы сокращаете количество операций ввода-вывода, которые вам необходимо выполнить, производительность будет улучшаться соразмерно.

Обратите внимание, что если вы предоставляете функцию префикса btree, вы также должны предоставить совместимую функцию сравнения btree.

Для BDB XML мы увидели уменьшение размера дерева на 20-30.

Функции сравнения / префикса лексикографических ключей, используемые по умолчанию в Berkeley DB, могут уже обеспечивать требуемое поведение.

Удачи в ваших исследованиях.

...