私はたくさんのSQLデータベースを持っています。これらは主に行主キーとしてランダムに生成されたGuidを持っています。私は、与えられたGuid(型情報なし)に関連するテーブルと行のデータを見つける方法が欲しいです。多くのSQLデータベースとテーブルにわたって、特定のGuidに関連付けられた行を見つけるための速い方法
私は各テーブルのBloomフィルタを設定し、どこかにキャッシュすることを検討していました。私は最初にフィルタに対してGuidをテストした後、データベースまたはキャッシュにデータを問い合わせます(または偽陽性の場合)。しかし、私は以前に彼らと仕事をしていないので、彼らのパフォーマンスの特性がどのようなものか、そして私の問題に対する効果的な解決策であるかどうかはわかりません。
データベースの特性:
〜100の表は、のどちらかを選択します。いくつかは他よりもはるかに選択される可能性が高い。
バグの後で手動でクリーンアップしない限り、行が削除されないため、ブルームフィルタから情報を削除できないと心配していません。
データ以外の構造!すべてが1つのサーバーに収まります。
これは調査する価値のある解決策ですか?より一般的なルックアップ構造をキャッシュすることを強くお勧めしますか?私がBloomに行くなら、Guidsは非常に独立した入力であるので、ハッシュ関数へのショートカットはありますか?
システムテーブルの外部キーの依存関係を調べるよりも、アプリケーションコードにBloomフィルタを実装する方がいいですか? (GUIDかどうかにかかわらず、キーを使用する毎に外部キー参照が行われるという保証はありません) –
'システムテーブル'とは、クエリできるデータベースメタデータがあることを意味しますか?私はこれらのテーブルの周りに私の道を知らないので、私を啓発してください。気になるデータのすべてのGUIDが外部キーに表示される可能性があります。 – sh54
すべてのSQLデータベースには、少なくとも1つのメタデータを照会する方法があります。 「標準的な」方法は、INFORMATION_SCHEMAビューを使用することです。しかし、これらは通常システム・テーブルの上に構築されたビューなので、プラットフォームによっては、基礎となるテーブルを直接照会することもできます。 (使用しているプラットフォームはわかりませんが、質問にタグを付けることができます) –