azure表存储分区键/行键背景?

时间:2016-03-14 16:43:00

标签: azure azure-storage

我正在审核现有实现中的Azure表。以下是1行数据的示例:

partitionkey(string): 6b348096-e6cb-4126-ba3c-cd0c9e8ba9c9

rowkey(string): 02519452888782521547_c1a98e0f-1b25-4d38-bd96-d72b30a97bf0

显然,rowkey没有合适的guid,两个列名都是Azure的原生名称,每个实体都需要。这些列似乎没有标识或默认插入。有人可以提供有关这些列的上下文以及这些Azure列与SQL Server样式实现之间的实现样式差异和注意事项吗?

2 个答案:

答案 0 :(得分:0)

我不知道如何在表中构建分区键和行键,请转向创建表的人。 :)

关于Azure Table设计的注意事项,您可以参考此post(非常完整且有用)。

答案 1 :(得分:0)

Partitionkey和Rowkey只是Azure表中entitis的两个属性。 Rowkey是"主键"在一个分区内。在一个PartitionKey中,您只能拥有唯一的RowKey。如果使用多个分区,则可以在每个分区中重用相同的RowKey。 PartitionKey + RowKey构成实体的唯一标识符(主键)。

在您的表中,partitionkey和rowkey只是分配了一个随机字符串。我不确定您是设计此表还是其他人,但可以通过Azure Storage .NET client libaryRest API为这两个属性分配其他值。如下例所示,您可以设计rowkey和partitionkey,并指定所需的任何有效值,此处为Partitionkey的lastname和rowkey的firstname:

public class CustomerEntity : TableEntity
{
public CustomerEntity(string lastName, string firstName)
{
    this.PartitionKey = lastName;
    this.RowKey = firstName;
}

public CustomerEntity() { }

public string Email { get; set; }

public string PhoneNumber { get; set; }

}

最好考虑属性和分区策略。不要只为它们分配一个guid或随机字符串,因为它对性能很重要。我建议你浏览Designing a Scalable Partitioning Strategy for Azure Table Storage,最常用的是Range Partitions,但你可以选择你想要的任何东西。

这是一个很棒的博客,可以帮助您了解partitionkey和rowkey如何工作http://blog.maartenballiauw.be/post/2012/10/08/What-PartitionKey-and-RowKey-are-for-in-Windows-Azure-Table-Storage.aspx