Azure表存储设计:每个实体和分区键的表

Azure表存储设计:每个实体和分区键的表,azure,azure-table-storage,Azure,Azure Table Storage,我已经构建了一个ATS应用程序,其中一组中等规模的实体实例(可能是50-1000个实体)属于某个客户 目前,我得到了以下设计: 每个实体类型都有自己的表。例如,有一个“客户”表存储所有客户。还有一个“东西”表,用来存储所有的东西 客户ID是实体的分区密钥。例如,属于客户ABC的东西属于分区ABC 我主要查询、更新和删除某个客户拥有的实体集。例如,我查询客户拥有的所有“东西”实例 这是组织行的好方法吗? 为每个客户提供一个表,存储其所有数据是否更好 提前感谢您您的问题中的两种备选设计之间的一个

我已经构建了一个ATS应用程序,其中一组中等规模的实体实例(可能是50-1000个实体)属于某个客户

目前,我得到了以下设计:

  • 每个实体类型都有自己的表。例如,有一个“客户”表存储所有客户。还有一个“东西”表,用来存储所有的东西

  • 客户ID是实体的分区密钥。例如,属于客户ABC的东西属于分区ABC

我主要查询、更新和删除某个客户拥有的实体集。例如,我查询客户拥有的所有“东西”实例

这是组织行的好方法吗? 为每个客户提供一个表,存储其所有数据是否更好


提前感谢您

您的问题中的两种备选设计之间的一个区别是,您将失去批处理操作支持,因为它们分布在不同的表中,因此您的当前解决方案会覆盖属于特定客户id的整个实体集。您没有提到关于您的需求的大量细节,但您可能会出现不一致的情况,例如从客户表中删除客户,但无法从相应的实体表中删除该客户实体,因为azure表存储仅支持在同一分区键上和同一分区内的原子批处理操作桌子然而,如果将所有实体放在同一个表中,客户id为PK,类别字段为RK,则可以对整个分区键运行批处理操作。需要注意的是,这种模式可能会随着时间的推移而使分区膨胀,并且您可能会遇到其他与性能相关的问题。。这个答案更像是信息性的,而不是决定性的。明确的答案需要查看您的全套需求、数据模型、常见用例、吞吐量目标等。

在表存储中组织数据有几种方式,可能每种方式都有自己的支持者。它还取决于例如“事物”数据的结构。如果有类别,这可能是事物表中一个很棒的分区键。如果是相对简单的数据,那么您的解决方案就可以了。简而言之:我们需要更多的信息来给出答案,但它仍然会给你一个主要基于观点的答案。