azure - 在 Azure 表存储中设置 RowKey

标签 azure azure-table-storage

我正在 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")

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

  1. 按时间顺序存储它们,如上例所示。
  2. 按时间倒序存储它们。这种方法的优点是最新的条目将始终添加到表的顶部。所以你可以只查询 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/

相关文章:

c# - 如何在 Azure 中检索保存的对话数据(Tablelogger)

azure - 表存储(模拟器)插入失败,错误为 "One of the request inputs is not valid."

azure - 启动 Azure VM 指定时间

powershell - 如何让 Azure PowerShell 记住命令行历史记录?

azure - 如何创建从 OData 到 Azure DocumentDB 的定期数据副本

node.js - 部署到云时无法将实体添加到 Node.js 中的 Azure 存储表中?

azure - 如何检测环境是在 Azure 托管服务 worker 角色中进行暂存还是生产?

azure - Azure 中多个辅助角色的 App.config 转换

c# - Azure表存储服务2.0区分大小写的过滤器

azure - 可以在 Azure 表存储中通过 RowKey 进行排序