如何在Azure表中存储联系人?

时间:2011-07-09 11:29:30

标签: azure azure-storage azure-table-storage

我系统的每个用户都可以拥有联系人。每个联系人都有详细信息,如姓名,地址,电子邮件,电话等。

您认为将此联系人存储在Azure表中是个好主意吗?我担心以下情况:

  • 如何搜索特定字段(如电子邮件或电话)?
  • 如何仅获取属于特定用户的联系人?
  • 如何按字段对联系人排序?

1 个答案:

答案 0 :(得分:1)

我认为联系人可能是存储在表存储中的理想选择 - 但前提是您可以对拥有者进行分区,而且从不真正需要在多个拥有用户之间进行搜索或聚合。

一种可能的设计是:

  • 将联系人与拥有用户一起存储为分区键,并将某些唯一字段存储为行键,但将字段作为每行中的列。
  

如何搜索特定字段(如电子邮件或电话)?

  • 然后,您可以要求表存储在分区内进行搜索 - 然后它将在该分区内进行扫描 - 对于任何单个分区,该分区不应该特别大或慢。
  

如何仅获取属于特定用户的联系人?

  • 这只是一个只通过分区键的简单查询
  

如何按字段对联系人排序?

  • 表存储的所有结果都按(partitionkey,rowkey)排序,因此要为用户排序联系人,您需要查询所有这些联系人,然后在您的Web或辅助角色中对它们进行排序。

其他设计当然是可能的 -

e.g。您可以将每个联系人存储在多个表中的多行中 - 这样您就可以在表存储中预先形成排序顺序。

e.g。您可以为每个用户使用单独的表而不是单独的分区键 - 这样做的好处是,当您删除用户时,您可以删除属于该用户的整个表。


注意......尽管可以使用表存储...实际上我现在似乎总是回到SQL Azure中 - 它的功能更强大且可预测(IMO)。当团队提供二级索引时,我可能会想要将它用于我的更多数据。