2011-01-24 32 views
0

我的實體是鍵值對。 90%的時間我會根據關鍵字檢索實體,但是有10%的時間我也會進行反向查找,即我會按價值進行搜索並獲取關鍵字。如何爲已具有唯一屬性的表選擇Azure表ParitionKey和RowKey

關鍵和價值都保證是唯一的,因此他們的組合也保證是唯一的。

使用Key作爲PartitionKey和Value作爲RowKey是否正確?

我相信這也將確保我的數據在服務器之間完美平衡,因爲ParitionKey是唯一的。

上述決定是否存在問題? 在任何情況下,使用硬編碼分區密鑰是否可行? I.e所有行都具有相同的分區密鑰?並保持RowKey獨特?

回答

7

是可行的,是的,但取決於您的數據的大小,我不太確定這是一個好主意。當您在分區鍵上查詢時,表格存儲可以直接轉到確切的分區並檢索所有記錄。如果您單獨在Rowkey上進行查詢,則表存儲必須檢查該表是否存在於該表的每個分區中。所以如果你有1000個鍵值對,用你的密鑰搜索將會讀取一個分區/行。如果您單獨通過您的值進行搜索,它將讀取所有1000個分區!

我遇到類似的問題,我解決了這2種方式:

  1. 有2個不同的表,一個與partitionKey爲您的鑰匙,其他與你的價值作爲partitionKey。存儲很便宜,所以複製數據不應該花費太多。 (我最後做了什麼)如果你基於唯一鍵有效地返回單個實體,只需將它們粘貼到Blob中(像點1一樣分區和旋轉),因爲你不需要遍歷一個表,所以不要。

相關問題