DBM(コンピューティング)


DBM_(computing)

 「DBM」コンピューティング 
は、データベースエンジンのファミリーについてです。その他の使用法については、
DBMを参照して
コンピューティングでは、DBMはライブラリおよびファイル形式であり、データへの高速なシングルキーアクセスを提供します。元のUnixのキー値データベースであるdbmは、 NoSQLシステムの初期の例です。

コンテンツ
1 歴史
2 実装
3 可用性
4 信頼性
5 も参照してください
6 参考文献
7 参考文献

歴史
元のdbmライブラリとファイル形式は単純なデータベースエンジンで、元々はKen Thompsonによって書かれ、1979年にAT&Tによってリリースされました。名前はDataBase Managerの3文字の頭字語であり、APIと機能を備えたデータベースエンジンのファミリを指すことも元のdbmから派生。
dbmライブラリは、単一のキー(主キー)を使用して任意のデータを固定サイズのバケットに格納し、ハッシュ手法を使用してキーによるデータの高速取得を可能にします。
使用されるハッシュスキームは拡張可能なハッシュの形式であるため、新しいバケットがデータベースに追加されるとハッシュスキームが拡張されます。つまり、データベースがほぼ空になると、データベースは1つのバケットで始まり、いっぱいになると分割されます。結果として得られる2つの子バケットは、いっぱいになるとそれ自体が分割されるため、キーが追加されるとデータベースが大きくなります。
dbmライブラリとその派生物は、プレリレーショナルデータベースであり、ディスク上のハッシュテーブルとして実装された連想配列 を管理します。実際には、クエリの接続と準備のオーバーヘッドを必要としないため、キーによってアクセスされる高速ストレージのより実用的なソリューションを提供できます。これは、通常、一度に1つのプロセスでしか書き込み用に開くことができないという事実とバランスが取れています。エージェントデーモンは複数のプロセスからの要求を処理できますが、IPCオーバーヘッドが発生します。

実装
元のAT&T dbmライブラリは、その後継の多くの実装に置き換えられました。注目すべき例は次のとおりです。
ndbm( “new dbm”)、いくつかの新機能を備えた元のdbmに基づいています。
GDBM( “GNU dbm”)、ndbm機能と独自のインターフェースを実装するライブラリのGNUリライト。また、データの一貫性を保証するためのクラッシュトレランスなどの新機能も提供します。
sdbm( “small dbm”)、dbmのパブリックドメインの書き換え。これは、 PerlおよびRubyの標準ディストリビューションの一部です。
qdbm ( “Quick Database Manager”)、東京/京都内閣と同じ技術の多くを採用した高性能dbm 。彼らがキャビネットに移動する前に同じ著者によって書かれました。
tdb( “Trivial Database”)、複数のライターをサポートするSambaによって使用される単純なデータベース。gdbmベースのAPIが
Berkeley DB、1991年にndbmをSleepycat Software(現在はOracle )に置き換え、 BSDでのAT&TUnixの著作権を回避するために作成されました。並列処理、トランザクション制御、ハッシュ、Bツリーストレージなどの多くの拡張機能を備えています。
LMDB:バークレースタイルのAPIを使用したCでのコピーオンライト メモリマップ B +ツリーの実装。
次のデータベースはdbmに着想を得ていますが、dbmインターフェイスを直接提供していませんが、ラップするのは簡単です。
cdb( “constant database”)、Daniel J. Bernsteinによるデータベース、データベースファイルは作成および読み取りのみが可能で、変更することはできません。
京都内閣と東京内閣の後継者であるApache2.0のライセンスを受けたTkrzw
WiredTiger:従来の行指向および列指向のストレージを備えたデータベース。

可用性
2001年の時点で、DBMのndbm実装はSolarisとIRIXで標準でしたが、gdbmはLinuxで広く使用されています。Berkeley DBの実装は、一部の無料のオペレーティングシステムでは標準でした。 2013年にBerkeleyDBのライセンスがGNUAGPLに変更された後、DebianのようなプロジェクトはLMDBに移行しました。

信頼性
多くのDBMファミリデータベースに対する2018AFLファジングテストでは、データベースファイルの破損または無効化に関して、実装で多くの問題が明らかになりました。 Daniel J.Bernsteinによるfreecdbのみがクラッシュを示しませんでした。gdbm、tdb、およびlmdbの作成者は、迅速に対応しました。Berkeley DBは、他の問題の膨大な量のために遅れをとっていました。ライセンスの変更により、オープンソースソフトウェアユーザーは古いバージョンにロックバックされるため、修正はオープンソースソフトウェアユーザーには関係ありません。

も参照してください
組み込みデータベース
フラットファイルデータベース ISAM Key-Valueデータベース
モバイルデータベース NoSQL セマフォ(プログラミング)

参考文献
^ Kew 2007、p。80:「DBMは、高速キー検索の必要性が認識されたコンピューティングの初期の頃から存在していました。元のDBMは、データへの高速で拡張性の高いキーアクセスのためのUNIXベースのライブラリおよびファイル形式です。続いて(順番に)NDBM( ‘new DBM’)、GDBM( ‘GNU DBM’)、Berkeley DBが続きます。これは、これまでで最も進んだ、現在活発に開発されている唯一のDBMです。 NDBM以降のDBMは、Apacheを含むほとんどのプログラムで使用されているものと同じコア機能を提供します。最小限の実装のSDBMもAPRにバンドルされており、他のDBMと一緒にアプリケーションで使用できます。NDBMは現在は古いものですが、Newという名前の都市のように紀元前600年頃のギリシャ人による町(「ネアポリス」)であり、現在でもナポリと呼ばれています。これはベースラインDBMのままです。NDBMは、Apache1.xバージョンなどの初期のApacheモジュールで使用されていました。GDBMmod_auth_dbmとmod_rewriteBerkeleyDBの両方がNDBMエミュレーションを提供します。 、およびLinuxディストリビューションには、これらのエミュレーションのいずれかが含まれています。ライセンス上の理由から除外されている「実際の」NDBMのe。残念ながら、さまざまなファイル形式には完全に互換性がなく、データベースのロックに関する動作には微妙な違いがこれらの問題により、Linuxユーザーの安定した流れがApache1.xのDBMに関する問題を報告するようになりました。」 ^ Hazel 2001、p。500:「最も一般的な形式はDBMと呼ばれます。Unixの最新バージョンのほとんどにはDBMライブラリが標準でインストールされていますが、一部の古いシステムには当てはまりません。最も一般的な2つのDBMライブラリはndbm( SolarisおよびIRIX)およびBerkeley DBバージョン2または3(いくつかの無料のオペレーティングシステムで標準)。Eximは、これらの両方と、古いBerkeley DBバージョン1、gdbm、およびtdbをサポートします。」 ^ Ladd&O’Donnell 2001、pp。823–824:「ほとんどのUNIXシステムにはある種のDBMデータベースがDBMはキーと値のペアで構成されるデータファイルを管理するライブラリルーチンのセットです。DBMルーチンはその方法を制御します。ユーザーはデータベースに情報を入力して取得します。これは情報を保存するための最も強力なメカニズムではありませんが、DBMを使用すると、フラットファイルを使用するよりも高速に情報を取得できます。ほとんどのUNIXサイトはDBMライブラリの1つを使用しているため、ツール情報をDBMデータベースに保存する必要がすぐに利用できます。UNIXシステムとほぼ同じ数のDBMライブラリが存在します。これらのライブラリのほとんどは相互に互換性がありますが、基本的にはすべて同じように機能します…利用可能な最も人気のある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マニュアル。
^ 「元のNoSQLKey-Valueストアのクラッシュプルーフ」。
^ yigit、ozan。「sdbm.bun」。cse.yorku.ca 。
^ 「クラスSDBM」。Ruby2.4.0のドキュメント。RubyにはSDBMのソースコードが付属していますが、DBMおよびGDBM標準ライブラリは外部ライブラリとヘッダーに依存していることに注意して
^ 「QDBM:クイックデータベースマネージャー」。fallabs.com。2006年。
^ “tdb:メインページ”。tdb.samba.org。
^ Debroux、Lionel(2018年6月16日)。「oss-security-DBMタイプのデータベースで楽しい…」openwall.com。
^ abSurý 、 Ondřej(2014年6月19日)。「新しいプロジェクトの目標:Berkeley DB(post jessie)を取り除く」。debian-devel(メーリングリスト)。Debian。

参考文献
ヘーゼル、フィリップ(2001)。Exim:メール転送エージェント。オライリー。
ラッド、エリック; オドネル、ジム(2001)。XHTML、XML、およびJava 2の使用:PlatinumEdition。キュー。ISBN 9780789724731。
キュー、ニック(2007)。Apache Modules Book:Apacheを使用したアプリケーション開発。プレンティスホールプロフェッショナル。ISBN 9780132704502。
SDBMライブラリ@Apache
マシュー、ニール; ストーンズ、リチャード(2008)。「データベース」。Linuxプログラミングの開始。ワイリー。
オルソン、マイケルA。; ボスティック、キース; セルツァー、マーゴ(1999)。「BerkeleyDB」 (PDF)。FREENIXトラックの議事録:1999USENIX年次技術会議。