歴史
オリジナルのdbmライブラリとファイル形式は、ケン・トンプソンによって開発され、1979年にAT&Tからリリースされたシンプルなデータベースエンジンでした。dbmという名前はDataBase Managerの3文字の頭文字をとった略語で、オリジナルのdbmから派生したAPIと機能を備えたデータベースエンジンのファミリーを指す場合もあります。
dbmライブラリは、単一のキー(主キー)を使用して任意のデータを固定サイズのバケットに格納し、ハッシュ技術を使用してキーによるデータの高速な取得を可能にします。
使用されているハッシュ方式は拡張可能なハッシュ方式の一種であり、データベースに新しいバケットが追加されるにつれてハッシュ方式が拡張されます。つまり、データベースがほぼ空の状態では1つのバケットから始まり、それがいっぱいになると分割されます。結果として生成された2つの子バケットも、いっぱいになると分割されるため、キーが追加されるにつれてデータベースは大きくなります。
dbmライブラリとその派生ライブラリは、リレーショナルデータベース以前の形態であり、ディスク上のハッシュテーブルとして実装された連想配列を管理します。実際には、接続やクエリの準備といったオーバーヘッドを必要としないため、キーによる高速アクセスストレージに対してより実用的なソリューションを提供できます。ただし、書き込みのために一度にオープンできるプロセスは一般的に1つだけという制約があります。エージェントデーモンを使用すれば複数のプロセスからの要求を処理できますが、プロセス間通信(IPC)のオーバーヘッドが発生します。
実装
オリジナルの AT&T dbmライブラリは、多くの後継実装に置き換えられています。注目すべき例としては、次のものがあります。[ 3 ]
以下のデータベースはdbmに着想を得ていますが、dbmインターフェースを直接提供していません。ただし、dbmインターフェースをラップすることは容易です。
参考文献
- ↑キュー 2007 、p. 80:「DBMは、高速なキー検索の必要性が認識されたコンピューティングの黎明期から存在しています。オリジナルのDBMは、高速で拡張性の高いキーによるデータアクセスを実現するUNIXベースのライブラリおよびファイル形式です。その後、NDBM(「新しいDBM」)、GDBM(「GNU DBM」)、そしてBerkeley DBが続きました。Berkeley DBは群を抜いて高度で、現在も活発に開発されている唯一のDBMです。とはいえ、NDBM以降のすべてのDBMは、Apacheを含むほとんどのプログラムで使用される同じコア機能を提供しています。最小限の実装のSDBMもAPRにバンドルされており、他のDBMとともにアプリケーションで使用できます。NDBMは、紀元前600年頃にギリシャ人が「新都市(ネアポリス)」と名付け、現在もナポリと呼ばれている都市のように、今では古いものですが、依然としてベースラインDBMです。NDBMは、Apache 1.xバージョンのやなどの初期のApacheモジュールで使用されていました。 GDBMとBerkeley DBはNDBMのエミュレーションを提供しており、Linuxディストリビューションには、ライセンス上の理由から除外されている「本物の」NDBMの代わりに、これらのエミュレーションのいずれかが同梱されています。残念ながら、様々なファイル形式は全く互換性がなく、データベースのロックに関する動作にも微妙な違いがあります。これらの問題により、LinuxユーザーからApache 1.xのDBMに関する問題が絶えず報告されるようになりました。
mod_auth_dbmmod_rewrite - 1 2 Hazel 2001 、p. 500:「最も一般的な[シングルキー]フォーマットはDBMと呼ばれます。ほとんどの最新バージョンのUnixにはDBMライブラリが標準でインストールされていますが、古いシステムではそうではありません。最も一般的な2つのDBMライブラリはndbm(SolarisとIRIXの標準)とBerkeley DBバージョン2または3(いくつかのフリーオペレーティングシステムの標準)です。Eximはこれら両方に加え、古いBerkeley DBバージョン1、 gdbm、およびtdbもサポートしています。」
- 1 2 Ladd & O'Donnell 2001 、pp. 823–824 : 「ほとんどの UNIX システムには何らかの DBM データベースがあります。DBM は、キーと値のペアで構成されるデータ ファイルを管理するライブラリ ルーチンのセットです。DBM ルーチンは、ユーザーがデータベースに情報を入力および取得する方法を制御します。DBM は情報を格納するための最も強力なメカニズムではありませんが、フラット ファイルを使用するよりも情報を取得するのに高速な方法です。ほとんどの UNIX サイトは DBM ライブラリのいずれかを使用しているため、DBM データベースに情報を格納するために必要なツールはすぐに利用できます。DBMライブラリの種類は、UNIX システムの数とほぼ同じくらい存在します。これらのライブラリのほとんどは互換性がありますが、基本的にはすべて同じように動作します...利用可能な最も人気のある DBM ライブラリのリストを以下に示します。
- DBM - DBMはデータベースを2つのファイルに保存します。1つ目のファイルは拡張子を持ち
.Pag、ビットマップが含まれています。2つ目のファイルは拡張子を持ち.Dir、データが含まれています。 - NDBM - NDBM は DBM とよく似ていますが、いくつかの追加機能があります。より優れたストレージおよび取得方法を提供するために作成されました。また、NDBM では、スクリプト内で一度に 1 つのデータベースしか開くことができない DBM とは異なり、複数のデータベースを開くことができます。DBM と同様に、NDBM は拡張子
.Pagと を使用する 2 つのファイルに情報を保存します.Dir。 - SDBM - SDBMにはPerlアーカイブが付属しており、多くのプラットフォームに移植されています。そのため、お使いのコンピュータにPerlのバージョンがあれば、DBMデータベースを使用できます。SDBMはNDBMの機能に合わせて開発されているため、コードの移植性は問題になりません。Perlはほぼすべての主要プラットフォームで利用可能です。
- GDBM - GDBM は、データベースルーチンの DBM ファミリーの GNU バージョンです。GDBM ではデータのキャッシュも可能で、データベースへの書き込み時間を短縮できます。データベースのサイズに制限はなく、そのサイズはシステムのリソースに完全に依存します。GDBM データベースファイルの拡張子は です
.Db。2 つのファイルを使用する DBM と NDBM とは異なり、GDBM は 1 つのファイルのみを使用します。 - Berkeley db - Berkeley db は、元の DBM ルーチンを大幅に拡張したものです。Berkeley db は他の DBM データベースと同様にハッシュテーブルを使用しますが、ソートされた平衡二分木 (
BTREE) に基づくデータベースを作成し、レコード行番号 ( RECNO) を使用して情報を格納することもできます。使用する方法は、データベースから情報をどのように格納および取得したいかによって完全に異なります。Berkeley db は拡張子のないファイルを 1 つだけ作成します。
- ↑ 「衝突耐性」。GDBMマニュアル。 2021年10月3日取得。
- ↑ 「オリジナルのNoSQLキーバリューストアのクラッシュ対策」 。 2021年10月3日取得。
- ↑イギット、オザン。「sdbm.bun」。cse.yorku.ca 。2019 年5 月 8 日に取得。
- ↑ 「Ruby SDBMライブラリ」。SDBMはGithubにあります。Ruby
はバージョン2.7まではSDBMを標準ディストリビューションに同梱していましたが、それ以降はDBMやGDBMライブラリと同様に外部ライブラリとしてのみ利用可能となり、Ruby 3.1で標準ライブラリから削除されました。
- ↑ "QDBM: Quick Database Manager" . fallabs.com . 2006. 2020年2月27日のオリジナルからアーカイブ済み。2020年2月27日に取得。
- ↑ "tdb: メインページ" . tdb.samba.org .
- 1 2 Debroux, Lionel (2018年6月16日). "oss-security - DBMタイプのデータベースで遊ぶ..." openwall.com .
- 1 2 Surý, Ondřej (2014 年 6 月 19 日). "新しいプロジェクト目標: Berkeley DB を削除する (Jessie 以降)" . debian-devel (メーリングリスト). Debian .
参考文献
- ヘイゼル、フィリップ(2001)。Exim :郵便物転送代理店。オライリー。
- ラッド、エリック、オドネル、ジム(2001)。XHTML 、XML、Java 2 の使用:プラチナエディション。Que. ISBN 9780789724731。
- Kew, Nick (2007). 『Apacheモジュールブック:Apacheによるアプリケーション開発』 Prentice Hall Professional. ISBN 9780132704502。
- SDBMライブラリ(Apache)
- マシュー、ニール、ストーンズ、リチャード(2008)。「データベース」。『Linuxプログラミング入門』。Wiley。
- Olson, Michael A.; Bostic, Keith; Seltzer, Margo (1999). "Berkeley DB" (PDF) . Proceedings of the FREENIX Track:1999 USENIX Annual Technical Conference .