私はPostgreSQLが初めてです。構築する必要があるハイブリッド データベースについて、非常に珍しい要件があります。私が見たモジュールから、次のことが可能であるように思えます。
テーブルに実際にデータを追加せずに、キー - [値] をインデックスに追加できるようにする必要があります。簡単に言えば、理想的には btree (ルックアップ速度) として、キー [値] ストアが必要です。インデックス構造が理想的です。おそらく、別の構造がこれを行うでしょう。
具体的には、次のようなものを保存したいと思います。
KEY [IDs]
Blue 10, 20, 23, 47
Green 5, 12, 40
このデータを保存してインデックスを作成するオーバーヘッドは必要ありません。いわば「インデックス付けされているが保存されていない」データが必要なだけです。
同様に重要なのは、これらの構造を照会してデータ (ID) を取得し、ID に対して INTERSECTS などを実行したり、キーに対して IN、BETWEEN、= などを実行したりできることです。
お察しのとおり、最終的な目標は ID の最終的なリストであり、それがクライアントに送信され、必要に応じて検索されます。
編集
私がしたくないのは、すべての値のキーを記録することです。上記の例を使用すると、{Blue, 10}、{Blue, 20} などは保存したくありません。{Blue, [10, 20, 23, 47]} を保存したいのです。
これを従来のテーブルとして保存すると、この重複の問題を回避する方法がわかりません。
青 [10, 20, 23, 47]} をもう一度見てみると、これは技術的には、ID (10, 20, 23, 47) が値としてマークされ、親キーが「青」である単一の btree にすぎません。キーとしてマークされています。
このデータ型の不一致は単一のツリーでは厄介になる可能性があるため、理想的な解決策は「[btrees] in a btree」であると思います。ここで、「btree」がキーで、[btrees] は a の値の各グループの btree です鍵。