根据行数或大小选择Azure表分区键

时间:2014-04-24 14:09:09

标签: azure azure-table-storage nosql

我正在设计一个哈希算法,它将为azure表生成分区键。我考虑了2个场景:

  1. 根据行数生成密钥
  2. 根据数据大小生成密钥
  3. 解释:想象一下,我有300个实体要插入(请记住,这是一个非关系型商店,所以我们可以说它,10个客户,50个销售,240个销售商品)......为了平衡它们,我将使用2个分区键:K1和K2 在"行计数模式" 插入1将具有K1,插入2将具有k2,插入3-> K1,插入4-> k2等等...非常直接,并且大多数人都在做什么...... 如果我使用"数据大小" ,可以说第一个50kb将获得K1,51-100kb K2,101-150 K1,151-200 K2,这可能导致:使用K1插入1,2和3,使用K2插入4,使用K1插入5,使用K2插入6,7,8,9,10,11,12,13和14 ...

    我的问题是:搜索时,哪些" tatics"将实现最佳吞吐量?

    Edti1:
    我最担心的是分区和原始性能之间的不平衡。让我们进一步扩展并想象这是一个多租户应用程序。如果我选择Tenant Id作为分区密钥,我将不得不解决这样一个事实:当租户数据变大时,查询性能将比我选择Tenant Id + Month of the Sale之类的分区密钥更快地下降,因为在第二种情况我可以运行并行查询,例如" tenant1January"," tenant1February"," Tenant1Marchar" ...

1 个答案:

答案 0 :(得分:0)

要回答你的具体问题,我将不同意。

在设计表存储查询时,分区键是最重要的考虑因素。如果我正确理解了您的PK方案,那么为了获得您正在快速保存的任何信息,您需要知道它保存了多少其他行,或者知道所有其他数据的大小。

我会后退一步,思考如何获取这些数据,然后考虑你想要使用的PK和RK。