ビープラウド社長のブログ

株式会社ビープラウドの社長が、日々の思いなどを綴っていきます。

appengine ja night#5 に参加した

2月12日(金)にappengine ja night#5に参加。

まとめは、主催者のスティルハウス佐藤一憲さんのブログにて

スティルハウスの書庫
appengine ja night #5終わりました!

前半は、@tmatsuo さんの「Google App Engien Anti Patterns

以下はメモ書き。

○不要なインデックスはつくらない(indexed=Falseを属性に定義する)
→datastoreの容量節約
○Exploding Indexes(Composite INDEXでINDEXが乗数で作成されてしまう)
○Greedy module loading(spin upの時間を短くするためにはLazy Loadingを心がける)
○1.3.1の新機能
・Transactional Task Queue
・Cursor
・1000件以上クエリで取得できる
・App Stats

感想:ちょうどCodezineの実装編をpythonで書いていたこともあり、はまりやすいポイントについての曖昧な知識が明確になった。Google App Engineを深く触っている人の話の端々の会話を聞いているだけでポイントや熱い部分が伝わってきて価値有り。preziというサービスも初めて知った。

後半は、@higayasuoさんの「Slim3 Global Transactioin」
○複数のエンティティグループにまたがるトランザクションの保証
○2フェーズコミット
・XA -- 複数のDBにまたがるトランザクションのためのプロトコル
トランザクションコーディネータ -- トランザクションを制御する
・リソースマネージャ -- 個々のDB
・処理フロー
ジャーナル(トランザクションの記録。状態を再現できる)の書き出し(最初に書き出す)

内部的なコミット

ロールフォワード(ジャーナルの適用)
○リトライ
・DataStoreTimeoutExceptionは大体0.1%の可能性で発生する
・リトライの仕組みがslim3には実装されている。タブレットサーバの移動のタイミングに重なったりするとタイムアウトではなくてもDataStoreTimeoutExceptionが発生することがある。
python版はAPIの中にリトライ処理が書かれているが、Java版はリトライされない。
・ただし、1.3.1では、Datastore側でリトライがされるようになった

感想:@higayasuoさんが実際のソースにコメントしながらの解説。ソースがシンプルに実装されているのがよくわかった。今後Slim3も追ってみたい。

今年の目標102エントリーまであと92