设置Azure表存储中的RowKey



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

谁能给我提供一个指针,我应该用什么作为RowKey存储日志数据?我看到了下面的语法(RowKey: {'_': '1'}),如下所示,但无法找出它的含义:

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

谢谢!

您可以采用许多方法。其中一种方法就是to store date/time value in ticks as RowKey。这将帮助您获取特定时间范围的日志数据。只要记住,由于RowKeyString数据类型,您可能希望在其前面填充零,以便所有值具有相同的长度。例如,

DateTime.UtcNow.Ticks.ToString (d20开头)

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

  1. 按时间顺序存储,如上图所示。
  2. 按时间倒序存储。这种方法的优点是,最新的条目总是被添加到表的顶部。因此,您可以在PartitionKey上查询表并获得前'x'行,它们将是最新的。您将执行如下命令:

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

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

相关内容

  • 没有找到相关文章

最新更新