読者です 読者をやめる 読者になる 読者になる

seratch's weblog in Japanese

About Scala, Java and Ruby programming in Japaense. If you need English information, go to http://blog.seratch.net/

GitHub star 数で見る Scala DB アクセスライブラリ事情

以前、こちらでお話しした時のネタだったのですが

http://playframeworkja.doorkeeper.jp/events/4219

GitHub、Google Code の star 数で Scala の DB アクセスライブラリのランキングをつくってみました。もちろんたくさん star がついているからといって必ずしも優れたライブラリとは限らないわけですが、ある程度の指標にはなるはずです。

スターの数は 6/26 23:30 頃、私が確認した時点での数字です。() つきになっているものはフレームワークの一部の機能として DB アクセスが提供されているものです。

そうすると、本来は Anorm がダントツ一位になるわけですが、Play2 の将来のバージョンで外される見込みなので除きました。また、Lift Framework の DB アクセスもありますが、こちらは Lift 前提なので除きました。私が認識しているものだけが候補として選択されているので、もし抜けているものがあればご指摘ください。

GitHub

順位 名前 GitHub star 初コミット 最終更新
1 Slick (旧 ScalaQuery) slick/slick 613 2009/02/20 2013/06/07
2 Squeryl max-l/Squeryl 322 2010/01/30 2013/06/22
3 postgresql-async & mysql-async mauricio/postgresql-async 159 2012/02/25 2013/05/26
4 Querulous twitter/querulous 154 2010/02/04 2012/03/30
5 Spring JDBC Scala SpringSource/spring-scala (154) 2011/08/26 2013/05/16
6 Circumflex ORM inca/circumflex (136) 2009/09/24 2013/05/23
7 ScalikeJDBC seratch/scalikejdbc 112 2011/11/17 2013/06/26
8 sqltyped jonifreeman/sqltyped 109 2012/08/08 2013/06/26
9 scala-activerecord aselab/scala-activerecord 92 2012/04/09 2013/06/26
10 SORM sorm/sorm 91 2012/04/29 2013/05/20
11 Activate fwbrasil/activate 85 2011/06/05 2013/06/09
12 Prequel jpersson/prequel 35 2011/03/12 2013/05/11
13 Scala SQL DSL p3t0r/scala-sql-dsl 28 2009/11/23 2010/11/04
14 DataExpress cbmi/dataexpress 24 2013/04/13 2013/06/17
15 Scweery Synesso/scweery 12 2009/08/23 2013/04/12
15 ScalaSQL chochos/scalasql 12 2011/12/27 2012/03/08
17 mirage-scala takezoe/mirage-scala 4 2012/06/20 2012/11/14
18 MyBatis Scala mybatis/scala 1 2011/11/26 2013/05/27

Google Code

GitHub でホストされていないプロジェクトもあります。Google Code にも star をつける機能があるのでその数字を列挙してみました。

名前 star URL
MyBatis 790 https://code.google.com/p/mybatis/
O/R Broker 58 https://code.google.com/p/orbroker/
MapperDao 18 https://code.google.com/p/mapperdao/

雑感

GitHub で見るとやはり Slick と Squeryl の二強状態で、三位グループのライブラリがたくさんあるという状況です。

Scala の DB ライブラリは基本的には JDBC 経由で DB につなぐ感じになるかと思いますが、postgresql-async は JDBC ベースでない非同期ドライバーを独自実装したものです。こういったものはこれからももっと出てくると思いますし、できれば標準化されるといいですね。。

Scala コミュニティは GitHub と親和性が高いですが、ライブラリ作者の中には Google Code を好む方もいるので、こちらも見ておくべきかと思います。

MyBatis Scala は GitHub では全く注目されていませんが Google Code 上では(主に Java での評価とはいえ)人気がありますし、Scala の方も少なからずユーザがいるはずです。また O/R Broker は少し使ったことがあるのですが、実用で問題なく使える印象でした(ちょっと冗長ではありますが)。GitHub にいないからといって候補から外すのは早計かもしれません。

上記のような候補から自分のニーズと好みに合ったものを評価、選択されるのがよいかと思います*1

(6/28: 追記)@okapies さんにご指摘いただきましたが、そういえばこんなものがありましたね。Twitter 社は今では Querulous よりもこっちで MySQL とやり取りしているのかな。

https://github.com/twitter/finagle/tree/master/finagle-mysql

と思ったけど、まだ experimental みたいなので Querulous は現役かな。こればっかりは外部からは分からないですね。

https://github.com/TechEmpower/FrameworkBenchmarks/pull/245

*1:もちろん、それが ScalikeJDBC であれば光栄ですが