在Azure表存储中设置RowKey

时间:2014-06-28 10:44:30

标签: azure azure-table-storage

我在Azure表存储中存储了一些日志。我已经确定了我应该使用的PartitionKey。但是,我无法确定我应该为RowKey使用什么。如果我使用的是Sql Server,我会使用自动递增的整数。据我所知,拥有自动生成的RowKey不是Azure表存储的选项。我很好地使用GUID,但是,每个人似乎都警告不要使用GUID。然而,我不确定我应该使用什么。

任何人都可以为我提供一个指针,用于存储日志数据的RowKey吗?我已经看到了以下语法(RowKey: {'_': '1'}),如下所示,但无法找出它的含义:

var task = { 
  PartitionKey: {'_':'hometasks'},
  RowKey: {'_': '1'}
};

谢谢!

1 个答案:

答案 0 :(得分:3)

您可以采取多种方法。其中一种方法是to store date/time value in ticks as RowKey。这有助于您获取特定时间范围的日志数据。请记住,由于RowKey属于String数据类型,因此您可能需要使用零预填充它,以便所有值都具有相同的长度。例如,

  

DateTime.UtcNow.Ticks.ToString(" D20&#34)

有了这个,你可以采取两种方法:

  1. 按照时间顺序存储它们,如上例所示。
  2. 按相反的时间顺序存储它们。这种方法的优点是最新的条目将始终添加到表的顶部。因此,您只需查询PartitionKey上的表格即可获得最高级别的' x'行和他们将是最新的。您将执行以下操作:
  3.   

    (DateTime.MaxValue.Ticks - DateTime.UtcNow.Ticks).ToString(" d20")

    您在评论中也提到I expect the data sets to be quite large.。我希望你没有使用单PartitionKey。因为如果记录数量非常大并且所有记录都放在同一个分区中,性能可能会受到影响。