Я искал изменение типа базы данных Java Edition 4.1.7 BDB от BTree до Hash. В базовой версии были DatabaseType.HASH, DatabaseType.RECNO и DatabaseType.Queue. Не поддерживаются ли они в Java Edition. Если да, то есть причина для их удаления?Невозможно изменить тип базы данных DB Berkeley в Java Edition?
ответ
David Segleau, директор по управлению продуктами для Berkeley DB здесь. Как правило, мы рекомендуем, чтобы люди задавали вопросы по адресу Berkeley DB forums. Там вы найдете большое сообщество активных разработчиков приложений Berkeley DB.
Да, Berkeley DB (исходный продукт на C) имеет методы доступа B-Tree, Hash, Queue и Recno. Berkeley DB Java Edition поддерживает только B-Tree. Основная причина этого заключается в том, что около 99% наших пользователей используют B-Tree для хранения, а Hash используется только небольшим подмножеством приложений.
Некоторые полезные технические пикантные вокруг этой теме:
- Hash является особенно полезным для людей, которые имеют огромный набор данных, и очень небольшое количество доступной кэш-памяти. В этом конкретном сценарии B-Tree может потребовать несколько операций ввода-вывода, чтобы извлекать внутренние страницы индекса (которые не подходят в кеше), а затем извлекать запись. Хэш обычно может обращаться к записи данных с помощью одного ввода-вывода.
- Хеш обычно не рекомендуется, если вы хотите последовательно получить доступ к своим данным или разрешить дубликаты, поскольку в индексе Hash не подразумевается порядок.
- Большинство приложений имеют достаточный доступный кэш памяти для хранения внутренних узлов B-дерева, а также наиболее часто используемых записей данных. В этом гораздо более распространенном сценарии B-tree и Hash будут иметь почти идентичную производительность.
- В течение последнего года команда Berkeley DB Java Edition работала очень тесно с клиентами и разработчиками приложений, использующими очень большие наборы данных (в диапазоне 250 ГБ - низкий уровень ТБ). В частности, они сосредоточили внимание на том, как максимизировать эффективность кеширования, улучшать алгоритмы выселения кеша и минимизировать влияние сбора мусора Java. Мы обнаружили, что BDB JE 4.1 работает намного лучше с точки зрения управления кешем и эффективности, особенно для наборов данных, которые превышают доступный кэш. Для получения дополнительной информации об этом изменении см. Журнал изменений BDB JE 4.1.7 на странице загрузки Berkeley DB.
- Дополнительную информацию о методах доступа Hash vs B-Tree в Berkeley DB см. В главе 2 Справочного руководства BDB (Выбор метода доступа).
Я надеюсь, что это было полезно.
С уважением,
Dave
Я также пытался понять то же самое. Я бы тоже оценил возможность использования Hash в berkeley db je, поскольку я работаю в сценарии (1), поэтому с определенным соотношением между размером памяти и размером набора данных.
Есть варианты на это? вы планируете вернуть это в будущем? Сайт berkeley db je на oracle.com говорит, что время доступа постоянно независимо от размера набора данных. Если вы используете BTrees, это утверждение неверно.
Если вы заинтересованы в использовании Recno, Hash или Queue, лучшим вариантом является использование продукта Berkeley DB через Java API. Berkeley DB Java Edition никогда не поддерживал метод доступа HASH. В настоящее время нет планов добавить его в BDB JE. Прошу прощения, если на сайте есть какой-то текст, вводящий в заблуждение. Очевидно, что время доступа зависит от глубины B-дерева и количества требуемых операций ввода-вывода. Если индекс и данные уже находятся в памяти, глубина B-дерева будет иметь незначительный измеримый эффект. – dsegleau
Эти другие вопросы о продуктах и производительности могут также задаваться на форумах Berkeley DB в OTN. Форум BDB Java Edition можно найти по адресу: http://bit.ly/e1AYFi. – dsegleau
Dave, Как насчет recno? – bmargulies
Recno - это просто btree с цифровым значением ключа. Recno имеет определенные специфические свойства вокруг поведения ключей с логической записью. См. Справочное руководство для получения дополнительной информации здесь: http://bit.ly/f7Kh2P. Как я уже говорил, большинство людей используют B-деревья.Если вы заинтересованы в использовании Recno, Hash или Queue, лучшим вариантом является использование продукта Berkeley DB через Java API. – dsegleau