appengineのTipsおれおれメモ

  • 高速化
    • one to many で子を特定してから親を取得してそれから全ての子供を取得する。
  • DBマイグレーション
    • bigtableスキーマレス(行毎に異なるプロパティを持つことができる多次元MAP)
      • null値とmissingが区別される。missingプロパティでソートするとデータが検索されない。インデックスがないから。スキーマバージョンをプロパティに持っておくと良い。バージョンが古いデータに対してmissingプロパティを更新するバッチを後で流す。
  • bigtableは一つのkindに大量のデータ行があった場合にタブレットと呼ばれる単位で複数のサーバに保存される。このサーバがタブレットサーバ。なので、一つのkindの中でも行によってサーバが異なる。データアクセスは一つのサーバに対して行う方が早い。タブレットは行のキー順でデータを保持している。キーが並ぶように値を保存した方が一つのタブレットサーバで読み込みが終わるので早い。必要なデータをなるべく一箇所にまとめることをローカリティと呼ぶ。

とキーにするよりも

とする方がローカリティが高くなる