NAME
DBIx::Skinny::Manual::JA - DBIx::Skinnyの設計思想など
DESCRIPTION
DBIx::Skinnyをなぜ作る事にしたのか、 また作るにあたっての設計思想など。
Please translate and read the person in the sphere in English.
なぜDBIx::Skinnyを書いたのか
PerlのORマッパーは色々あります
Class::DBI, DBIx::Class, Data::ObjectDriber, Data::Model, etc...
ここにあげたORマッパーは基本的には利用者が設定したtable構成を基にSQLを組み立ててdatabaseにクエリを投げます。
そしてその結果を各種オブジェクトにしています。
私はいままでClass::DBIやDBIx::Classを色々使ってきました。
特にDBIx::ClassはとてもパワフルなORマッパーだと思います。
DBICはパワフルが由縁にとてもヘビーなORマッパーです。
とても複雑なSQLをPerlのデータ構造を基に組み立てる事ができるようにできていますが、 複雑なSQLを組み立てる場合、複雑なPerlのデータ構造を必要とします。
もちろん、dbhを普通に触ることもできるので、任意のSQLを実行させる事もできます。 ただ、任意のSQLを実行した場合、その結果はDBIを直接さわっているのとなんら変わりがありませんでした。
inflateもしてくれない、utf8周りの処理もしてくれない。 してくれないものだから、自前でその部分の処理を行う必要があります。 それではORマッパーの存在意義が薄くなってしまうと感じました。
せっかくDBICに色々なコンポーネントを追加しても任意のSQLを実行する場合その恩恵にあずかることができないのです。
また、DBICには色々な機能があるため、処理速度も重い方だと私はおもいます。 HotSpotな部分でパフォーマンスが求められる部分にはDBICを使わずにDBIを直接使う事もしばしばありました。
Skinnyの大きな目的としては
1:生のSQLを発行した時にinflateとかutf8-flagを処理してくれる
2:update,insert,deleteはDBICというかよくあるORマッパーみたいにできる
3:簡単なselectもよくあるORマッパーみたいにできる
4:小さなオブジェクト群で構成されており、デバッグが行いやすい
です。
貧弱だったりバギーだったりするかもしれませんがどうぞよろしく:)
feedback
DBIx::Skinnyのfeedbackをしたいと思う人は #perl-casual@irc.freenode.netもしくは#dbix-skinny@irc.perl.orgまたはメールでお願いします。