Berkeley DB - Berkeley DB

Berkeley DB
Auteur(s) original(aux) Margo Seltzer et Keith Bostic de Sleepycat Software
Développeur(s) Logiciel Sleepycat , plus tard Oracle Corporation
Première version 1994 ; il y a 27 ans ( 1994 )
Version stable
18.1.40 / 29 mai 2020 ;
il y a 16 mois
 ( 2020-05-29 )
Écrit en C
Système opérateur Windows , de type Unix
Taille ~1244 Ko compilé sur Windows x86
Taper Base de données embarquée , Base de données NoSQL
Licence Double licence ( GNU Affero General Public License et licence commerciale (version 6.x et supérieure)
Sleepycat (versions 2.0-5.x)
Licence BSD à 4 clauses (versions 1.x)
Site Internet www .oracle .com /database /berkeley-db /

Berkeley DB ( BDB ) est une bibliothèque logicielle destinée à fournir une base de données embarquée hautes performances pour les données clés/valeurs . Berkeley DB est écrit en C avec des liaisons API pour C++ , C# , Java , Perl , PHP , Python , Ruby , Smalltalk , Tcl et de nombreux autres langages de programmation . BDB stocke des paires clé/données arbitraires sous forme de tableaux d'octets et prend en charge plusieurs éléments de données pour une seule clé. Berkeley DB n'est pas une base de données relationnelle , bien qu'elle dispose de fonctionnalités de base de données avancées , notamment les transactions de base de données , le contrôle de la simultanéité multiversion et la journalisation en écriture anticipée .

BDB peut prendre en charge des milliers de threads de contrôle simultanés ou de processus simultanés manipulant des bases de données pouvant atteindre 256 téraoctets, sur une grande variété de systèmes d'exploitation, y compris la plupart des systèmes de type Unix et Windows , et des systèmes d'exploitation en temps réel .

BDB a été commercialement pris en charge et développé par Sleepycat Software de 1996 à 2006. Sleepycat Software a été acquis par Oracle Corporation en février 2006, qui continue de développer et de vendre la bibliothèque C Berkeley DB. En 2013, Oracle a re-licencié BDB sous la licence AGPL . À partir de 2020, Bloomberg LP continue de développer un fork de BDB au sein de sa base de données Comdb2 , sous la licence permissive originale Sleepycat .

Origine

Berkeley DB a été créé à l' Université de Californie à Berkeley dans le cadre de BSD , la version de Berkeley du système d' exploitation Unix . Après 4.3BSD (1986), les développeurs de BSD ont tenté de supprimer ou de remplacer tout le code provenant de l' Unix AT&T d'origine dont BSD était dérivé. Ce faisant, ils ont dû réécrire le package de la base de données Unix. Seltzer et Yigit ont créé une nouvelle base de données, libre de tout brevet AT&T : une table de hachage sur disque qui surpasse les bibliothèques dbm existantes . Berkeley DB lui-même a été publié pour la première fois en 1991 et plus tard inclus avec 4.4BSD. En 1996, Netscape a demandé aux auteurs de Berkeley DB d'améliorer et d'étendre la bibliothèque, alors à la version 1.86, pour répondre aux exigences de Netscape pour un serveur LDAP et pour une utilisation dans le navigateur Netscape . Cette demande a conduit à la création de Sleepycat Software . Cette société a été rachetée par Oracle Corporation en février 2006, qui continue de développer et de vendre Berkeley DB.

Depuis sa sortie initiale, Berkeley DB a connu plusieurs versions. Chaque cycle de version majeure a introduit une seule nouvelle fonctionnalité majeure qui se superpose généralement aux fonctionnalités précédentes pour ajouter des fonctionnalités au produit. Les versions 1.x se concentraient sur la gestion du stockage des données clés/valeurs et sont appelées « Data Store » (DS). Les versions 2.x ont ajouté un système de verrouillage permettant un accès simultané aux données. C'est ce que l'on appelle le "Concurrent Data Store" (CDS). Les versions 3.x ont ajouté un système de journalisation pour les transactions et la récupération, appelé "Transactional Data Store" (TDS). Les versions 4.x ont ajouté la possibilité de répliquer les enregistrements de journaux et de créer une base de données multi-répliques à maître unique distribuée hautement disponible. C'est ce qu'on appelle l'ensemble de fonctionnalités « Haute disponibilité » (HA). L'évolution de Berkeley DB a parfois conduit à des changements mineurs d'API ou de format de journal, mais les formats de base de données ont très rarement changé. Berkeley DB HA prend en charge les mises à niveau en ligne d'une version à l'autre en maintenant la possibilité de lire et d'appliquer les enregistrements de journal de la version précédente.

Les systèmes d'exploitation FreeBSD et OpenBSD continuent d'utiliser Berkeley DB 1.8x pour des raisons de compatibilité ; Les systèmes d'exploitation basés sur Linux incluent généralement plusieurs versions pour s'adapter aux applications utilisant encore des interfaces/fichiers plus anciens.

Depuis la version 6.0.21 (Oracle 12c), tous les produits Berkeley DB sont sous licence GNU AGPL . Auparavant, Berkeley DB était redistribué sous la licence BSD à 4 clauses (avant la version 2.0) et la licence publique Sleepycat, qui est une licence open source approuvée par OSI ainsi qu'une licence de logiciel libre approuvée par la FSF . Le produit est livré avec un code source complet, un script de génération, une suite de tests et une documentation. La fonctionnalité complète ainsi que les conditions de licence ont conduit à son utilisation dans une multitude de logiciels gratuits et open source . Ceux qui ne souhaitent pas respecter les termes de la GNU AGPL, ou utiliser une ancienne version avec la licence publique Sleepycat, ont la possibilité d'acheter une autre licence propriétaire pour redistribution auprès d' Oracle Corporation . Cette technique est appelée double licence .

Berkeley DB inclut des interfaces de compatibilité pour certaines bibliothèques de bases de données Unix historiques : dbm , ndbm et hsearch (une bibliothèque System V et POSIX pour créer des tables de hachage en mémoire ).

Architecture

Berkeley DB a une architecture notablement plus simple que celle d'autres systèmes de bases de données comme les systèmes de gestion de bases de données relationnelles . Par exemple, comme SQLite , il n'est pas basé sur un modèle serveur/client et ne prend pas en charge l'accès réseau - les programmes accèdent à la base de données à l'aide d' appels d' API en cours . Oracle a ajouté la prise en charge de SQL dans la version 11g R2 basée sur l'API SQLite populaire en incluant une version de SQLite dans Berkeley DB (il utilise Berkeley DB pour le stockage). Il existe un support tiers pour PL/SQL dans Berkeley DB via un produit commercial nommé Metatranz StepSqlite .

Un programme accédant à la base de données est libre de décider comment les données doivent être stockées dans un enregistrement. Berkeley DB n'impose aucune contrainte sur les données de l'enregistrement. L'enregistrement et sa clé peuvent tous deux mesurer jusqu'à quatre gigaoctets.

Malgré une architecture simple, Berkeley DB prend en charge de nombreuses fonctionnalités de base de données avancées telles que les transactions ACID , le verrouillage à grain fin , les sauvegardes à chaud et la réplication .

Utilisation du nom "Berkeley DB" par Oracle Corporation

Le nom « Berkeley DB » est utilisé par Oracle Corporation pour trois produits différents, dont deux ne sont pas BDB :

  1. Berkeley DB, la bibliothèque de bases de données C qui fait l'objet de cet article
  2. Berkeley DB Java Edition, une bibliothèque Java pure dont la conception est calquée sur la bibliothèque C mais n'a aucun lien par ailleurs
  3. Berkeley DB XML, un programme C++ qui prend en charge XQuery et qui inclut une version héritée de la bibliothèque de base de données C

Programmes utilisant Berkeley DB

Berkeley DB fournit le système de stockage et de récupération sous-jacent de plusieurs serveurs LDAP , systèmes de bases de données et de nombreuses autres applications propriétaires et libres/open source. Les logiciels notables qui utilisent Berkeley DB pour le stockage de données incluent :

  • Bitcoin Core - La première implémentation de la crypto-monnaie Bitcoin conserve l'utilisation de 2009 Berkeley DB 4.8 pour une fonctionnalité
  • Bogofilter – Un filtre anti - spam gratuit/open source qui enregistre ses listes de mots en utilisant Berkeley DB par défaut
  • Citadel – Une plate-forme de groupware gratuite/open source qui conserve tous ses magasins de données, y compris la base de messages, dans Berkeley DB. Citadel est sous licence GPLv3 qui est compatible avec les licences Oracle BDB
  • Sendmail – Un MTA populaire pour les systèmes Linux/Unix
  • Spamassassin – Une application anti-spam

Licence

Berkeley DB V2.0 et supérieur est disponible sous une double licence :

  1. Licence commerciale Oracle avec support professionnel
  2. Licence open source

Le passage à AGPL a poussé les principales distributions Linux telles que Debian à éliminer complètement leur utilisation de Berkeley DB, avec une préférence pour Lightning Memory- Mapped Database (LMDB). La raison en est qu'il serait inacceptable que des utilisateurs commerciaux utilisent le code AGPL, car ils seraient obligés de fournir leur code source aux utilisateurs par une simple mise à niveau logicielle.

Les références

Liens externes