Berkeley DB – Wikipedia

before-content-x4

Softwarebibliothek mit eingebetteter Datenbank für Schlüssel- / Wertdaten

Berkeley DB ((BDB) ist eine Softwarebibliothek, die eine leistungsstarke eingebettete Datenbank für Schlüssel- / Wertdaten bereitstellen soll. Berkeley DB ist in C mit API-Bindungen für C ++, C #, Java, Perl, PHP, Python, Ruby, Smalltalk, Tcl und viele andere Programmiersprachen geschrieben. BDB speichert beliebige Schlüssel / Daten-Paare als Byte-Arrays und unterstützt mehrere Datenelemente für einen einzelnen Schlüssel. Berkeley DB ist keine relationale Datenbank,[2] Obwohl es erweiterte Datenbankfunktionen wie Datenbanktransaktionen, Multiversion-Parallelitätskontrolle und Write-Ahead-Protokollierung bietet.

BDB kann Tausende von gleichzeitigen Steuerungs-Threads oder gleichzeitigen Prozessen unterstützen, die Datenbanken mit einer Größe von bis zu 256 Terabyte bearbeiten.[3] auf einer Vielzahl von Betriebssystemen, einschließlich der meisten Unix-ähnlichen und Windows-Systeme sowie Echtzeit-Betriebssysteme.

BDB wurde von 1996 bis 2006 von Sleepycat Software kommerziell unterstützt und entwickelt. Dieses Unternehmen wurde im Februar 2006 von der Oracle Corporation übernommen, die weiterhin Berkeley DB-Produkte entwickelt und verkauft. Ab 2020 entwickelt Bloomberg LP unter der ursprünglichen zulässigen Sleepycat-Softwarelizenz weiterhin einen BDB-Zweig in seiner Comdb2-Datenbank.

Berkeley DB entstand an der University of California in Berkeley als Teil von BSD, Berkeleys Version des Unix-Betriebssystems. Nach 4.3BSD (1986) versuchten die BSD-Entwickler, den gesamten Code zu entfernen oder zu ersetzen, der aus dem ursprünglichen AT & T Unix stammt, von dem BSD abgeleitet wurde. Dabei mussten sie das Unix-Datenbankpaket neu schreiben.[4] Seltzer und Yigit[5] hat eine neue Datenbank erstellt, die nicht durch AT & T-Patente belastet ist: eine On-Disk-Hash-Tabelle, die die vorhandenen DBM-Bibliotheken übertrifft. Berkeley DB selbst wurde erstmals 1991 veröffentlicht und später in 4.4BSD aufgenommen.[4] 1996 forderte Netscape die Autoren von Berkeley DB auf, die Bibliothek zu verbessern und zu erweitern, und zwar ab Version 1.86, um den Anforderungen von Netscape an einen LDAP-Server zu entsprechen[6] und zur Verwendung im Netscape-Browser. Diese Anfrage führte zur Erstellung der Sleepycat-Software. Dieses Unternehmen wurde im Februar 2006 von der Oracle Corporation übernommen, die Berkeley DB weiterentwickelt und verkauft.

Seit seiner ersten Veröffentlichung hat Berkeley DB verschiedene Versionen durchlaufen. In jedem Hauptversionszyklus wurde ein einzelnes neues Hauptmerkmal eingeführt, das im Allgemeinen über den früheren Merkmalen liegt, um dem Produkt Funktionen hinzuzufügen. Die 1.x-Versionen konzentrieren sich auf die Verwaltung der Schlüssel- / Wertdatenspeicherung und werden als “Data Store” (DS) bezeichnet. Die 2.x-Versionen haben ein Schließsystem hinzugefügt, das den gleichzeitigen Zugriff auf Daten ermöglicht. Dies wird als “Concurrent Data Store” (CDS) bezeichnet. In den Versionen 3.x wurde ein Protokollierungssystem für Transaktionen und Wiederherstellung hinzugefügt, das als “Transactional Data Store” (TDS) bezeichnet wird. Die 4.x-Versionen haben die Möglichkeit hinzugefügt, Protokolldatensätze zu replizieren und eine verteilte hochverfügbare Single-Master-Multi-Replica-Datenbank zu erstellen. Dies wird als HA-Funktionssatz (High Availability) bezeichnet. Die Entwicklung von Berkeley DB hat manchmal zu geringfügigen Änderungen der API oder des Protokollformats geführt, aber nur sehr selten haben sich die Datenbankformate geändert. Berkeley DB HA unterstützt Online-Upgrades von einer Version zur nächsten, indem die Protokolldatensätze der vorherigen Version weiterhin gelesen und angewendet werden können.

Die Betriebssysteme FreeBSD und OpenBSD verwenden aus Kompatibilitätsgründen weiterhin Berkeley DB 1.8x.[7][dubious ] Linux-basierte Betriebssysteme enthalten normalerweise mehrere Versionen für Anwendungen, die noch ältere Schnittstellen / Dateien verwenden.

Ab der Version 6.0.21 (Oracle 12c) sind alle Berkeley DB-Produkte unter der GNU AGPL lizenziert.[8][9] Berkeley DB JE 7.3.7 ist unter der Apache-Lizenz Version 2.0 lizenziert. Zuvor wurde Berkeley DB unter der 4-Klausel-BSD-Lizenz (vor Version 2.0) und der Sleepycat Public License, einer von OSI genehmigten Open-Source-Lizenz sowie einer von FSF genehmigten Lizenz für freie Software, neu verteilt.[10][11] Das Produkt wird mit vollständigem Quellcode, Build-Skript, Testsuite und Dokumentation geliefert. Die Codequalität und der allgemeine Nutzen zusammen mit den Lizenzbedingungen haben dazu geführt, dass sie in einer Vielzahl von kostenlosen und Open-Source-Software verwendet werden. Diejenigen, die sich nicht an die Bestimmungen der GNU AGPL halten oder eine ältere Version mit der Sleepycat Public License verwenden möchten, haben die Möglichkeit, eine andere proprietäre Lizenz zur Weiterverteilung von der Oracle Corporation zu erwerben. Diese Technik wird als doppelte Lizenzierung bezeichnet. Unterschiedliche Versionen von Berkeley DB (DB, JE, XML) können unterschiedliche Lizenzbedingungen haben.

Berkeley DB enthält Kompatibilitätsschnittstellen für einige historische Unix-Datenbankbibliotheken: dbm, ndbm und hsearch (eine System V- und POSIX-Bibliothek zum Erstellen von In-Memory-Hash-Tabellen).[12]

Die Architektur[edit]

Berkeley DB hat eine Architektur, die wesentlich einfacher ist als die anderer Datenbanksysteme wie relationaler Datenbankverwaltungssysteme. Wie SQLite basiert es beispielsweise nicht auf einem Server / Client-Modell und bietet keine Unterstützung für den Netzwerkzugriff – Programme greifen über In-Process-API-Aufrufe auf die Datenbank zu. Oracle hat die Unterstützung für SQL in der Version 11g R2 hinzugefügt, die auf der beliebten SQLite-API basiert, indem eine Version von SQLite in Berkeley DB aufgenommen wurde (es verwendet Berkley DB als Speicher).[13] PL / SQL wird in Berkeley DB über ein kommerzielles Produkt namens Metatranz StepSqlite von Drittanbietern unterstützt.[14]

Ein Programm, das auf die Datenbank zugreift, kann frei entscheiden, wie die Daten in einem Datensatz gespeichert werden sollen. Berkeley DB unterliegt keinen Einschränkungen für die Daten des Datensatzes. Der Datensatz und sein Schlüssel können beide bis zu vier Gigabyte lang sein.

Trotz einer einfachen Architektur unterstützt Berkeley DB viele erweiterte Datenbankfunktionen wie ACID-Transaktionen, fein abgestimmte Sperren, Hot-Backups und Replikation.

Oracle Corporation Editionen[edit]

Der Name “Berkeley DB” wird von der Oracle Corporation für drei verschiedene Produkte verwendet:[15]

  1. Berkeley DB – die aktuelle Version vom Juni 2018 ist 18.1.
  2. Berkeley DB Java Edition – Die aktuelle Version vom November 2017 ist 7.5.11
  3. Berkeley DB XML – die aktuelle Version vom November 2017 ist 6.1.4

Jede Ausgabe verfügt trotz des gemeinsamen Brandings über separate Datenbankbibliotheken. Die erste ist die traditionelle Berkeley-Datenbank, die in C geschrieben wurde. Sie enthält mehrere Datenbankimplementierungen, darunter einen B-Baum und eine, die auf erweiterbarem Hashing basiert. Es unterstützt mehrere Sprachbindungen, einschließlich C / C ++, Java (über JNI), C # .NET, Perl und Python.

Berkeley DB Java Edition (JE) ist eine reine Java-Datenbankverwaltungsbibliothek. Das Design ähnelt dem von Berkeley DB, ohne es genau zu replizieren, und verfügt über einen Funktionsumfang, der viele der Funktionen des traditionellen Berkeley DB und anderer für die Java Edition spezifischer Funktionen umfasst. Es verfügt über eine protokollstrukturierte Speicherarchitektur, die unterschiedliche Leistungs- und Parallelitätsmerkmale bietet. Es stehen drei APIs zur Verfügung – eine direkte Persistenzschicht, die “Plain Old Java Objects” (POJO) ist; eine, die auf dem Java Collections Framework basiert (ein Ansatz zur Objektpersistenz); und eine, die auf der traditionellen Berkeley DB-API basiert. Die Option Hochverfügbarkeit (Replikation) der Berkeley DB Java Edition ist verfügbar. Beachten Sie, dass die herkömmliche Berkeley-Datenbank auch eine Java-API unterstützt, dies jedoch über JNI, und daher eine installierte native Bibliothek erfordert.

Die Berkeley DB XML-Datenbank ist auf die Speicherung von XML-Dokumenten spezialisiert und unterstützt XQuery über XQilla. Es wird als zusätzliche Schicht über (einer älteren Version von) Berkeley DB und der Xerces-Bibliothek implementiert. DB XML ist in C ++ geschrieben und unterstützt mehrere Sprachbindungen, einschließlich C ++, Java (über JNI), Perl und Python.

Programme, die Berkeley DB verwenden[edit]

Berkeley DB bietet das zugrunde liegende Speicher- und Abrufsystem mehrerer LDAP-Server, Datenbanksysteme und vieler anderer proprietärer und Free / Open Source-Anwendungen. Zu den bemerkenswerten Programmen, die Berkeley DB zur Datenspeicherung verwenden, gehören:

Frühere Benutzer[edit]

Lizenzierung[edit]

Berkeley DB V2.0 und höher ist unter einer Doppellizenz erhältlich:

  1. Oracle kommerzielle Lizenz mit professioneller Unterstützung[22]
  2. Open Source Lizenz
    • Berkeley DB und Berkeley DB XML
    • Berkeley DB JE (Java Edition)

Die Umstellung auf AGPL hat dazu geführt, dass große GNU / Linux-Distributionen wie Debian die Verwendung von Berkeley DB vollständig eingestellt haben, wobei Lightning Memory-Mapped Database (LMDB) bevorzugt wird. Das Grundprinzip ist, dass die Verwendung von AGPL-Code durch kommerzielle Benutzer nicht akzeptabel wäre, da sie gezwungen wären, ihren Quellcode den Benutzern durch ein einfaches Software-Upgrade zur Verfügung zu stellen.[24]

Siehe auch[edit]

Verweise[edit]

  1. ^ ein b c “Oracle Berkeley DB-Downloads”. Abgerufen 27. September 2020.
  2. ^ Berkeley DB Referenzhandbuch: Was ist Berkeley DB nicht?. Doc.gnu-darwin.org (2001-05-31). Abgerufen am 18.09.2013.
  3. ^ http://doc.gnu-darwin.org/am_misc/dbsizes.html Berkeley DB-Referenzhandbuch: Datenbankbeschränkungen Abgerufen am 19.09.2013
  4. ^ ein b Olson, Michael A.; Bostic, Keith; Seltzer, Margo (1999). “Berkeley DB” (PDF). Proc. FREENIX Track, USENIX Annual Tech. Conf. Abgerufen 20. Oktober 2009.
  5. ^ Seltzer, Margo; Yigit, Ozan (1991). “Ein neues Hashing-Paket für UNIX”. Proc. USENIX Winter Tech. Conf. Abgerufen 20. Oktober 2009.
  6. ^ Brunelli, Mark (28. März 2005). “Ein Berkeley DB Primer”. Enterprise Linux News. Abgerufen 28. Dezember 2008.
  7. ^ db (3). Abgerufen 12. April, 2009.
  8. ^ [Berkeley DB Announce] Hauptversion: Berkeley DB 12gR1 (12.1.6.0). Abgerufen am 5. Juli 2013. (Trotz der dort erwähnten AGPL-Erwähnungen deklariert das Quellarchiv weiterhin BSD-4-Klausel-Begriffe in 6.0.19.)
  9. ^ Momentaufnahme der 6.0.19-Quelle zu diesem Zeitpunkt
  10. ^ “Die Sleepycat-Lizenz”. Open Source Initiative. 31. Oktober 2006. Abgerufen 28. Dezember 2008.
  11. ^ “Lizenzen”. Freie Software Foundation. 10. Dezember 2008. Archiviert von das Original am 16. Dezember 2008. Abgerufen 28. Dezember 2008.
  12. ^ “Kompatibilität mit historischen UNIX-Schnittstellen”. docs.oracle.com. Abgerufen 2019-11-20.
  13. ^ “Twitter / Gregory Burd: @humanications Wir haben nicht …”
  14. ^ “Offizielle Berkeley DB FAQ”. Oracle Corporation. Abgerufen 30. März, 2010. Unterstützt Berkeley DB PL / SQL?
  15. ^ Oracle Berkeley DB-Downloads: Neueste Produktionsversionen
  16. ^ Versionshinweise für Bitcoin 0.8.0 2013
  17. ^ “Bogofilter – Fast Bayesian Spam Filter / Code (Git) / [93b68e] / bogofilter / README “. sourceforge.net. Abgerufen 2020-07-17.
  18. ^ Github-Projekt Carbonado / Carbonado, Carbonado, 2020-04-04abgerufen 2020-07-17
  19. ^ “Voldemort-Quellcodepaket, das die BDB-Integration enthält”. GitHub. Abgerufen 2017-03-16.
  20. ^ “Design – Voldemort”. www.project-voldemort.com. Abgerufen 2020-07-17.
  21. ^ [1] Ändern Sie das Format der RPM-Datenbank von Berkeley DB in ein neues SQLite-Format.
  22. ^ “Download-, Lizenz- und Verkaufsinformationen”. 30. November 2017.
  23. ^ Hauptversion: Berkeley DB 12gR1 (12.1.6.0). 10. Juni 2013. Abgerufen 15. Juli 2013.
  24. ^ Ondřej Surý (19. Juni 2014). “Neues Projektziel: Berkeley DB loswerden (post jessie)”. debian-devel (Mailingliste). Debian.

Externe Links[edit]


after-content-x4