我可以在Azure表存储中搜索吗?

won*_*rld 2 azure-storage

我想存储数千人的地址。地址是典型的名称,地址,城市等...我想搜索名字,姓氏,城市等...

我可以使用Azure Table Storage并使用其API来做到这一点吗?

Rob*_*gan 5

如果您不介意支付高额的月费,则有关使用Azure搜索为表编制索引的注释非常好。

要回答您的问题,您可以使用Azure存储API进行搜索,但是在最初构建Azure存储表时,您必须非常想知道要搜索哪些字段。

您必须使用的唯一“索引”是分区键和行键。具有相同分区键的实体存储在一起,并且如果分区不大,则可以有效地进行搜索。由于Azure表不强制执行架构,因此您实际上可以将相同的数据存储在不同的分区下,以使搜索更加容易。

假设您的地址为Johnny Appleseed 839 Sherman Oaks Drive Knoxville,TN37497。您可以使用分区键在同一表中复制此数据:

  • citystate-knoxville_tn_37497
  • 名字-appleseed_johnny
  • 街头谢尔曼·奥克斯

当用户尝试搜索时,请根据用户输入的条件选择一个分区,然后Azure将执行完整分区扫描以查找所有匹配的记录。您还需要处理延续令牌。

如果您将分区内的行键指定为搜索条件的一部分,则还可以限制为部分分区扫描。Azure将仅扫描可能与行键匹配的行。

  • 这是关于根据您不同的查询需求对数据和数据模型进行非规范化的很好的答案。不幸的是,您还需要处理一件事,那就是一致性(仅当您关心这一点时:)Azure 不提供对不同分区键上的原子批处理操作的现成支持。看看这里:https://azure.microsoft.com/en-us/documentation/articles/storage-table-design-guide/#eventually-consistent-transactions-pattern (2认同)