appengine ja night #5 #ajn5

http://atnd.org/events/2950 見に行けなかったのでまとめてみた。結構適当にまとめたので、重要なワードで抜けがあったら追加しておいてください。
3
shin1ogawa @shin1ogawa

[Q]TaskQueueって指定した時刻に起動、とかできるの?→[A]ETAを指定すればできます。正確とは限らないけど。 #ajn5

2010-02-12 19:56:39
あおうさ @bluerabbit777jp

#ajn5 TaskQueueで追加してすぐに実行じゃなくて、TaskQueueの実行を待ってくれる機能があったのか。知らなかった。いいこと知った。

2010-02-12 19:57:42
this is matsuu speaking @matsuu

#ajn5 Cursorの話。hasNextとかadvance(?)とか、よくわからない高度な議論がされてるなう

2010-02-12 20:02:16
shin1ogawa @shin1ogawa

ashigeru:iteratorのhasNextはアドバンスしないから、ギリギリまでnextして、最後にhasNextだけすりゃーよい。 #ajn5

2010-02-12 20:02:24
this is matsuu speaking @matsuu

ロック機構を自前で用意せよ、ってことなのかな。うーむ。 RT @kashisan: Taskqueue は必ず呼ばれるが、複数回呼ばることがある。 #ajn5

2010-02-12 20:04:18
shin1ogawa @shin1ogawa

tmatsuo: pythonだとCursorを使ったページングがちょっと微妙(JavaではできるけどLLAPI使わなきゃならん)。無理くりやってircに投げたらNickから「Be cautions」言われた!だからこのコードはおすすめできないYO! #ajn5

2010-02-12 20:05:49
あおうさ @bluerabbit777jp

#ajn5 app statsってjavaでも使えるの??

2010-02-12 20:09:21
shin1ogawa @shin1ogawa

@bluerabbit777jp 作れば使えますよ。以前ソースを読んだ>AppStats #ajn5

2010-02-12 20:11:05
kashisan @kashisan

エンティティグループはできるだけ小さく作るのは、GAEの基本。 大きくしすぎると、たくさん競合が起こってしまう。 #ajn5

2010-02-12 20:15:17
shin1ogawa @shin1ogawa

ひがさん:まずは2フェーズコミットの話をします。 #ajn5

2010-02-12 20:15:39
shin1ogawa @shin1ogawa

2PCには登場人物がいる。ザックリ言うと「トランザクションコーディネータ」「リソースマネージャ」のふたつ。 #ajn5

2010-02-12 20:16:30
hironemu @hironemu

準備完了したあと、コミットしてねと言っている時に落ちても、立ち上がるときにちゃんとコミットされる。2フェーズコミット #ajn5

2010-02-12 20:20:45
shin1ogawa @shin1ogawa

大概のシステムはこんなカンジ。「ジャーナルの書き出し→内部的なコミット(ここが終わるとロールバック不可)→ロールフォワード(ジャーナルの適用)」 #ajn5

2010-02-12 20:23:06
hironemu @hironemu

slim3では、0. ロックの取得、1. ジャーナルの書き出し、2. コミット、3. ジャーナルの適用、4. ロックの解放 #ajn5

2010-02-12 20:27:28
this is matsuu speaking @matsuu

#ajn5 GAEでトランザクションの中でロックをかけるのに大体100msecぐらいかかるらしい。ながっ

2010-02-12 20:34:20
shin1ogawa @shin1ogawa

gtx(GlobalTransaction)のサンプルコードを書いてらっしゃるトコロ。まずはEGが別のモデルをふたつputする等。 #ajn5

2010-02-12 20:37:31
this is matsuu speaking @matsuu

#ajn5 Datastoreは0.1%から0.2%ぐらいの割合でDatastoreTimeoutExceptionが発生するらしい。これはJavaだから?Pythonでも同様のエラーは発生してる?

2010-02-12 20:41:18
hironemu @hironemu

beginGlobalTransactionしたときに、GlobalTransactionはThreadLoacalなところにはいる。#slim3 #ajn5

2010-02-12 20:44:00
Kazunori Sato @kazunori_279

AppServer側のリトライだったのが、1.3.1からDatastoreサーバー側のリトライも実装されたらしい #ajn5

2010-02-12 20:44:07
shin1ogawa @shin1ogawa

allocateIds()の話。個人的にはこいつがslim3のLLAPI化の決定の引き金なったひとつの要素な気がしてるんだけど、一度ひがさんに聞いてみたいな。 #ajn5

2010-02-12 20:44:32
あおうさ @bluerabbit777jp

#ajn5 DatastoreTimeoutExceptionが出ても実際はputされていることがある。そのため、自動採番なputをリトライすると2重登録される可能性がある。事前に採番しておいた方がいい。

2010-02-12 20:44:50
もか/ıʞnzns uıɥsıǝʞ @mochawan

DatastoreとSOAP/HTTPは設計ノウハウは限りなく近いなー #ajn5

2010-02-12 20:45:10
materia🧪🍳 @materia_x64

Keyを自動採番しておけば、ダブってputしてもinsertエラーになるのではなくupdateになるので安心。 #ajn5

2010-02-12 20:47:47
Daisuke Nakagome @broccolimustdie

ひがさん クラウドはリトライセーフに(意訳) #ajn5

2010-02-12 20:48:23
もか/ıʞnzns uıɥsıǝʞ @mochawan

appengine ではロックしないで基本は楽観的排他処理 #ajn5

2010-02-12 20:48:48