2017-02-22 63 views

回答

3

如果您不介意支付沉重的月租费,那么使用Azure Search为您的表编制索引的评论非常好。

要回答您的问题,您可以使用Azure存储API进行搜索,但是最初构建Azure存储表时,您必须非常有意地搜索要搜索的字段。

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

假设你有地址约翰尼苹果核战839谢尔曼奥克斯驱动诺克斯维尔37497.您可以与分区键复制在同一个表这样的数据:

  • citystate-knoxville_tn_37497
  • 名称appleseed_johnny
  • 街道sherman_oaks

当用户尝试搜索,选择基于用户输入的标准分区,然后将天青PERFO rm进行完整的分区扫描以查找所有匹配的记录。你还需要处理连续令牌。

如果您在分区中指定行键以成为搜索条件的一部分,那么也可以限制为部分分区扫描。 Azure将只扫描可能与行密钥匹配的行。

+1

这是根据您的不同查询需求对数据和数据模型进行非规格化的好回答。不幸的是,需要处理的还有一件事情是一致的(只有当你关心的时候:) Azure不提供对不同分区键的原子批处理操作的支持。看看这里:https://azure.microsoft.com/en-us/documentation/articles/storage-table-design-guide/#eventually-consistent-transactions-pattern –

+0

杜杜,你是绝对正确的。感谢您的补充。 –

1

Azure存储表只有两个索引属性:PartitionKey & RowKey。查询非索引属性将触发整个表扫描。如果您只需要存储数千条记录,由于其低价格,Azure存储表是一个不错的选择。但是,如果你要存储更多的记录,我建议你选择SQL Azure,因为它支持高级索引查询。

相关问题