4

.NETDateTime.MinValueは 1/1/0001 ですが、Windows Azure テーブル ストレージはこの値を受け入れません。これは、下限が異なるためです: CloudTableClient.MinSupportedDateTime.

このような違いがあるのはなぜですか? Azure チームがそのように設計した理由は何ですか? これは単に問題のあることであり、この選択の背後には技術的な問題があると思います。

4

1 に答える 1

4

ほとんどの場合、Azure はこれらの値を で使用される形式とは異なる形式で保存しますDateTime。データベース エンジンの型システムがクライアント プログラミング言語の型システムと異なることはよくあることです。エンジニアリングはしばしばトレードオフに関係し、データベース開発者は他のツール開発者とは異なる選択をすることがよくあります。たとえば、DateTime夏時間への移行時に UTC と現地時間の間のラウンドトリップをサポートするために、2 ビットを使用してタイムゾーン関連のデータを格納します。これらの余分な 2 ビットは、比較、ハッシュ、またはシリアル化を実行するときにマスクされます。Azure がそのような情報を保存する必要はなく、クエリを不必要に複雑にするだけなので、Azure がそのような情報を保存しているとは思えません。

DateTime残念ながら、Azure に がどのように格納されているかの詳細についての参考文献は知りませんが、この MSDN ブログでは、Azure の型が .NET の同等のDateTimeものよりも制限されている別の方法と同様に、制限された範囲の両方について言及しています。 64KBまで。Stringbyte[]

于 2013-04-28T02:24:58.590 に答える