appengine ja night #6に行ってきた。 #appengine #ajn6
blog書くのめっちゃ遅れた。ちゃんと書きますよ。
slim3がリリースされましたね。そのslim3の目玉機能であるGlobalTransactionを荒川さん、ひがさんから解説頂きました。
今回はいくつかustream動画があります。これなかった人も動画を見ればいいですよ。
おしながき
- 本編
- @ashigeruさん:図解Global Transaction
- @higayasuoさん:Global Transaction・第2部
- BT(Beer Talk)
- @tokibitoさん:rst2pdf.netの紹介
- @yuroyoroさん:Slim3をScalaで動かす
- @iwazerさん:事例紹介「なうまぴおん」
- @marblejenkaさん:appengineをscalaでしばくぜ!
- @higayasuoさん:スキーママイグレーションについて議論
図解Global Transaction
なぜGlobal Transactionが必要なのかについて、もしLocal Transactionだけで実装するとどのような問題が起こるのかを解説して頂いてます。- Local Transactionとは
- Global Transactionとは
- 複数のEntityGroup間でもトランザクションを制御できるようにしようというものです。どのように実装されているかというと準備と適用という流れで実行することで実現できることを説明していただきました。
Global Transaction
slim3のGlobal Transactionは早い。そのどうやって高速化しているか?というのが今回の目玉だったように思えます。
- Datastoreからのgetをbatch getにする
- getを2回するのではなく、batch getで1回で取得する
- 1個目のEntityGroupはLocalTransactionで実行する
- ジャーナル作成、ジャーナルの削除コストを削減
- (ジャーナルの作成時)複数Entityをputするのではなく、複数Entityをシリアライズして1つのEntityのプロパティにセットしてputすることで劇的に早くなる
※slim3 GlobalTransactionを使うにあたって注意があって、Global TransactionロックはGlobal Transactionを経由しなければいけません。そうしないとLocal TransactionのputがGlobal Transactionのapplyで上書きされる恐れがあります。gtxを使う人は常にgtxを使いましょう。
重要な話。このロックは、ロックを意識すると言う運用があって初めて有効な仕組みです! #ajn6 #appengine
rst2pdf.netの紹介
- サイト
- 資料
Slim3をScalaで動かす
slim3をscalaで動かしてみた
View more presentations from guest16d8e4.
事例紹介「なうまぴおん」
事例紹介「なうまぴおん」
View more presentations from iwazer.
appengineをscalaでしばくぜ!
#ajn6.lt.marblejenka
View more presentations from marblejenka.
スキーママイグレーションについて議論
- schemaVersionがEntityのプロパティに登録してあるのは前提
- 時代がRDBからKVSへの流れているのはパフォーマンスの観点もあるが、DDLでスキーマが固定されているのはデータ件数が数千万件以上になったときにスキーマ変更が大変。スキーマレスなものが求められたというものある
- AppEngineでは数千万件データがあった時にどのようにマイグレーションすればいいのか?
- 数千万件のすべてのレコードをputし直すのは現実的じゃないかもしれない。
- schemaVersion毎にロジックを変更するか?
- schemaVersion毎にどのようなモデル(.class)だったのかは把握しておく必要がある
- EmpのschemaVersionがupした場合はEmp.class(Ver2)とEmpVer1.classを作っておくのがいいかも知れない。そして、EmpVer1.classからEmp.classにversionupするコードをEmpVer1が持っている感じ。slim3でどのようにサポートしたらいいのか悩んでいるので案があれば教えて欲しい。