我正在审核现有实现中的Azure表。以下是1行数据的示例:
partitionkey(string): 6b348096-e6cb-4126-ba3c-cd0c9e8ba9c9
rowkey(string): 02519452888782521547_c1a98e0f-1b25-4d38-bd96-d72b30a97bf0
显然,rowkey没有合适的guid,两个列名都是Azure的原生名称,每个实体都需要。这些列似乎没有标识或默认插入。有人可以提供有关这些列的上下文以及这些Azure列与SQL Server样式实现之间的实现样式差异和注意事项吗?
答案 0 :(得分:0)
我不知道如何在表中构建分区键和行键,请转向创建表的人。 :)
关于Azure Table设计的注意事项,您可以参考此post(非常完整且有用)。
答案 1 :(得分:0)
Partitionkey和Rowkey只是Azure表中entitis的两个属性。 Rowkey是"主键"在一个分区内。在一个PartitionKey中,您只能拥有唯一的RowKey。如果使用多个分区,则可以在每个分区中重用相同的RowKey。 PartitionKey + RowKey构成实体的唯一标识符(主键)。
在您的表中,partitionkey和rowkey只是分配了一个随机字符串。我不确定您是设计此表还是其他人,但可以通过Azure Storage .NET client libary和Rest 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