2009年6月11日木曜日

Google App Engineのデータ設計

GoogleAppEngineのデータストアは、普通のRDBに慣れてしまった人だと、
やや強い制約がある。

制約については、下記に書いてあるとおりになるのだけど、
http://code.google.com/intl/ja/appengine/docs/java/datastore/queriesandindexes.html#Restrictions_on_Queries

簡単に書いておくと下記のような感じ
  • 不等号のWhere条件は、1つのカラムしか指定できない
  • OR条件や否定の条件は利用できない
  • 当然、計算式を含む条件も設定できない

これを回避するためには、データの設計についても

従来のRDBとは異なる設計をしなくてはいけない。

おそらく、下記のようなプロパティを持つオブジェクトが合った時に

・賛成意見

・反対意見

反対意見が50%を超えるものを検索するというようなアプリケーションを作る場合には、

従来のRDBであれば、「反対意見>賛成意見」みたいなWhere節を書けばいいのだろうけど

Google App Engineの場合には、更新時に、平均値も計算して保管しておく必要が

あるのだと思う。

そして、「平均値>50%」みたいな検索をすることになると思う。

実際に、データ型を決めてみたら結構気持ち悪いくらい冗長なデータ型になってしまった

一応、下記のような記事もあったので、メモがてらにリンクしておく。

クラウド環境ではデータベースは「非正規化」して使う?

0 件のコメント: