現在、Mysql に 3 列のテーブルがあります。
DocId Int
Match_DocId Int
Percentage Match Int
ドキュメント IDを、ほぼ重複しているドキュメント IDとパーセンテージと共に保存しています。これは、2 つのドキュメントがどれだけ一致しているかを示します。
したがって、1 つのドキュメントに 100 個のほぼ重複がある場合、その特定のドキュメントには 100 行あります。
現在、このテーブルには合計 1,400 万のドキュメントに対して 10 億を超えるレコードがあります。ドキュメントの総数は 3,000 万に達すると予想しています。つまり、ほぼ重複した情報を格納するテーブルには、50 億行以上の行があり、それ以上になる可能性があります。(ほぼ重複するデータは、ドキュメント セット全体と比較して指数関数的に増加します)
ここに私が持っているいくつかの問題があります:
- mysql テーブル内のすべてのレコードを取得するのに時間がかかります。
- クエリにも多くの時間がかかります。
私が実行するいくつかのクエリを次に示します。
特定のドキュメントにほぼ重複があるかどうかを確認します。(これは比較的高速ですが、それでも遅いです)
特定のドキュメント セットについて、各パーセンテージ範囲 (パーセンテージ範囲は 86 ~ 90、91 ~ 95、96 ~ 100) に近い重複がいくつあるかを確認します。
このクエリには多くの時間がかかります。ほとんどの場合、失敗します。パーセンテージ列でグループ化します。
これは、利用可能な NoSql ソリューションで管理できますか?
データのクエリ中にグループごとのサポートが必要なため、NoSql ソリューションの SQL クエリのサポートには懐疑的です。