Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

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

Происхождение [ править ]

Berkeley DB возникла в Калифорнийском университете в Беркли как часть BSD , версии операционной системы Unix для Беркли . После 4.3BSD (1986) разработчики BSD попытались удалить или заменить весь код, происходящий из оригинальной AT&T Unix, от которой была получена BSD. При этом им нужно было переписать пакет базы данных Unix. [6] Зельцер и Йигит [7] создали новую базу данных, не обремененную никакими патентами AT&T: хеш-таблицу на диске, которая превосходила существующие библиотеки dbm . Сама Berkeley DB была впервые выпущена в 1991 году и позже была включена в 4.4BSD. [6] В 1996 году Netscapeпопросил авторов Berkeley DB улучшить и расширить библиотеку до версии 1.86, чтобы она соответствовала требованиям Netscape для сервера LDAP [8] и для использования в браузере 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 по соображениям совместимости; [9] [ сомнительно ] Операционные системы на базе Linux обычно включают в себя несколько версий для приложений, все еще использующих старые интерфейсы / файлы.

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

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

Архитектура [ править ]

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

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

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

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

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

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

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

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

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

Лицензирование [ править ]

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

  1. Коммерческая лицензия Oracle с профессиональной поддержкой [22]
  2. Лицензия с открытым исходным кодом
    • Berkeley DB и Berkeley DB XML
      • V2.0 - V6.0.19 под лицензией Sleepycat License
      • V6.0.20 и новее находится под лицензией GNU AGPL v3 . [23]

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

См. Также [ править ]

  • База данных с отображением памяти Lightning

Ссылки [ править ]

  1. ^ "Загрузки Oracle Berkeley DB" . Проверено 27 сентября 2020 года .
  2. ^ Справочное руководство Berkeley DB: чем не является Berkeley DB? . Doc.gnu-darwin.org (31 мая 2001 г.). Проверено 18 сентября 2013.
  3. ^ http://doc.gnu-darwin.org/am_misc/dbsizes.html Справочное руководство Berkeley DB: ограничения базы данных Дата обращения 19 сентября 2013 г.
  4. ^ «Основной выпуск: Berkeley DB 12gR1 (12.1.6.0)» . Проекты с открытым исходным кодом в Oracle . 2013-06-10. Архивировано 5 декабря 2013 года . Проверено 11 апреля 2021 .
  5. ^ Натан, Уиллис (2013-07-10). «Debian, Berkeley DB и AGPLv3» . Еженедельные новости Linux .
  6. ^ a b Олсон, Майкл А .; Бостик, Кейт; Зельцер, Марго (1999). "Беркли ДБ" (PDF) . Proc. FREENIX Track, Ежегодный технический журнал USENIX. Конф . Проверено 20 октября 2009 года .
  7. ^ Зельцер, Марго; Йигит, Озан (1991). «Новый пакет хеширования для UNIX» . Proc. USENIX Winter Tech. Конф . Проверено 20 октября 2009 года .
  8. Брунелли, Марк (28 марта 2005 г.). "Праймер Berkeley DB" . Новости Enterprise Linux . Проверено 28 декабря 2008 года .
  9. ^ "db (3)" . Проверено 12 апреля 2009 года .
  10. ^ [Объявление Berkeley DB] Основной выпуск: Berkeley DB 12gR1 (12.1.6.0) . Проверено 5 июля 2013 г. (Несмотря на то, что AGPL упоминает там, в исходном архиве все еще декларируются условия BSD-4-Clause в 6.0.19.)
  11. ^ Снимок исходного кода 6.0.19 в то время
  12. ^ "Лицензия Sleepycat" . Инициатива открытого исходного кода . 31 октября 2006 . Проверено 28 декабря 2008 года .
  13. ^ «Лицензии» . Фонд свободного программного обеспечения . 10 декабря, 2008. Архивировано из оригинала 16 декабря 2008 года . Проверено 28 декабря 2008 года .
  14. ^ «Совместимость с историческими интерфейсами UNIX» . docs.oracle.com . Проверено 20 ноября 2019 .
  15. ^ "Twitter / Грегори Берд: @humanications Мы не ..."
  16. ^ "Официальный FAQ Berkeley DB" . Корпорация Oracle . Проверено 30 марта 2010 года . Поддерживает ли Berkeley DB PL / SQL?
  17. ^ Oracle Berkeley DB Downloads: Последние производственные выпуски
  18. ^ "Oracle Berkeley DB Java Edition" .
  19. ^ "Беркли DB XML" .
  20. ^ Примечания к выпуску Биткойн 0.8.0 2013
  21. ^ "bogofilter - Быстрый байесовский фильтр спама / Код (Git) / [93b68e] / bogofilter / README" . sourceforge.net . Проверено 17 июля 2020 .
  22. ^ «Информация для скачивания, лицензии и продаж» . 30 ноя 2017.
  23. ^ «Основной выпуск: Berkeley DB 12gR1 (12.1.6.0)» . 10 июня 2013 . Проверено 15 июля 2013 года .
  24. ^ Ондржей Сури (19 июня 2014). «Новая цель проекта: избавиться от Berkeley DB (пост Джесси)» . debian-devel (список рассылки). Debian .

Внешние ссылки [ править ]

  • Oracle Berkeley DB
  • Oracle Berkeley DB Загрузки
  • Документация Oracle Berkeley DB
  • Информация о лицензировании Oracle Berkeley DB
  • Подводные камни лицензирования для технологических продуктов Oracle
  • Сеть знаний о лицензировании Oracle
  • Книга Беркли DB Химаншу Ядава
  • Launchpad.net  - Berkeley DB на Launchpad