何組ものセットがあると仮定します。これらのセットのそれぞれのドメインは同じです。それは有限で離散的でもあります。したがって、各セットは、比較的短い長さ(例えば:1024)のビットフィールド(例えば:0000100111 ...)として記憶されてもよい。すなわち、ビットフィールドのビットXは、(1024個の可能なアイテムのうちの)アイテムXが所定のセットに含まれるか否かを示す。同じドメインを持つ大きな集合の集合に対して部分集合のテスト操作を行う最速の方法
ここで、データストア内のどのセットがYをサブセットとして設定しているかというクエリに効率的に応答するストレージ構造とアルゴリズムを考案したいと考えています。セットY自体はデータストアに存在せず、実行時に指定されます。
これを解決する最も簡単な方法は、YのビットフィールドにAND結果が一致するものを1つずつ取り出して、セットYのビットフィールドとビットセットを1つずつANDでANDすることです。
これをスピードアップするにはどうすればよいですか?ツリー構造(インデックス)やスマートなアルゴリズムがあります。これは、すべてのストアドセットのビットフィールドとANDを取らずにこのクエリを実行できるようにするものですか?
このような操作をすでにサポートしているデータベースは、大量の集合でですか?
使用しているデータベースのタイプは何ですか?独自のフォーマット? SQLサーバー? –
DBの選択は、巨大なセットに対して与えられたセット操作を効率的にサポートするかどうかによって異なります。 SQL DBSのどれもが必要なサイズに拡大することはありません(RDMS DBはこの問題のための貧しい選択です)。ですから、私が自分で実装する専用のDBかDBのどちらかを選択してください。 – niktech
解決策はありますか?このタスクのためのよく知られたデータベースがないことは奇妙です。 – actual