Rails 2.0.2でデフォルトDBがSQLite3に

先日2.0.1をリリースしたばかりのRuby on Railsだが、早くも2.0.2がでてきた。このバージョンで、RailsのデフォルトDBがMySQLからSQLite3に変更されたそうだ。

SQLite3 is the new default database

Most importantly is SQLite3 as the new database we’ll configure for by default when you run the rails generation command without any specification.

http://weblog.rubyonrails.com/2007/12/17/rails-2-0-2-some-new-defaults-and-a-few-fixes


今後は単にrails myappとすると、SQLite3対応で初期化される。従来通りMySQLを使いたい場合は、rails myapp -d mysqlとしなければならない。

SQLite3は「単一のファイル」「ユーザの概念なし」「権限の概念なし」と扱いが簡単なRDBMSで、DBの構築作業も不要。過去の記事でも書いたが、railsアプリケーションを初期化したら、即座にmigrationに入ることができる。その分、一般的なRDBMSと比較すれば物足りないところも出てくるが、単なるお試しや小規模な利用であれば十分に機能する。文字コードUTF-8しか扱えないが、日本語を扱う我々としてはいちいち設定しなくて済む分むしろ好都合である。

インストールも簡単。

Windowsでは、SQLite Download PageからWindows用バイナリ(sqlite-X_Y_Z.zipまたはsqlitedll-X_Y_Z.zip)を落としてきて、sqlite3.dllをPATHの通ったところに配置(俺はC:\sqliteフォルダに入れて、ここをPATHに追加している)、あとは…

> gem install sqlite3-ruby

とすればRailsで使えるようになる。

Linuxではdllが共有ライブラリに変わるわけだが、これはapt-getなりyumなりを使ってインストールするのが簡単である。手元のDebianだと…

# apt-get install libsqlite3-dev

としてから、gem install sqlite3-rubyすれば良い。共有ライブラリだけであればlibsqlite3-0でよいのだが、sqlite3-rubyをインストールする際にビルドすることになるので、devパッケージが必要。

SQLite3は実に扱いやすいので、おすすめ。DBを再構築したいときは単にファイルを消して*1rake db:migrateするだけでいい。権限設定に起因するトラブルに悩まされることもない。GUIツールもhttp://sqlitebrowser.sourceforge.net/を始めとしていろいろ出ている。俺もかなり前からrails myapp -d sqlite3するのが常になっていた。

SQLite3がRailsのデフォルトDBになった以上、今後はまずSQLite3で開発をスタートさせて、パフォーマンスやらが問題になり始めてから改めてMySQLPostgreSQLを検討、という開発スタイルになっていくのだろう。

*1:rake db:dropでも良い。