スティルハウスの書庫の書庫

はてなダイアリーで書いてた「スティルハウスの書庫」を移転してきました。

Building Scalable Web Apps with App Engineを見たメモ

Google I/O 2008 - Building Scalable Web Apps with App Engine を見たメモ

  • 書き込みはコストが高い 0:06
    • アプリケーションのパフォーマンスを決めるのは、書き込み処理の実装方法
    • 読み込み処理は桁違いに速いので、あまり重要ではない
  • Entity Groupを使わずにID生成しよう 0:40
    • 書き込み処理が少なければID採番用のBlogIndexを親entityにしてEntityGroup(EG)を形成
    • 書き込み処理の集中するCommentsは、BlogIndexのEGに入れない
      • UserIndexのEGに入れて、timestampとUserIndexを組み合わせてGUIDを作る→txの競合をなくせる
  • スケールするアプリのコツ 0:42
    • Pythonランタイムのオーバーヘッドを最小に
      • リクエストごとにモジュールをロードしない。大きなモジュールは遅延ロードする
    • GetできるならQueryしない
    • 負荷に合わせたデータ構造を作る
      • 書き込み競合を低くする
      • EGの構成をよく考える
    • Memcacheはすごいので、どんどん使おう
  • テキスト検索の方法は(全文検索など)? 0:48
    • google検索のような)全文検索の手段はない
      • (注:やろうとしたら形態素解析してキーワードインデックス作る必要あるだろうな)
    • List Propertyを使う:1つのプロパティにキーワードのリストを入れておき、==で検索
  • バックグラウンドジョブは?
    • まだないが、検討中
  • EGはどう使う? 0:52
    • 複数のentityを同じtxに入れたい場合に使う。txの単位を表す。
  • pagingしている間のrepeatable readはどう確保される? 0:56
    • pagingしている間は確保されない。pagingの都度に最新のページ内容を取得している
    • 当初内容でrepeatable readを確保したければ、アプリ側で別テーブルを作るなどの対処が必要