Hatena::ブログ(Diary)

yvsu pron. yas このページをアンテナに追加 RSSフィード

2010-03-18

Slim3 1.0.0 Released

Slim3 1.0.0をリリースしました

リリースノートはこちら

http://sites.google.com/site/slim3appengine/release-notes

ダウンロードはこちら

http://code.google.com/p/slim3/downloads/list

Slim3の主な特徴は次のとおりです。

  • Global Transactions
  • Faster than JDO/JPA
  • Fast spin-up
  • HOT reloading
  • Type safe query

詳しくはこちらをどうぞ

http://slim3.org

Seasar2譲りのHOT reloadingやS2JDBC譲りのType safe queryなどもありますが、最大の特徴は、Global Transactionsを実装していること。

http://d.hatena.ne.jp/higayasuo/20100210/1265781747


App Engine世界で汎用的に実用的な速度でGlobal Transactionを実装したのはSlim3が初めて何じゃないかなと思います。Global Transactionがなぜ速いのかは、明日のAppEngine ja nightで詳しくお話します。

NoSQLの世界では(NoSQLじゃなくてもそうだけど)、consistencyを重要視するとパフォーマンスが劣化します。Slim3では、いくつかのテクニックでこの問題を解決しています。


軽く書いておくと、複数のリソースにまたがるときに、最初のリソースに対しては、通常のローカルトランザクションとして実行していること(これは2PCの世界でlast resource optimizationと呼ばれているものを応用したものです)。30秒経ったら自動的にロックが外れるようにしていること。Journalを圧縮していることの三つです。

GlobalTransaction.java

Lock.java

Journal.java


Slim3はもちろんオープンソースなので、このようなテクニックがNoSQLの世界で少しでも役に立つならうれしく思います。


AppEngineのJDO/JPAはAppEngineを軽く知る分にはいいのですが、パフォーマンスが悪く、はまりどころ満載で、誰得フレームワークなのでSlim3 Datastoreを使うのをお勧めします。

さらにJDO/JPAspin-up(アプリケーションの開始)が超遅いんだよね。AppEngineではちょっと使ってないと直ぐ(2,3分くらい)にインスタンスが停止され、次のリクエストspin-upが起きるのでspin-upが速いことはとても重要です。

arataarata 2010/04/16 00:00 グローバルトランザクションの実装が今ひとつ分かりません。実際に動く形のサンプルを公開しているサイトを知りませんか。

higayasuohigayasuo 2010/04/22 16:24 arataさん
次のアプリが参考になると思います
http://slim3demo.appspot.com/gtx/

arataarata 2010/04/24 15:42 おかげさまで入り口までたどり着きました。Entityの定義部分は、もう少しトライしてみます。

t-katochint-katochin 2011/01/05 20:12 すみません。こんな懐かしい箇所にコメントしまして。。1.0.0のこの頃、gtxの自動アンロックが30秒とのことですが、TaskQueueやCronが数分間の処理に耐えられるようになった現在でも、制限を変える予定は無いのでしょうか。

higayasuohigayasuo 2011/01/11 13:53 gtxは実際にリソースをロックするので30秒未満にしておくのが、安全かなと思っています。

t-katochint-katochin 2011/01/13 16:19 わかりました。ありがとうございました。

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証