Play framework を扱う案件に最近携わっていて、いろいろとドキュメントにないノウハウが溜まりつつあるのでここらでメモ書きしておきます。
Play framework とトランザクション
Play framework では、HTTP リクエストはもちろんのこと、非同期ジョブにおいてもトランザクションが自動的に提供されます。通常の業務であれば、1つの HTTP リクエスト処理・非同期ジョブに1つのトランザクションがあればそれで十分ですが、ちょっと込み入ったことをやろうとすると、例えば
監査用の操作ログ・クエリログをテーブルに出力したい
→コミットされるタイミングは後でもいいんだけど、本流の処理で転けてロールバックかけた場合に、操作ログまでなかったことになるのは避けたい。
非同期ジョブなどで、ジョブ管理テーブルを随時監視・更新したい
→本流の処理のトランザクションはコミットしたくないけど、ジョブ管理テーブルへの変更は即座にコミットして反映させたい。
など、1つのトランザクションではちょっと実現が難しいこともあったりします。前者の例は、トランザクションを二つに分けたとして互いが重ならないように工夫できるでしょうが、後者はそう簡単にはいきません。互いのトランザクションが一部重なり、同時並列で存在しなければならない状況が発生し得ます。
ところで...
About
Popular Posts
-
2013.06.08 追記:JDBC 接続文字列で characterEncoding / connectionCollation を指定すると思った通りの挙動をしてくれないようなので、別の方法 (多分これが正しい方法) を記載しました。 Unicode における、 こんな ...
-
僕は最近こんなお仕事をしているんですよー、という意味をこめて喋りました。 機械学習だけが「アドテク」じゃない。最適化も重要なんだよ、という気持ちで。 SmartNews TechNight Vol.5 : SmartNews Ads の配信最適化の仕組みはどうなっ...
-
「えーマジ native2ascii!?」「プロパティエディタプラグインが許されるのは J2SE 5.0 までだよねー」 ジャバエンジニアはそろそろ、プロパティファイルを扱う場合に native2ascii やら各種プロパティエディタプラグインやらの呪縛から解放され...
-
巷では「ArrayBlockingQueue よりも LinkedBlockingQueue の方がスループット性能がいいよ」なんてまことしやかに言われているけど、どうにも気になったので検証してみたら、実は ArrayBlockingQueue の方が性能いいんじゃない? とい...
Categories
- AROW (1)
- aws (1)
- compression (1)
- docker (1)
- DSIRNLP (1)
- gem (2)
- Java (11)
- JDBC (1)
- Kyoto Cabinet (1)
- life (2)
- machine learning (2)
- MySQL (3)
- Node.js (1)
- playframework (7)
- recommendation (2)
- redshift (1)
- ruby (1)
- statistics (1)
- tokyowebmining (1)
- Trie (2)
- Twitter4J (1)
- vagrant (1)
- xgboost (3)
KOMIYA Atsushi. Powered by Blogger.