2016-08-03 69 views
0

我想在行中存儲一個值:guid。但我必須設置Pair:PartitionKey和RowKey,所以我的配對是: 「guidValue」,some_guid 什麼應該是PartitionKey:guid或const字符串?Azure Table:在Azure表中存儲guid的最佳性能是什麼?

所以結構應該看起來像這樣:

PartitionKey: "guidValue" 
RowKey: 951FE9AE-50FA-48F6-96C8-81D10271E36D 

PartitionKey: "guidValue" 
RowKey: 951FE9AE-50FA-48F6-96C8-81D10271E37D 

PartitionKey: "guidValue" 
RowKey: 951FE9AE-50FA-48F6-96C8-81D10271E38D 

...

或類似的:

PartitionKey: 951FE9AE-50FA-48F6-96C8-81D10271E36D 
RowKey: "guidValue" 

PartitionKey: 951FE9AE-50FA-48F6-96C8-81D10271E37D 
RowKey: "guidValue" 

PartitionKey: 951FE9AE-50FA-48F6-96C8-81D10271E38D 
RowKey: "guidValue" 

我的方案是:我保存一次GUID並多次閱讀。

回答

1

你的閱讀場景是什麼?列出所有現有的GUID?或者檢查一個GUID的存在?您是否想通過一個請求編寫多個GUID以節省寫入的交易成本並使寫入性能更好?

第一個選項將使您能夠使用EntityGroupTransaction批量插入GUID,但只有一個分區鍵的表無法在Azure存儲後端的多個服務中進行負載平衡。如果您想要批量插入GUID並且總GUID數量不是太多,我建議您選擇選項1;否則,選項2更好。

+0

我的方案是:檢測duplicate.guid。 一個服務將一個一個地保存到表中。其他服務將檢查表中是否存在該GUID –

+0

如果是,則由於您不需要批處理操作,所以選項2是您的正確選擇。 –

1

PartitionKey影響每個存儲服務的負載均衡和可伸縮性。

如表實體中的https://azure.microsoft.com/en-us/documentation/articles/storage-scalability-targets/#partitions-in-azure-storage的描述:

一個實體的分區鍵是帳戶名+表名+分區密鑰,其中分區鍵是所需的用戶定義PartitionKey屬性的值爲實體。具有相同分區鍵值的所有實體都分組到相同的分區中並由相同的分區服務器提供服務。這是設計應用程序時需要了解的重要一點。您的應用程序應該平衡跨多個分區傳播實體的可擴展性優勢和單個分區中分組實體的數據訪問優勢。

,另外,

,如果你想在一組實體進行批量操作,可以考慮使用相同的分區鍵將它們分組。

對於可擴展性和性能目標,我建議您使用第一個結構。