| 原作者 | Sleepycat SoftwareのMargo Seltzer 氏とKeith Bostic 氏 |
|---|---|
| 開発者 | Sleepycat Software、後のOracle Corporation |
| 初回リリース | 1994年 |
| 安定リリース | 18.1.40 [1]
/ 2020年5月29日 |
| 書かれた | C |
| オペレーティング·システム | Windows、Unix系 |
| サイズ | Windows x86でコンパイルされた約 1244 kB |
| タイプ | 組み込みデータベース、NoSQLデータベース |
| ライセンス | デュアルライセンス(GNU Affero General Public Licenseとプロプライエタリライセンス) |
| Webサイト | www.oracle.com/database/technologies/関連/berkeleydb.html |
Berkeley DB ( BDB ) は、キー/値データ用の組み込みデータベース ソフトウェア ライブラリであり、オープンソース ソフトウェアにおいて歴史的に重要な存在です。Berkeley DB はC 言語で記述されており、他の多くのプログラミング言語用の API バインディングを備えています。BDB は任意のキー/データ ペアをバイト配列として格納し、1 つのキーに対して複数のデータ項目をサポートします。Berkeley DB はリレーショナル データベースではありませんが[2] 、データベース トランザクション、マルチバージョン同時実行制御、先行書き込みログなどのデータベース機能を備えています。BDB は、ほとんどのUnix 系システムやWindowsシステム、リアルタイム オペレーティング システムなど、さまざまなオペレーティング システムで動作します。
BDBは、1996年から2006年までSleepycat Softwareによって商業的にサポートされ、開発されていました。Sleepycat Softwareは2006年2月にOracle Corporationに買収され、C Berkeley DBライブラリの開発と販売を継続しました。2013年にOracleはBDBをAGPLライセンス[3] [4]の下で再ライセンスし、2020年5月まで新しいバージョンをリリースしました。Bloomberg LPは、オリジナルのSleepycat許容ライセンスの下で、 Comdb2データベース内で2013バージョンのBDBのフォークを開発し続けています。
起源
Berkeley DB は、カリフォルニア大学バークレー校で、 Unixオペレーティングシステムのバークレー版であるBSDの一部として開発されました。4.3BSD (1986) の後、BSD 開発者は、BSD の元となったオリジナルのAT&T Unix に由来するすべてのコードを削除または置き換えようとしました。そのためには、Unix データベース パッケージを書き直す必要がありました。 [5] Seltzer と Yigit [6] は、AT&T の特許に縛られない新しいデータベースを作成しました。それは、既存のdbmライブラリよりも優れたパフォーマンスを発揮するオンディスクハッシュ テーブルです。Berkeley DB 自体は 1991 年に最初にリリースされ、後に 4.4BSD に含まれました。[5] 1996 年にNetscape はBerkeley DB の作者に、当時バージョン 1.86 だったライブラリを、Netscape のLDAPサーバー[7]の要件と Netscape ブラウザーでの使用に合わせて改良および拡張するように依頼しました。この会社は2006年2月にOracle Corporationに買収されました。
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 は 4 条項BSD ライセンス(バージョン 2.0 より前) と Sleepycat Public License の下で再配布されていました。Sleepycat Public License は、OSI承認のオープンソース ライセンスであり、 FSF承認のフリー ソフトウェア ライセンスでもあります。[10] [11]製品には、完全なソース コード、ビルド スクリプト、テスト スイート、およびドキュメントが付属しています。ライセンス条項とともに包括的な機能により、多数のフリー ソフトウェアおよびオープンソース ソフトウェアで使用されています。GNU AGPL の条項を遵守したくない、または Sleepycat Public License の古いバージョンを使用したくない人は、 Oracle Corporationから再配布用の別の独自ライセンスを購入することができます。この手法はデュアル ライセンスと呼ばれます。
Berkeley DBには、 dbm、ndbm、hsearch(メモリ内ハッシュテーブルを作成するためのSystem VおよびPOSIXライブラリ)などの歴史的なUnixデータベースライブラリとの互換性インターフェースが含まれています。 [12]
建築
Berkeley DB のアーキテクチャはリレーショナル データベース管理システムよりもかなりシンプルです。SQLiteやLMDBと同様に、サーバー/クライアントモデルに基づいておらず、ネットワーク アクセスをサポートしていません。プログラムはインプロセスAPI呼び出しを使用してデータベースにアクセスします。Oracle は、人気の SQLite API に基づいて 11g R2 リリースで SQL のサポートを追加し、Berkeley DB に SQLite のバージョンを組み込みました (ストレージには Berkeley DB を使用)。[13]
データベースにアクセスするプログラムは、レコードにデータを格納する方法を自由に決定できます。Berkeley DB はレコードのデータに制約を設けません。レコードとそのキーは、どちらも最大 4 ギガバイトの長さにすることができます。
Berkeley DB は、 ACID トランザクション、きめ細かいロック、ホットバックアップ、レプリケーションなどのデータベース機能をサポートしています。
Oracle Corporation による「Berkeley DB」という名称の使用
「Berkeley DB」という名前は、オラクル社によって3つの異なる製品に使用されていますが、そのうちの1つがBDBです。[14]
- この記事の主題であるCデータベースライブラリ、Berkeley DB
- Berkeley DB Java Edition [15]は、 Cライブラリをモデルに設計されているが、それ以外は無関係な純粋なJavaライブラリである。
- Berkeley DB XML [16]は、 XQueryをサポートするC++プログラムであり、Cデータベースライブラリのレガシーバージョンが含まれています。
Berkeley DB をまだ使用しているオープンソース プログラム
BDB はかつては非常に普及していましたが、2013 年から使用が急激に減少しました (ライセンス セクションを参照)。データ ストレージに Berkeley DB を今でも使用している注目すべきソフトウェアには、次のものがあります。
- Bogofilter –デフォルトでBerkeley DBを使用して単語リストを保存する無料/オープンソースのスパムフィルター。 [17]
- Citadel/UX – 1980 年代から 1990 年代にかけて掲示板システムプラットフォームとして人気を博したCitadelファミリー プログラムから直接派生したコラボレーション ソフトウェア(メッセージングおよびグループウェア) 。
- Sendmail – 1983 年に Linux/Unix システム向けに最初にリリースされた無料/オープンソースのMTA。
- Spamassassin – 無料/オープンソースのスパム対策アプリケーション。
PerlやPythonなどのオープンソースのオペレーティングシステムや言語は、古いBerkeleyDBインターフェースを依然としてサポートしています。FreeBSDおよびOpenBSDオペレーティングシステムには、パスワードプログラムで使用されるdbopen()[18] [19]オペレーティングシステムコールをサポートするためにBerkeley DB 1.8xが同梱されていますpwb_mkdb。[20] Debianベースのものを含むLinuxオペレーティングシステム[21]およびFedora [22]には、Berkeley DB 5.3ライブラリが同梱されています。
ライセンス
Berkeley DB V2.0 以降はデュアル ライセンスで利用できます。
- Oracle商用ライセンス[23]
- GNU AGPL v3 [24 ]
2013 年にオープンソース ライセンスが Sleepycat ライセンスから AGPL に切り替わったことは、オープンソース ソフトウェアに大きな影響を与えました。BDB はライブラリであるため、これにリンクするアプリケーションはすべて AGPL 互換のライセンスでなければなりません。多くのオープンソース アプリケーションとすべてのクローズド ソース アプリケーションは、AGPL 互換にするためにライセンスを再取得する必要があり、多くの開発者とオープンソース オペレーティング システムにとってこれは受け入れられませんでした。2013 年までに BDB の代替となるものは数多く存在し、Debian Linux はBerkeley DB を完全に廃止し、 Lightning Memory-Mapped Database (LMDB)を優先するという決定を下した典型的な例でした。 [25]
参考文献
- ^ 「Oracle Berkeley DB ダウンロード」 。2020年9 月 27 日閲覧。
- ^ Berkeley DB リファレンス ガイド: Berkeley DB ではないものは何ですか? Doc.gnu-darwin.org (2001-05-31)。2013 年 9 月 18 日に取得。
- ^ 「メジャーリリース: Berkeley DB 12gR1 (12.1.6.0)」。Oracle のオープンソースプロジェクト。2013 年 6 月 10 日。2013 年 12 月 5 日時点のオリジナルよりアーカイブ。2021年 4 月 11 日に取得。
- ^ Nathan, Willis (2013-07-10). 「Debian、Berkeley DB、および AGPLv3」。Linux Weekly News。2013-07-22時点のオリジナルよりアーカイブ。
- ^ ab Olson, Michael A.; Bostic, Keith; Seltzer, Margo (1999). 「Berkeley DB」(PDF) . Proc. FREENIX Track, USENIX Annual Tech. Conf . 2022-10-09 のオリジナルからアーカイブ(PDF) . 2009 年10 月 20 日閲覧。
- ^ Seltzer, Margo; Yigit, Ozan (1991). 「UNIX 用の新しいハッシュ パッケージ」Proc. USENIX Winter Tech. Conf . 2009 年10 月 20 日閲覧。
- ^ Brunelli, Mark (2005 年 3 月 28 日)。「Berkeley DB 入門」。Enterprise Linux News。2008年 9 月 6 日時点のオリジナルよりアーカイブ。2008年12 月 28 日閲覧。
- ^ [Berkeley DB 発表] メジャー リリース: Berkeley DB 12gR1 (12.1.6.0)。2013 年 7 月 5 日取得。(AGPL の記載があるにもかかわらず、ソース アーカイブでは 6.0.19 でも BSD-4-Clause 条項が宣言されています。)
- ^ 「当時の 6.0.19 ソースのスナップショット」 2013 年 6 月 13 日。
- ^ 「The Sleepycat License」。Open Source Initiative。2006年 10 月 31 日。2008年12 月 28 日閲覧。
- ^ 「ライセンス」。フリーソフトウェア財団。2008年12月10日。2008年12月16日時点のオリジナルよりアーカイブ。2008年12月28日閲覧。
- ^ 「歴史的な UNIX インターフェースとの互換性」。docs.oracle.com。2019年11 月 20 日閲覧。
- ^ 「Twitter / Gregory Burd: @humanications 私たちはそうしませんでした...」
- ^ 「Oracle Berkeley DB ダウンロード: 最新の製品リリース」。
- ^ 「Oracle Berkeley DB Java Edition」。2017年7月11日時点のオリジナルよりアーカイブ。
- ^ 「Berkeley DB XML」。2016年7月18日時点のオリジナルよりアーカイブ。
- ^ 「bogofilter -- 高速ベイジアンスパムフィルターコード (Git)」。sourceforge.net 。 2024年5月17日閲覧。
- ^ "dbopen(3)". FreeBSDマニュアルページ. 2023年4月18日閲覧。
- ^ 「OpenBSDマニュアルページ」。dbopen(3) 。 2023年4月18日閲覧。
- ^ "pwd_mkdb(8)". OpenBSDマニュアルページ. 2023年4月18日閲覧。
- ^ Webmaster、Debian。「Debian -- sid のパッケージ libdb5.3 の詳細」。Debian -- パッケージ。2023 年 4 月 18 日閲覧。
- ^ 「概要 - rpms/libdb」. src.fedoraproject.org . 2023年4月18日閲覧。
- ^ 「ダウンロード、ライセンス、販売情報」。2017年11月30日。
- ^ 「メジャーリリース: Berkeley DB 12gR1 (12.1.6.0)」。2013年6月10日。 2013年7月15日閲覧。
- ^ Ondřej Surý (2014 年 6 月 19 日). 「新しいプロジェクト目標: Berkeley DB を取り除く (jessie 後)」. debian-devel (メーリング リスト). Debian .
外部リンク
- オラクルバークレーDB
- Oracle Berkeley DB ダウンロード
- Oracle Berkeley DB ドキュメント
- Oracle Berkeley DB ライセンス情報
- Oracle テクノロジー製品のライセンスの落とし穴
- Oracle ライセンス ナレッジ ネット
- Himanshu Yadava 著「Berkeley DB ブック」
