Автор (ы) оригинала | Марго Зельцер и Кейт Бостик из Sleepycat Software |
---|---|
Разработчики) | Sleepycat Software , позже Oracle Corporation |
Первый выпуск | 1994 |
Стабильный выпуск | 18.1.40 [1] / 29 мая 2020 г . |
Написано в | C |
Операционная система | Windows , Unix-подобный |
Размер | ~ 1244 КБ скомпилировано в Windows x86 |
Тип | Встроенная база данных , база данных NoSQL |
Лицензия | Двойная лицензия ( Стандартная общественная лицензия GNU Affero и коммерческая (версия 6.x и выше) лицензия Sleepycat (версии 2.0-5.x) Лицензия BSD с 4 пунктами (версии 1.x) |
Веб-сайт | www |
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]
- Berkeley DB, библиотека базы данных C, которая является предметом этой статьи
- Berkeley DB Java Edition, [18] чистая библиотека Java, дизайн которой смоделирован по образцу библиотеки C, но в остальном не связан
- 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 и выше доступен по двойной лицензии :
- Коммерческая лицензия Oracle с профессиональной поддержкой [22]
- Лицензия с открытым исходным кодом
- Berkeley DB и Berkeley DB XML
- V2.0 - V6.0.19 под лицензией Sleepycat License
- V6.0.20 и новее находится под лицензией GNU AGPL v3 . [23]
- Berkeley DB и Berkeley DB XML
Переход на AGPL привел к тому, что основные дистрибутивы Linux, такие как Debian, полностью отказались от использования Berkeley DB, отдав предпочтение Lightning Memory-Mapped Database (LMDB). Обоснование этого состоит в том, что использование кода AGPL коммерческими пользователями было бы неприемлемым, так как они были бы вынуждены предоставлять пользователям свой исходный код путем простого обновления программного обеспечения. [24]
См. Также [ править ]
- База данных с отображением памяти Lightning
Ссылки [ править ]
- ^ "Загрузки Oracle Berkeley DB" . Проверено 27 сентября 2020 года .
- ^ Справочное руководство Berkeley DB: чем не является Berkeley DB? . Doc.gnu-darwin.org (31 мая 2001 г.). Проверено 18 сентября 2013.
- ^ http://doc.gnu-darwin.org/am_misc/dbsizes.html Справочное руководство Berkeley DB: ограничения базы данных Дата обращения 19 сентября 2013 г.
- ^ «Основной выпуск: Berkeley DB 12gR1 (12.1.6.0)» . Проекты с открытым исходным кодом в Oracle . 2013-06-10. Архивировано 5 декабря 2013 года . Проверено 11 апреля 2021 .
- ^ Натан, Уиллис (2013-07-10). «Debian, Berkeley DB и AGPLv3» . Еженедельные новости Linux .
- ^ a b Олсон, Майкл А .; Бостик, Кейт; Зельцер, Марго (1999). "Беркли ДБ" (PDF) . Proc. FREENIX Track, Ежегодный технический журнал USENIX. Конф . Проверено 20 октября 2009 года .
- ^ Зельцер, Марго; Йигит, Озан (1991). «Новый пакет хеширования для UNIX» . Proc. USENIX Winter Tech. Конф . Проверено 20 октября 2009 года .
- ↑ Брунелли, Марк (28 марта 2005 г.). "Праймер Berkeley DB" . Новости Enterprise Linux . Проверено 28 декабря 2008 года .
- ^ "db (3)" . Проверено 12 апреля 2009 года .
- ^ [Объявление Berkeley DB] Основной выпуск: Berkeley DB 12gR1 (12.1.6.0) . Проверено 5 июля 2013 г. (Несмотря на то, что AGPL упоминает там, в исходном архиве все еще декларируются условия BSD-4-Clause в 6.0.19.)
- ^ Снимок исходного кода 6.0.19 в то время
- ^ "Лицензия Sleepycat" . Инициатива открытого исходного кода . 31 октября 2006 . Проверено 28 декабря 2008 года .
- ^ «Лицензии» . Фонд свободного программного обеспечения . 10 декабря, 2008. Архивировано из оригинала 16 декабря 2008 года . Проверено 28 декабря 2008 года .
- ^ «Совместимость с историческими интерфейсами UNIX» . docs.oracle.com . Проверено 20 ноября 2019 .
- ^ "Twitter / Грегори Берд: @humanications Мы не ..."
- ^ "Официальный FAQ Berkeley DB" . Корпорация Oracle . Проверено 30 марта 2010 года .
Поддерживает ли Berkeley DB PL / SQL?
- ^ Oracle Berkeley DB Downloads: Последние производственные выпуски
- ^ "Oracle Berkeley DB Java Edition" .
- ^ "Беркли DB XML" .
- ^ Примечания к выпуску Биткойн 0.8.0 2013
- ^ "bogofilter - Быстрый байесовский фильтр спама / Код (Git) / [93b68e] / bogofilter / README" . sourceforge.net . Проверено 17 июля 2020 .
- ^ «Информация для скачивания, лицензии и продаж» . 30 ноя 2017.
- ^ «Основной выпуск: Berkeley DB 12gR1 (12.1.6.0)» . 10 июня 2013 . Проверено 15 июля 2013 года .
- ^ Ондржей Сури (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