Беркли DB - Berkeley DB

Berkeley DB
Оригинальный автор (ы) Марго Зельцер и Кейт Бостик из Sleepycat Software
Разработчики) Sleepycat Software , позже Oracle Corporation
Первый выпуск 1994 ; 27 лет назад ( 1994 )
Стабильный выпуск
18.1.40 / 29 мая 2020 г . ;
16 месяцев назад
 ( 2020-05-29 )
Написано в C
Операционная система Windows , Unix-подобный
Размер ~ 1244 КБ скомпилировано в Windows x86
Тип Встроенная база данных , база данных NoSQL
Лицензия Двойная лицензия ( Стандартная общественная лицензия GNU Affero и коммерческая (версия 6.x и выше)
лицензия Sleepycat (версии 2.0-5.x)
Лицензия BSD с 4 пунктами (версии 1.x)
Веб-сайт www .oracle .com / database / berkeley-db /

Berkeley DB ( BDB ) - это программная библиотека, предназначенная для обеспечения высокопроизводительной встроенной базы данных для данных типа " ключ-значение" . Berkeley DB написана на C с привязками API для C ++ , C # , Java , Perl , PHP , Python , Ruby , Smalltalk , Tcl и многих других языков программирования . BDB хранит произвольные пары ключ / данные в виде массивов байтов и поддерживает несколько элементов данных для одного ключа. Berkeley DB не является реляционной базой данных , хотя она имеет расширенные функции базы данных, включая транзакции базы данных , управление многоверсионным параллелизмом и ведение журнала с упреждающей записью .

BDB может поддерживать тысячи одновременных потоков управления или параллельных процессов управления базами данных как 256 терабайт, на самых разнообразных операционных систем , в том числе большинства Unix-подобных и Windows , систем и операционных систем реального времени .

BDB коммерчески поддерживалась и разрабатывалась Sleepycat Software с 1996 по 2006 год. Sleepycat Software была приобретена корпорацией Oracle в феврале 2006 года, которая продолжает разрабатывать и продавать библиотеку C Berkeley DB. В 2013 году Oracle повторно лицензировала BDB по лицензии AGPL . По состоянию на 2020 год Bloomberg LP продолжает разрабатывать форк BDB в своей базе данных Comdb2 под исходной разрешительной лицензией Sleepycat .

Источник

Berkeley DB возникла в Калифорнийском университете в Беркли как часть BSD , версии операционной системы Unix для Беркли . После 4.3BSD (1986) разработчики BSD попытались удалить или заменить весь код, происходящий из оригинальной AT&T Unix, от которой была получена BSD. При этом им пришлось переписать пакет базы данных Unix. Зельцер и Йигит создали новую базу данных, не обремененную никакими патентами AT&T: хеш-таблицу на диске, которая превосходит по производительности существующие библиотеки dbm . Сама Berkeley DB была впервые выпущена в 1991 году и позже была включена в 4.4BSD. В 1996 году Netscape обратилась к авторам Berkeley DB с просьбой улучшить и расширить библиотеку до версии 1.86, чтобы она соответствовала требованиям Netscape для сервера LDAP и для использования в браузере Netscape . Этот запрос привел к созданию Sleepycat Software . В феврале 2006 года эта компания была приобретена корпорацией Oracle Corporation , которая продолжает разрабатывать и продавать Berkeley DB.

С момента своего первого выпуска Berkeley DB прошла через различные версии. Каждый основной цикл выпуска вводил одну новую основную функцию, которая, как правило, накладывалась на более ранние функции, чтобы добавить функциональность к продукту. Релизы 1.x ориентированы на управление хранением данных типа «ключ / значение» и называются «хранилищем данных» (DS). В выпусках 2.x добавлена ​​система блокировки, обеспечивающая одновременный доступ к данным. Это то, что известно как «параллельное хранилище данных» (CDS). В выпусках 3.x добавлена ​​система регистрации транзакций и восстановления, которая называется «Хранилище транзакционных данных» (TDS). В выпусках 4.x добавлена ​​возможность репликации записей журнала и создания распределенной высокодоступной базы данных с одним главным и несколькими репликами. Это называется набором функций «Высокая доступность» (HA). Развитие Berkeley DB иногда приводило к незначительным изменениям API или форматов журналов, но очень редко меняли форматы баз данных. Berkeley DB HA поддерживает онлайн-обновления от одной версии к другой, сохраняя возможность чтения и применения записей журнала предыдущего выпуска.

В FreeBSD и OpenBSD операционные системы продолжают использовать Berkeley DB 1.8x по соображениям совместимости; Операционные системы на базе Linux обычно включают несколько версий для приложений, все еще использующих старые интерфейсы / файлы.

Начиная с версии 6.0.21 (Oracle 12c), все продукты Berkeley DB лицензируются в соответствии с GNU AGPL . Ранее Berkeley DB распространялась под лицензией BSD с четырьмя пунктами (до версии 2.0) и общественной лицензией Sleepycat, которая является одобренной OSI лицензией с открытым исходным кодом, а также лицензией свободного программного обеспечения, одобренной FSF . Продукт поставляется с полным исходным кодом, сценарием сборки, набором тестов и документацией. Комплексная функция вместе с условиями лицензирования привели к ее использованию во множестве бесплатного программного обеспечения с открытым исходным кодом . Те, кто не желает соблюдать условия GNU AGPL или использовать старую версию с общественной лицензией Sleepycat, имеют возможность приобрести другую частную лицензию для распространения у Oracle Corporation . Этот метод называется двойным лицензированием .

Berkeley DB включает интерфейсы совместимости с некоторыми историческими библиотеками баз данных Unix: dbm , ndbm и hsearch ( библиотека System V и POSIX для создания хеш-таблиц в памяти ).

Архитектура

Berkeley DB имеет архитектуру заметно проще, чем у других систем баз данных, таких как системы управления реляционными базами данных . Например, как и SQLite , он не основан на модели сервер / клиент и не обеспечивает поддержку сетевого доступа - программы обращаются к базе данных с помощью внутрипроцессных вызовов API . Oracle добавила поддержку SQL в выпуске 11g R2 на основе популярного API SQLite, включив версию SQLite в Berkeley DB (для хранения используется Berkeley DB). Существует сторонняя поддержка PL / SQL в Berkeley DB через коммерческий продукт Metatranz StepSqlite .

Программа, обращающаяся к базе данных, может решить, как данные должны быть сохранены в записи. Berkeley DB не накладывает ограничений на данные записи. И запись, и ее ключ могут иметь длину до четырех гигабайт.

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

Корпорация Oracle использует название "Berkeley DB"

Название «Berkeley DB» используется корпорацией Oracle для трех различных продуктов, два из которых не являются BDB:

  1. Berkeley DB, библиотека базы данных C, о которой идет речь в этой статье.
  2. Berkeley DB Java Edition, чистая библиотека Java, дизайн которой смоделирован по образцу библиотеки C, но в остальном не связан
  3. Berkeley DB XML, программа на C ++, которая поддерживает XQuery и включает устаревшую версию библиотеки базы данных C

Программы, использующие Berkeley DB

Berkeley DB предоставляет базовую систему хранения и поиска для нескольких серверов LDAP , систем баз данных и многих других проприетарных и бесплатных приложений с открытым исходным кодом. Известные программы, использующие Berkeley DB для хранения данных, включают:

  • Bitcoin Core - первая реализация криптовалюты Bitcoin сохраняет использование Berkeley DB 4.8 2009 года для одной функции.
  • Bogofilter - бесплатный спам- фильтр с открытым исходным кодом, который по умолчанию сохраняет свои списки слов, используя Berkeley DB.
  • Citadel - бесплатная платформа для групповой работы с открытым исходным кодом, которая хранит все свои хранилища данных, включая базу сообщений, в Berkeley DB. Citadel находится под лицензией GPLv3, которая совместима с лицензированием Oracle BDB.
  • Sendmail - популярный MTA для систем Linux / Unix
  • Spamassassin - приложение для защиты от спама.

Лицензирование

Berkeley DB V2.0 и выше доступен по двойной лицензии :

  1. Коммерческая лицензия Oracle с профессиональной поддержкой
  2. Лицензия с открытым исходным кодом

Переход на AGPL привел к тому, что основные дистрибутивы Linux, такие как Debian, полностью отказались от использования Berkeley DB, отдав предпочтение Lightning Memory-Mapped Database (LMDB). Обоснование этого состоит в том, что использование кода AGPL коммерческими пользователями было бы неприемлемым, так как они были бы вынуждены предоставлять пользователям свой исходный код путем простого обновления программного обеспечения.

использованная литература

внешние ссылки