Azure表存储与不同的PartitionKey但相同的对象?

时间:2012-06-24 17:57:45

标签: azure-table-storage

如果我有一个对象'学生',它将与2个'课程'对象相关联,我想我需要首先使用分区键'Class1_Student1'将学生添加到azure表中,然后再使用'Class2_Student1 ”。

考虑到这是除PartitionKey之外的相同Student对象,这是azure中的重复对象吗?或者以某种方式识别(通过RowKey可能?)作为同一个对象?

因此,如果我将该学生拉出任何课程的azure表并进行更新,我希望我能获得任何其他课程申请的更新版本。

Azure如何解决这个问题,我需要做些什么才能获得我想要的功能?

1 个答案:

答案 0 :(得分:2)

在Windows Azure表中,实体的标识是其分区键和行键,因此对于Windows Azure,您有两个完全不相关的学生。

如果你更新一个,它将对另一个没有影响。

我可以想出两种策略来获得我认为你想要的东西:

  1. 正常化。在关系数据库世界中,这是标准做法。在每个"课程中,"你只需要一个引用到Student1。在一个"学生"表,每个学生只会出现一次。
  2. 自己维护非规范化方案。由于Windows Azure表中没有跨分区事务,因此这很棘手。我建议使用队列...每次更改("更新Student1' s地址为foo")需要进入队列,队列消息只在 all 已完成更新(所有相关课程)。这样,如果您的流程在更新学生的过程中死亡,则可以选择并稍后完成工作。