我有一個2 GB散列的存儲,我想用公共Api來檢查。如何使用Azure表存儲器進行大量查找
使用案例
比方說,我想創建它檢查是否一個人被我的產品聞名的API。 尊重個人隱私我不想上傳他的名字,會員ID等。 所以我決定只上傳一個散列的組合信息,它將識別他。 現在我有2 GB(6 * 10^7)的SHA256哈希值,並想檢查他們在瘋狂快速的方式。
此API應該以azure託管。
未讀完Azure存儲帳戶的文檔後,我認爲Azure表存儲是正確的存儲解決方案。 我將base64散列設置爲分區鍵,並將行鍵保留爲空。
問題
- 首先,是Azure Table中作業的正確的存儲?
- 會不會是與不同的性能:
- 分區鍵:BASE64散,行鍵:空
- 分區鍵: '上傳ID',行鍵:empbase64哈希
- 請問訪問槽鍵的時間取決於表的大小?
什麼是檢查分區密鑰是否存在的最快方法? 我覺得我天真的第一次嘗試並不是最好的方法。
如果(members.Where(X => x.PartitionKey == Convert.ToBase64String(data.Hash))。AsEnumerable()。在任何()){ 返回 req.CreateResponse(HttpStatusCode.OK,「發現哈希「); } else { return req.CreateResponse(HttpStatusCode.NotFound,「Do not found Hash」); }
如何上傳2 GB的散列? 我想上傳一個大文件,並使用azure函數在每個256位之後分割並將值添加到azure存儲。或者更好的想法?
很抱歉的壞格式的代碼塊,我無法正確格式化。 –
#1沒有正確的答案。如果您正在進行分區掃描或表掃描,您的查詢將隨着您的表的增長而絕對變慢(#3)。 #4不能沒有表掃描(或您跟蹤另一個表中的所有分區鍵)。 #5是一個完全不同的話題。但爲什麼你會留下一行空鍵?這是沒有意義的。 –
「但是你爲什麼要把一行鑰匙留空?這沒有任何意義。」你如何設計它,如果你只需要查找? –