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が速いことはとても重要です。