Azure表:在Azure Table中存储guid的最佳性能是什么?

时间:2016-08-03 15:49:26

标签: azure-table-storage

我想在行中存储一个值:guid。但我必须设置对:PartitionKey和RowKey,所以我的对是: “guidValue”,some_guid 什么应该是PartitionKey:guid还是const string?

所以结构应该是这样的:

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并多次阅读。

2 个答案:

答案 0 :(得分:2)

你的阅读场景是什么?列出所有现有的GUID?或检查是否存在一个GUID?您是否希望通过一个请求编写多个GUID以节省写入的交易成本并使写入性能更好?

第一个选项将允许您使用EntityGroupTransaction批量插入GUID,但是只有一个分区键的表无法负载平衡到Azure Storage后端中的多个服务。如果你想批量插入GUID并且总GUID数量不是太多,我建议你选择选项1;否则,选项2更好。

答案 1 :(得分:1)

PartitionKey会影响每个存储服务的负载平衡和可伸缩性。

正如https://azure.microsoft.com/en-us/documentation/articles/storage-scalability-targets/#partitions-in-azure-storage处的表格实体的描述:

  

实体的分区键是帐户名+表名+分区键,其中分区键是实体所需的用户定义的PartitionKey属性的值。具有相同分区键值的所有实体将分组到同一分区中,并由同一分区服务器提供服务。这是设计应用程序时需要了解的重点。您的应用程序应该平衡跨多个分区传播实体的可伸缩性优势,以及在单个分区中对实体进行分组的数据访问优势。

另外,

  

如果您希望对一组实体执行批处理操作,请考虑使用相同的分区键对它们进行分组。

对于可伸缩性和性能目标,我建议您使用第一个结构。