Berkeley DB (BDB) – высокопроизводительная встраиваемая система управления базами данных, реализованная в виде библиотеки. Berkeley DB является нереляционной базой данных – она хранит пары «ключ – значение» как массивы байтов и поддерживает множество значений для одного ключа.
Berkeley DB может обслуживать тысячи процессов или потоков, одновременно манипулирующих базами данных размером в 256 Тб, на разнообразном оборудовании под различными операционными системами, включая большинство UNIX-подобных систем и Microsoft Windows, а также на операционных системах реального времени.
Berkeley DB примечательна своей простой архитектурой в сравнении с другими системами баз данных, такими как, например Microsoft SQL Server и Oracle Database. Например, в ней отсутствует сетевой доступ – программы используют базу данных через вызовы внутрипроцессного API. Она поддерживает SQL в качестве одного из интерфейсов, начиная с версии 5.0, хотя и не поддерживает столбцы в таблицах в традиционном понимании на уровне внутренней архитектуры. Berkeley DB предполагает работу с парами ключ-значение, где ключ и значение могут иметь фиксированную или переменную длину, а функция сравнения ключей может быть написана и назначена прикладным программистом. Программа, которая использует базу данных, сама решает, как данные сохраняются в записи; база данных не налагает ограничений на данные, хранимые в записях. Запись и её ключ оба могут иметь размер до 4 Гб.
Berkeley DB поддерживает необходимые возможности баз данных, такие как ACID-транзакции, детальные блокировки, интерфейс распределённых транзакций XA, “горячее” резервное копирование и репликацию. Berkeley DB может использоваться как средство для построения хранимых индексов, так и в качестве хранилища данных.
Oracle предлагает Berkeley DB в трёх вариантах:
- Berkeley DB – собственно библиотека на языке «C»;
- Berkeley DB Java – библиотека, переписанная на Java (поддержка Google Android, Apache Maven);
- Berkeley DB XML – библиотека на Си, реализующая XML-СУБД на основе Berkeley DB со средствами работы с XML (Xerces, XPath, XQuery, XQilla).
Berkeley DB входит в состав большинства дистрибутивов Linux. Существуют средства для работы с Berkeley DB на языках Perl, Python и других.
Первая версия Berkeley DB была разработана в Университете Беркли во время разработки BSD версии 4.3 (июнь 1986 года). Netscape попросила авторов Berkeley DB улучшить и расширить библиотеку – в то время версию 1.85, – чтобы она удовлетворяла их требованиям к использованию в сервере LDAP и в браузере Netscape. Этот запрос привёл к созданию Sleepycat Software (купленной корпорацией Oracle в феврале 2006 года).
Berkeley DB распространяется под лицензией Sleepycat Public License, которая была одобрена OSI и FSF. Программа поставляется с полным исходным кодом, средствами сборки, инструментами тестирования и документацией. Качество кода и практичность вместе со свободной лицензией привело к использованию Berkeley DB во многих свободных и открытых программах. В рамках техники двойного лицензирования Oracle также распространяет проприетарную лицензию на использование библиотеки в закрытых проектах.
Программы, в которых используется Berkeley DB
Berkeley DB является хранилищем данных для серверов LDAP, СУБД и множества других собственнических и свободных программ. Ниже приведён список программ, в которых для хранения данных используется Berkeley DB:
Изначально именно под нужды FDS (тогда сервер назывался Netscape Directory Server) была адаптирована академическая версия BerkeleyDB.
В версиях для KDE Software Compilation 4 не используется.
BerkeleyDB обеспечивает транзакционный обработчик таблиц для MySQL. Использование BerkeleyDB повышает для таблиц шансы уцелеть после сбоев, а также предоставляет возможность осуществлять операции COMMIT и ROLLBACK для транзакций. Дистрибутив исходного кода MySQL поставляется с дистрибутивом BDB, содержащим несколько небольших исправлений, которые позволяют устранить определённые проблемы при работе с MySQL. Начиная с версии 5.1 таблицы BDB более не поддерживаются.
Может использовать Berkeley DB для постоянного хранения данных (троек).
Самый популярный планировщик пакетных очередей задач для вычислительных ферм.
Ссылки