我正在 Azure 表存储中存储一些日志。我已经确定了应该使用的 PartitionKey。但是,我无法确定应该使用什么作为 RowKey。如果我使用 Sql Server,我会使用自动递增整数。据我所知,Azure 表存储无法提供自动生成的 RowKey。我可以使用 GUID,但是,每个人似乎都警告不要使用 GUID。然而,我不确定我应该使用什么。
任何人都可以为我提供一个指针,告诉我应该使用什么作为存储日志数据的 RowKey?我见过以下语法(RowKey: {'_': '1'}
),如下所示,但无法找出它的含义:
var task = {
PartitionKey: {'_':'hometasks'},
RowKey: {'_': '1'}
};
谢谢!
最佳答案
您可以采取多种方法。一种这样的方法是 to store date/time value in ticks as RowKey
。这将帮助您获取特定时间范围内的日志数据。请记住,从RowKey
开始是 String
数据类型,您可能需要用零预先填充它,以便所有值都具有相同的长度。例如,
DateTime.UtcNow.Ticks.ToString("d20")
有了这个,您可以采取两种方法:
- 按时间顺序存储它们,如上例所示。
- 按时间倒序存储它们。这种方法的优点是最新的条目将始终添加到表的顶部。所以你可以只查询
PartitionKey
上的表并获取顶部“x”行,它们将是最新的。您将执行以下操作:
(DateTime.MaxValue.Ticks - DateTime.UtcNow.Ticks).ToString("d20")
您还在评论中提到 I expect the data sets to be quite large.
。我希望您没有使用单个 PartitionKey
。因为如果记录数量很大,并且全部放在同一个分区中,性能可能会受到影响。
关于azure - 在 Azure 表存储中设置 RowKey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24466014/