我正在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
。这将帮助您获取特定时间范围的日志数据。只要记住,由于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
。因为如果记录的数量非常大,并且所有记录都放在同一个分区中,可能会影响性能。