我有很多SQL數據庫,每個用大量的表相關的行。這些主要具有隨機生成的Guids作爲行主鍵。我想要一種方法來查找與給定的Guid關聯的表格和行數據(沒有類型信息)。快速的方法來找到一個給定的Guid跨多個SQL數據庫和表
所以我正在考慮設立爲每個表布隆過濾器和它緩存起來。我會首先測試Guid對過濾器,然後查詢數據庫或緩存中的數據(或假陽性)。但是我從來沒有和他們合作過,所以不知道他們的表現特徵是什麼樣子,以及他們是否會成爲我的問題的有效解決方案。
數據庫特點:
〜100臺之間進行選擇。有些人比其他人更有可能被選中。
沒有行被徹底刪除(除非錯誤後手動清理),所以我不擔心不能夠從布隆過濾器中刪除信息。
更多的結構比數據!一切都適合一臺服務器。
這是一個值得研究的解決方案嗎?我是否更願意緩存更傳統的查找結構?如果我去布盧姆,鑑於Guids是非常獨立的輸入,是否有任何散列函數的捷徑?
你是說你寧願在應用程序代碼中實現Bloom filter而不是在系統表中查找外鍵依賴關係? (當然,並不保證每次使用某個鍵或GUID都是通過外鍵引用發生的,但仍然是這樣。) –
「系統表」是否意味着我可以查詢數據庫元數據?我不知道我在這些桌子旁邊的方式,所以請賜教。很有可能我關心的每個GUID引用的數據片段都出現在外鍵中。 – sh54
每個SQL數據庫都至少有一種查詢元數據的方法。 「標準」方式是使用INFORMATION_SCHEMA視圖。但是,由於這些通常是建立在系統表之上的視圖,所以有些平臺還允許您直接查詢基礎表。 (不知道你在使用什麼平臺,但你可能想用它來標記你的問題。) –