我已经构建了一个ATS应用程序,其中一组中型实体实例(可能是50-1000个实体)属于某个客户。
目前,我有以下设计:
每个实体类型都有自己的表。例如。有一个'客户'存储所有客户的表。一个'东西'存储所有东西的表。
客户ID是实体的分区键。例如。属于客户ABC的东西属于分区ABC。
我主要查询,更新和删除某个客户拥有的实体集。例如。我查询所有的事情'客户拥有的实例。
这是组织行的好方法吗? 为每个存储所有数据的客户提供一张表会更好吗?
提前谢谢
答案 0 :(得分:1)
您问题中的两个替代设计之间的一个区别是,您使用当前解决方案丢失了属于特定客户ID的整个实体集的批处理操作支持,因为它们分布在不同的表中。您没有提及有关您的要求的大量详细信息,但您最终可能会出现诸如从客户表中删除客户但不能从相应的权利表中删除客户实体的不一致性,因为azure表存储仅支持对其进行原子批处理操作分区键和同一个表内。如果您将所有实体放在客户ID为PK的同一个表中,并且可能是RK的类别字段,则可以在整个分区键上运行批处理操作。需要注意的是,这种模式可能会随着时间的推移而破坏您的分区,并且您可能会遇到其他与性能相关的问题。所以这个答案更像是信息而不是确定性。明确的答案需要查看您的全套需求,数据模型,常用用例,吞吐量目标等。