Table Storage は null 値でクエリできないよ

タイトルのとおりなのだけど 、SQL Server でいう where hoge is null みたいなクエリができない。

アプリケーションのユースケースとして null でクエリしないようにする、というのはもちろんだが、運用で「このカラムが null のものだけ調べたい」みたいなこともできないので注意。

そもそも思想として null を入れないようにすべきなのだろうけど not null 制約などはかけられないので実装レベルで気をつける必要がある。

とくに困るのは、あとからプロパティが追加された場合。プロパティの追加はマイグレーションが必須ではないので、新たなプロパティを持つレコードが追加されたら古いデータはそのプロパティに null をもってしまう。こうなるとプロパティが追加される前のレコードか後のレコードかが判別できないので、プロパティ追加前のレコードのみマイグレーションをかける、みたいなことができない。

教訓

  • 不用意にプロパティを増やしてはいけない
  • プロパティを増やす場合には、事前にマイグレーションするか、プロパティが増える前のレコードがどれかをわかるようにしとく