首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Azure表存储进行大型查找

如何使用Azure表存储进行大型查找
EN

Stack Overflow用户
提问于 2017-07-19 09:43:30
回答 2查看 1.1K关注 0票数 1

我有一个有2GB散列的存储空间,我想用一个公共的Api来检查它。

用例

假设我想要创建一个API,来检查我的产品是否知道某个人。为了尊重个人隐私,我不想上传他的名字,会员身份等。因此,我决定只上传一个组合信息的散列,这将识别他。现在我有了2GB (6*10^7)的SHA256散列,并希望以疯狂的快速方式检查它们。

这个API应该托管在azure中。

在阅读了蔚蓝存储帐户的文档后,我认为azure表存储是正确的存储解决方案。我将base64哈希设置为分区键,并将行键保留为空

问题

  1. 首先,Azure表是工作的正确存储库吗?
  2. 会不会是:之间的性能不同?
    1. 分区键: base64散列,行键:空
    2. 分区键:‘上传Id',行键: empbase64散列

  1. 访问槽键的时间取决于表的大小吗?
  2. 检查分区键是否存在的最快方法是什么?我觉得我天真的第一次尝试并不是最好的方法。 if( Convert.ToBase64String(data.Hash)).AsEnumerable().Any()) members.Where(x=>x.PartitionKey == req.CreateResponse{ return req.CreateResponse(HttpStatusCode.OK,"Found“));} return {return req.CreateResponse(HttpStatusCode.NotFound,”不要找到Hash");}
  3. 如何上传2GB的散列?我想上传一个大文件,使用azure函数在每个256位后进行拆分,并将值添加到azure存储中。或者有什么更好的主意?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-19 12:06:44

我对此的看法是:

  1. 如果您需要的唯一查询是“检查是否存在现有散列”(如果需要,则检索其详细信息),那么表存储就是完美的匹配。关键查找是快速和廉价的,2GB是什么都不是。
  2. 哈希提供了最大的多样性,因此我将使用它作为分区键。行键可以是任何内容。如果Upload Id从未用于(范围)查找,则不要将其用于键。
  3. 使用适当的分区键,查找时间应该是恒定的。
  4. 如果您的意思是您需要检查用户哈希是否存在,只需按分区键+行键检索一行。这是最快的操作。请参见“检索单个实体”这里
  5. 表存储支持批处理插入。再说一遍,2GB并不多,你可能花了更多的时间来问这个问题,而不是你上传的时间:)
票数 3
EN

Stack Overflow用户

发布于 2017-07-19 17:13:56

我看到这是用Azure-函数标记的,所以我将添加Azure-函数,使您可以直接绑定到表存储。请参阅https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-table

您甚至可以直接绑定到特定的实体。function.json看起来应该是:

代码语言:javascript
复制
{
    "name": "<Name of input parameter in function signature>",
    "type": "table",
    "direction": "in",
    "tableName": "<Name of Storage table>",
    "partitionKey": "<PartitionKey of table entity to read - see below>",
    "rowKey": "<RowKey of table entity to read - see below>",
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45186779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档