2017-09-07 9 views
0

は次のようなデータ構造を考えてみましょう:データ構造のインデックス

structure = { 
    1: {"a": "xy", "b": 123}, 
    2: {"a": "rt", "b": 222}, 
    3: {"a": "fd", "b": 111}, 
} 

我々はaの与えられた値によって、この構造で行を検索するとします。

リレーショナルデータベースでは、行aをインデックスに登録するだけで、操作が高速になります。

プログラミング言語および/またはプログラミングライブラリの「索引行」のサポートについてはどうですか(本格的なリレーショナルデータベースはサポートしていませんが、主にSQLのサポートなし)。どの言語やライブラリがこれをサポートしていますか?

私は上記のデータ構造のオブジェクトへの参照を使って追加の "マップ"データ構造を作成できますが、私の質問は手動で(どのキーでも新しいマップを作成せずに)この作業を自動化する方法は? (1つは、必要なハッシュとマップをすべて保持するオブジェクトを作成することですが、より簡単な方法はありますか?)

この例のデータ構造は小さく、検索にハッシュを必要としませんが、 。)

+1

最終的には、インデックスを作成するすべてのフィールドに対して別々のハッシュマップ(または同等のもの)を使用することになります。あなたが言うように、あなたはそれを明示的に行うことができます。私はあなたにこのような機能を提供するプログラミング言語に慣れていませんが、リフレクションをサポートするいくつかの言語でそれほど問題なく実装できます。ただし、索引作成後に索引フィールドが変更されないように注意する必要があります。 –

答えて

0

キー値がaのBツリーを使用します。 aの値に従ってBツリーのデータをソートします。データベース管理システムは、同じ方法でプライマリインデックスを実装します。データは、Bツリーのプライマリインデックス(またはプライマリキー)の順に物理的に格納されます。さらに、Bツリーをディスク上のメモリマップファイルに格納することもできます。これは、DBMSがプライマリインデックスを作成する方法です。