我有一个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是一个完全不同的话题。但为什么你会留下一行空键?这是没有意义的。 –
“但是你为什么要把一行钥匙留空?这没有任何意义。”你如何设计它,如果你只需要查找? –