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

jco*_*cer 1 c# azure azure-table-storage

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

dau*_*ash 6

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

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

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

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

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


Gau*_*tri 5

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