0

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

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

因此,如果我将那个学生从任何课程的 azure 表中拉出来并更新它,我希望我能获得任何其他课程请求的更新版本。

Azure 如何处理这个问题,我需要做些什么来获得我想要的功能吗?

4

1 回答 1

2

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

如果你更新一个,它不会对另一个产生影响。

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

  1. 标准化。在关系数据库领域,这是标准做法。在每个“课程”中,您只会引用Student1。在“学生”表中,每个学生只会出现一次。
  2. 自己维护非规范化方案。因为 Windows Azure 表中没有跨分区事务,所以这很棘手。我建议使用队列...每个更改(“将 Student1 的地址更新为 foo”)都需要进入队列,并且仅在完成所有更新后(跨所有相关课程)才删除队列消息。这样,如果您的流程在更新学生的过程中终止,则可以稍后再接手并完成工作。
于 2012-06-24T18:29:50.240 回答