我可以在 Azure Table 中使用 DATE 作为分区键吗?

Can I use DATE as partition key in Azure Table?

我想为事务创建 Azure Table,我想使用 DATE 作为分区键。我可以在 Azure Table 中使用 DATE 作为分区键吗?如果我需要在我的代码中使用它,是否需要将日期转换为字符串,反之亦然?

由于 PartitionKey 属性的类型为 String,您需要将 date/time 转换为字符串。再次请记住,实体是按 PartitionKey(和 RowKey)字母顺序排序的,您要确保在转换为字符串时以某种方式格式化,以便实体以理想的顺序返回.我建议使用 yyyy-MM-ddTHH:mm:ss 格式将它们转换为字符串,以便始终附加新订单。

答案是肯定的,但日期更常用作 RowKey 值。分区键用于对相关行进行逻辑分组。这导致它们存储在同一本地区域中,即使它们可能分布在多个虚拟机中。通过这样做,您可以在检索它们时实现高性能,更重要的是,如果它们共享一个分区,您可以对事务中的多行执行 (insert/update/delete)。

RowKey 虽然不需要在 table 中是唯一的,但在与 PartitionKey 配对时是唯一的。将其视为两列主键。 Rowkey 通常是存储为字符串的日期类型,推荐的年月日模式(如 2015 年 1 月 29 日)为 20150129。

这两个键一起使用可提供对 table 的高速访问。如果不使用 table 扫描,结果会慢得多。

使用分区键的更好方法是从系统的某些静态 属性 生成它。例如,如果您有 1000 个气象站每天不断报告数据,您可以使用 stationId 作为 PartitionKey 和日期作为 RowKey。

这还有一个额外的好处,可以更均匀地组织分区之间的行,使它们的大小相对相等。这有助于 Azure 存储更均匀地分布分区并更好地完成负载平衡。

您可以,正如 Gaurav Mantri 上面提到的那样。但是请注意,由于您设置的 "Append Only" 模式,这可能会导致性能不佳:https://azure.microsoft.com/en-us/documentation/articles/storage-performance-checklist/#subheading28

Azure Storage 了解您的使用模式,并根据负载自适应地调整分区分布。因此,如果您的负载跨多个分区键,那么它可以在内部将这些分区拆分到不同的服务器,以平衡您的负载。但是,如果您将所有负载都放在一个分区上,并且该分区会定期更改(就像它在仅附加模式中所做的那样),那么自适应负载平衡逻辑将变得无效。为避免这种情况,如果您的查询模式允许,您应该避免使用日期或日期时间作为分区键。