データベースのドキュメントの公式ウェブサイト:オラクルのBerkeley DB
データベースのアクセス方法 | 説明 |
---|---|
Bツリー | Bツリーアクセス方法は、一種のバランスの取れたツリー構造を達成することです。木、挿入や削除はO高さが葉層のページへのルートからBツリーである(高さ)の時間を必要とし、検索します。高さの上限は、キーbase_bページの最小数であるログbase_b Nであり、そしてNは、格納されたキーの総数です。障害は、半分だけのページをBツリーにデータを引き起こす可能性があります。DBはそう命じた(またはその逆の順序)は、ほぼ全ページ・スペースの使用率が得られ、最良のケースに挿入されています。 |
ハッシュ | で説明したようにハッシュデータ構造にアクセスする方法は、拡張された線形ハッシュの実装されている「線形ハッシュ:テーブルやファイルに対処するための新しいツールを」 |
ヒープ | ヒープアクセス方法レコードは書類の山に格納されています。記録によってのみ参照され、ページオフセットは、その書かれています。レコードはBツリーよりもスペースをより効率的に使用することができ論文、レコードを削除するので、圧縮なし、の山で書かれているので。ヒープのアクセス方法は、特にこれらのシステムの場合には、ディスクスペースに制約のあるプラットフォームに適して作成するために、多数のレコードを実行し、削除操作されています。 |
キュー | キーとして固定長レコードの論理レコード番号を持つキューストレージアクセス方法。すぐに尾を挿入するように設計されており、キューとリターンの記録ヘッドから取り外すことを特別消費カーソル操作を持っています。レコードレベルのロックを使用してキューのアクセス方法 |
RECN | キーストアの固定長と可変長レコード、および必要に応じて平文(バイトストリーム)ファイルでサポートされているような論理レコード番号にRECNOアクセス方法。 |
アクセス方法を選択します
最終的には、パフォーマンステストの2つのアクセス・メソッドを使用して、アプリケーションのために右であるかを決定するための唯一のアクセス方法は、することができます。有効にするために、このパフォーマンステストは、かなりの生産ワークロードを使用する必要があります。
言い換えれば、ある時点で、あなたは絶対にBツリーを使用しなければならないこと:
-
あなたはバルクの配置と取得操作を使用したい場合。
-
クラスタ・データベースのソート順は、あなたにとって重要である場合。
-
あなたはレコードを作成するためにカーソルを使用することができるようにしたい場合。
-
あなたが複数のスレッドがある場合は/プロセスは、新しいレコードを作成し、効果的にこれらのレコードを横断するためにカーソルを使用することができるようにしたいされています。
しかし、これらの制限に加えて、機能はあなたがBツリーより良いアプリケーションのヒープを疑うする可能性があり、いくつかのアプリケーションがあります。彼らは以下のとおりです。
-
あなたのアプリケーションは、リソースに制約のある環境で実行されます、あなたは、データベースファイルのサイズにハード制限を設定します。
-
あなたは、レコードの作成と削除の数が同じ程度のデータベースファイルのディスク領域の成長、およびアプリケーションが実行を制限したいです。
正しいページにソートしてBtreeの必要性は、新しいレコードに挿入されます。この操作は、複数のページを読む必要があります。ヒープデータベースは、単にキャッシュで見つけることができるすべてのスペースを空白ページを再利用することができます。挿入集中型のアプリケーションは、多くの場合、特にデータベースのサイズの増加に伴って、Bツリーヒープ効率の高いよりもはるかに多くを見つけるでしょう。
小さなデータセット、またはBツリーハッシュアクセス方式についての場合のアプリケーションとデータアクセスパターンに関する情報がない場合に十分です。キャッシュされたデータよりも大きいために、一般的にBツリーアクセス方法をお勧めします。あなたは本当に大きなデータを持っている場合は、ハッシュのアクセス方法は、より良い選択かもしれません。ユーティリティは、あなたのキャッシュを監視しているdb_statは、それを実装する方法のための便利なツールです。
サンプルコード
HashDatabaseConfig bTreeDatabaseConfig = new HashDatabaseConfig();
//文件不存在则创建
bTreeDatabaseConfig.Creation = CreatePolicy.IF_NEEDED;
//页大小
bTreeDatabaseConfig.PageSize = 512;
//缓存大小
bTreeDatabaseConfig.CacheSize = new CacheInfo(0, 64 * 1024, 1);
//hash 类型的数据库
HashDatabase bTreeDatabase = HashDatabase.Open("file.db", bTreeDatabaseConfig);
string content = "HelloWorld";
DatabaseEntry key = new DatabaseEntry(BitConverter.GetBytes(12));
DatabaseEntry value = new DatabaseEntry(Encoding.ASCII.GetBytes(content));
bTreeDatabase.Put(key, value);
Console.WriteLine("写入成功");
KeyValuePair<DatabaseEntry, DatabaseEntry> pair = bTreeDatabase.Get(key);
Console.WriteLine("读取写入");
Console.WriteLine(Encoding.ASCII.GetString(pair.Value.Data));
bTreeDatabase.Close();
必要なライブラリのダウンロードここDOTNET DLLライブラリを、もう一方はそれを自分でコンパイルし、ダウンロードする公式サイトに行くことができます。