ひがやすを技術ブログ

電通国際情報サービスのプログラマ

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