Azure表:表设计策略

时间:2017-04-17 06:08:04

标签: database-design azure-table-storage

我决定在两个Azure表设计策略之间为多个租户存储数据。

  1. 每个表都有一个表。因此,对于租户1,使其为租户2的instance_1具有instance_2。这方面的优点是
    • 租户数据彼此更加分离。
    • 删除租户更容易
    • 否。可索引密钥的增加。因为我不需要使用tenantId索引
    因为
    • 表格太多
    • 看起来不对。如果一切都相同,我们就不应该有单独的表
    • 表名将有租户ID(看起来不太好)
    • 如果我们不这样做有关租户Id的信息,那么我们需要搜索所有表格。为此,我们需要将所有表名存储在单独的表中
  2. 将分区密钥保留为租户ID,并将所有租户数据存储在一个名为Instances的表中。
    优点
    • 类似的数据结构驻留在类似的地方。
    • 每个租户都有分区
    • 更容易在整个表中搜索分区键所在的数据不知道(与每个租户的数据相比)。
在这种情况下,更好的设计策略是什么。

1 个答案:

答案 0 :(得分:0)

在我看来,根据如何使用表存储来选择哪种设计策略。

如果您不想搜索跨租户并在表格中频繁删除数据,或者您的搜索数据很少,我认为您可以选择第一个设计策略。

如果您想与多租户一起使用跨租户搜索查询并经常搜索,我建议您选择第二种设计策略。

注意:表扫描性能(交叉表扫描需要时间>全表扫描需要时间): enter image description here

此外,在考虑分区键和行键之前,我建议您首先考虑将获得哪个结果以及您将使用哪个查询。

根据查询,您可以考虑使用正确的分区键和行键。

更多细节,您可以参考以下文章: Azure Storage Table Design Guide: Designing Scalable and Performant Tables