2017-07-13 87 views
0

我已經構建了一個ATS應用程序,其中一組中等規模的實體實例(可能是50-1000個實體)屬於某個客戶。Azure Table存儲設計:每個實體和PartitionKey的表

目前,我得到了以下設計:

  • 每個實體類型都有它自己的表。例如。有一個存儲所有客戶的「客戶」表。和一個存儲所有東西的'東西'表。

  • 客戶ID是實體的分區鍵。例如。屬於客戶ABC的東西屬於分區ABC。

我主要查詢,更新和刪除某個客戶擁有的實體集。例如。我查詢了客戶擁有的所有'事物'實例。

這是組織行的好方法嗎? 對於存儲所有數據的每個客戶有一張桌子會更好嗎?

預先感謝您

+2

表存儲中有幾種組織數據的風格,可能每種風味都有其自己的支持者。它還取決於例如「事物」數據的結構。如果有類別,這可能是一個事物表中的真棒分區鍵。如果它是相對簡單的數據,你的解決方案就好了。簡而言之:我們需要更多的信息來給出答案,但它仍然會給你一個主要基於意見的答案。 –

回答

1

一個在你的問題中2個替代設計之間的區別是,你失去了批量操作支持翻過整組屬於特定客戶ID與當前解決方案的實體,因爲它們分佈橫跨不同的桌子。您沒有提到有關您的要求的大量細節,但是您可能會導致不一致,例如從客戶表中刪除客戶,但無法從相應的客戶表中刪除該客戶實體,因爲天藍色表存儲僅支持相同的原子批處理操作分區鍵和同一個表內。而如果你把所有的實體放在同一個客戶ID爲PK的表中,並且可能是一個類別字段作爲RK,你可以在整個分區鍵上運行批量操作。警告的是,這種模式可能會隨着時間的推移而擴大你的分區,你可能會遇到其他性能相關的問題,所以......這個答案更像是信息而不是定義。明確的答案需要查看全套要求,數據模型,頻繁使用案例,吞吐量目標等。

相關問題