2017-04-17 80 views
0

我決定在2個Azure表設計策略之間爲多個租戶存儲數據
Azure Table:表設計策略

  1. 每個表都有一個表。因此,對於租戶1,使租戶2的instance_1具有instance_2。此優點是
    • 租戶數據彼此更加分離。交叉租戶數據損壞的風險較小。
    • 刪除租戶更容易
    • 可索引密鑰的數量增加。由於我不必索引與tenantId

    缺點是這是
    • 太多表
    • 看起來不正確。如果一切都一樣,我們不應該有單獨的表
    • 表名將有租客Id(看起來不太好)
    • 如果我們沒有關於租戶Id的信息,那麼我們需要搜索所有表。爲此,我們需要將所有表名存儲在單獨的表中
  2. 將分區鍵保留爲租戶ID並將所有租戶數據存儲在一個名爲實例的表中。
    優點
    • 數據的相似結構駐留在相似的地方。
    • 每個租戶都有分區
    • 更容易在整個表中搜索分區關鍵字未知的數據(與每個租戶擁有數據相比)。
在這種情況下什麼是更好的設計策略。

+0

,因爲它沒有任何缺點的選項2顯然是更好的。你爲什麼問這個問題? –

+0

我不能想到任何缺點並不意味着這是更好的選擇。我需要幫助來決定如果我在選擇2時沒有犯任何錯誤。 – Nishant

+0

Azure Table數據建模和分區策略非常基於您的使用場景。次要問題是吞吐量和實體數量。所以你可以至少用你的用例,查詢需求來更新你的問題。 –

回答

0

在我看來,根據如何使用表格存儲選擇哪種設計策略。

如果您不想搜索跨租戶並刪除表中的頻繁數據或您的搜索數據很少,我想您可以選擇第一個設計策略。

如果您想與多租戶一起使用跨租戶搜索查詢並頻繁搜索,我建議您可以選擇第二種設計策略。

注:表掃描的性能(跨表掃描需要時間>全表掃描起飛時間): enter image description here

此外,考慮之前的分區鍵和行鍵,我建議你可以先考慮這導致你會得到和你將使用哪個查詢。

根據查詢,您可以考慮正確的分區鍵和行鍵。

更多細節,你可以參考下面的文章: Azure Storage Table Design Guide: Designing Scalable and Performant Tables