为什么Azure表存储具有与.NET不同的DateTime.MinValue限制

时间:2013-04-28 01:33:36

标签: azure azure-storage azure-table-storage

.NET DateTime.MinValue是1/1/0001,但Windows Azure表存储不接受此值,因为它具有不同的下限:CloudTableClient.MinSupportedDateTime

为什么会有这样的差异,是什么让Azure团队以这种方式设计它?这是有问题的,我相信这种选择背后存在技术上的困难。

1 个答案:

答案 0 :(得分:4)

Azure很可能以不同于DateTime的格式存储这些值。对于数据库引擎的类型系统而言,与任何客户端编程语言的类型系统不同是相当普遍的。工程经常需要权衡,数据库开发人员通常会做出与其他工具开发人员不同的选择。例如,DateTime使用两位来存储与时区相关的数据,以便在夏令时转换期间支持UTC与本地时间之间的往返。执行比较,散列或序列化时,这些额外的两位被屏蔽掉。我非常怀疑Azure存储了这样的信息,因为它不需要它,它只会使查询变得不必要地复杂化。

不幸的是,我不知道有关DateTime在Azure中的存储方式的详细信息,但this MSDN blog提及DateTime的有限范围以及另一种方式Azure类型比.NET等价物更受限制 - Stringbyte[]限制为64KB。