stringtranslate.com

Беркли ДБ

Berkeley DB ( BDB ) — это встроенная библиотека программного обеспечения баз данных для данных «ключ-значение» , исторически значимая для программного обеспечения с открытым исходным кодом . Berkeley DB написана на языке C с привязкой API ко многим другим языкам программирования . BDB хранит произвольные пары ключ/данные в виде байтовых массивов и поддерживает несколько элементов данных для одного ключа. Berkeley DB не является реляционной базой данных [2] , хотя у нее есть функции базы данных, включая транзакции базы данных , управление многоверсионным параллелизмом и ведение журнала с упреждающей записью . BDB работает в самых разных операционных системах , включая большинство Unix-подобных и Windows- систем, а также операционных систем реального времени .

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

Источник

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

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

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

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

Архитектура

Berkeley DB имеет архитектуру значительно проще, чем системы управления реляционными базами данных . Подобно SQLite и LMDB , он не основан на модели сервер/клиент и не обеспечивает поддержку доступа к сети — программы обращаются к базе данных, используя внутрипроцессные вызовы API . Oracle добавила поддержку SQL в выпуске 11g R2 на основе популярного API SQLite, включив версию SQLite в Berkeley DB (она использует Berkeley DB для хранения). [13]

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

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

Использование корпорацией Oracle названия «Berkeley DB»

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

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

Программы с открытым исходным кодом все еще используют Berkeley DB

BDB когда-то был очень широко распространен, но с 2013 года его использование резко упало (см. раздел лицензирования). Известное программное обеспечение, которое до сих пор использует Berkeley DB для хранения данных, включает:

Операционные системы с открытым исходным кодом и такие языки, как Perl и Python, по-прежнему поддерживают старые интерфейсы BerkelyDB. Операционные системы FreeBSD и OpenBSD поставляются с Berkeley DB 1.8x для поддержки вызова операционной системы dbopen() [18] [19] , используемого программами паролей, такими как . [20] Операционные системы Linux, в том числе основанные на Debian [21] и Fedora [22], поставляются с библиотеками Berkeley DB 5.3.pwb_mkdb

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

Berkeley DB версии 2.0 и выше доступна по двойной лицензии :

  1. Коммерческая лицензия Oracle [23]
  2. GNU AGPL v3 . [24]

Переход с лицензии с открытым исходным кодом в 2013 году с лицензии Sleepycat на AGPL оказал серьезное влияние на программное обеспечение с открытым исходным кодом. Поскольку BDB — это библиотека, любое приложение, ссылающееся на нее, должно находиться под лицензией, совместимой с AGPL. Многие приложения с открытым исходным кодом и все приложения с закрытым исходным кодом необходимо будет повторно лицензировать, чтобы они стали совместимыми с AGPL, что было неприемлемо для многих разработчиков и операционных систем с открытым исходным кодом. К 2013 году существовало много альтернатив BDB, и Debian Linux был типичным в своем решении полностью отказаться от Berkeley DB, отдав предпочтение базе данных Lightning Memory-Mapped Database (LMDB). [25]

Рекомендации

  1. ^ «Загрузки Oracle Berkeley DB» . Проверено 27 сентября 2020 г.
  2. ^ Справочное руководство Berkeley DB: Чем не является Berkeley DB? Doc.gnu-darwin.org (31 мая 2001 г.). Проверено 18 сентября 2013 г.
  3. ^ «Основной выпуск: Berkeley DB 12gR1 (12.1.6.0)» . Проекты с открытым исходным кодом в Oracle . 10 июня 2013 г. Архивировано из оригинала 5 декабря 2013 г. Проверено 11 апреля 2021 г.
  4. ^ Натан, Уиллис (10 июля 2013 г.). «Debian, Berkeley DB и AGPLv3». Еженедельные новости Linux . Архивировано из оригинала 22 июля 2013 г.
  5. ^ аб Олсон, Майкл А.; Бостик, Кейт; Зельцер, Марго (1999). «Беркли ДБ» (PDF) . Учеб. FREENIX Track, Ежегодная техническая конференция USENIX. Конф . Архивировано (PDF) из оригинала 9 октября 2022 г. Проверено 20 октября 2009 г.
  6. ^ Зельцер, Марго; Йигит, Озан (1991). «Новый пакет хеширования для UNIX». Учеб. USENIX Зимняя технология. Конф . Проверено 20 октября 2009 г.
  7. Брунелли, Марк (28 марта 2005 г.). «Букварь Беркли DB». Новости корпоративного Linux . Архивировано из оригинала 6 сентября 2008 года . Проверено 28 декабря 2008 г.
  8. ^ [Объявление Berkeley DB] Основной выпуск: Berkeley DB 12gR1 (12.1.6.0). Проверено 5 июля 2013 г. (Несмотря на упоминание AGPL, в исходном архиве по-прежнему декларируются условия пункта BSD-4 в версии 6.0.19.)
  9. ^ «Снимок исходного кода 6.0.19 на тот момент» . 13 июня 2013 г.
  10. ^ "Лицензия Sleepycat". Инициатива открытого исходного кода . 31 октября 2006 года . Проверено 28 декабря 2008 г.
  11. ^ «Лицензии». Фонд свободного программного обеспечения . 10 декабря 2008 года. Архивировано из оригинала 16 декабря 2008 года . Проверено 28 декабря 2008 г.
  12. ^ «Совместимость с историческими интерфейсами UNIX». docs.oracle.com . Проверено 20 ноября 2019 г.
  13. ^ "Твиттер / Грегори Берд: @humanications Мы не ..."
  14. ^ «Загрузки Oracle Berkeley DB: последние производственные выпуски» .
  15. ^ "Java Edition Oracle Berkeley DB" . Архивировано из оригинала 11 июля 2017 г.
  16. ^ "XML Беркли БД" . Архивировано из оригинала 18 июля 2016 г.
  17. ^ «bogofilter — бесплатный байесовский фильтр спама с открытым исходным кодом / код (Git) / [93b68e] /bogofilter/README» . sourceforge.net . Проверено 17 июля 2020 г.
  18. ^ "dbopen(3)". Страницы руководства FreeBSD . Проверено 18 апреля 2023 г.
  19. ^ «Страницы руководства OpenBSD» . dbopen(3) . Проверено 18 апреля 2023 г.
  20. ^ "pwd_mkdb(8)". Страницы руководства OpenBSD . Проверено 18 апреля 2023 г.
  21. ^ Веб-мастер, Debian. «Debian — Подробная информация о пакете libdb5.3 в sid». Debian — Пакеты . Проверено 18 апреля 2023 г.
  22. ^ «Обзор — rpms/libdb» . src.fedoraproject.org . Проверено 18 апреля 2023 г.
  23. ^ «Загрузка, информация о лицензии и продажах» . 30 ноября 2017 г.
  24. ^ «Основной выпуск: Berkeley DB 12gR1 (12.1.6.0)» . 10 июня 2013 года . Проверено 15 июля 2013 г.
  25. Ондржей Суры (19 июня 2014 г.). «Цель нового проекта: избавиться от Berkeley DB (после Джесси)». debian-devel (список рассылки). Дебиан .

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