Perl + O/Rマッパーについて。


O/Rマッパーの導入について検討しています。PerlだとDBIx::Class、Class::DBIなどがありますが、あなたは実用(業務で使用するレベル)に耐えうると思いますか?


コードは結構キレイになりそうですが、パフォーマンスや複雑なSQL表現にどこまで耐えうることができるか、まだ学習途中ということもあり不安です(;´∀`)

実際に大きめのWebアプリで使用されている例や、あなたの(裏付けのある)主観、または参考になりそうなページなどがあれば教えてください。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2007/06/12 12:10:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:Agrew No.1

回答回数3ベストアンサー獲得回数0

ポイント35pt

http://www.hatena.ne.jp

URLはダミーです。

アルバイトで某飲食店情報サイトのプログラム開発をしている者です。

あまり多くは書けませんが実際のところ高機能なO/Rマッパーは管理が大変でSQLをハードコーディングしている例がほとんどです。

DBICやCDBIを用いずとも通常のDBIモジュールでプリペアードステートメントを使えば良いのではないでしょうか?

id:katsube

管理が大変というのは、具体的にどういった部分が大変と言うことでしょうか?

2007/06/07 16:37:53
id:wm5775 No.2

回答回数351ベストアンサー獲得回数4

ポイント35pt

こんにちは。

実用というのが指し示す用途やレベルが判らないので何ともいえませんが、intersystemsのcacheというデータベースは、SQLでもオブジェクトモデルでも同一スキーマで定義でき、両方からアクセスすることが可能で、かなり高速だと思います。

intersystems cache Perl Binding

http://www.intersystems.co.jp/support/csp/gbpl/gbpl_intro.html

O/Rマッパーではなく、DBそのものをダイレクトに叩けるのでマッピングのオーバーヘッドはありません。

#データベース自体の仕組みが全然違うのですが、Oracleより圧倒的に高速であるとintersystemsは主張しております。

#ちなみにこのデータベースのストレージの基本であるMUMPSという言語の連想配列機能を使ってオブジェクトのエミュレーションをすると、異様に高速です。

id:katsube

回答ありがとうございます。

例えば仕事で「はてなのクローン作って」と言われた時にDBICやCDBIを使うかという感じで考えていただければ良いかと思います。

cacheはウワサでは聞いたことあったのですが、マユツバではなく実際に速いんですね。ソースも割とキレイに書けそうですね。ありがとうございますー。

2007/06/07 16:35:40
  • id:b-wind
    Class::DBI, DBIx::Class ともプラグインが大量にありますので割と細かい制御ができます。
    また、SQLを直接記述する事もできますので、複雑なSQLにも問題なく対応できます。

    パフォーマンスについては当然マッピングの分だけオーバーヘッドはありますが、逆にORマッパーのほうでキャッシュ機能が実現されていたりで使い方しだいと言う面はあります。
    ただ、Class::DBI と DBIx::Class の比較ではおおよそ DBIx::Class の方が高速です。というか「はてな」は DBIx::Class 使ってるはず。
    http://d.hatena.ne.jp/naoya/20061022/1161490258

    実際問題生産性とメンテナンスコストを考えると Perl に限らず ORマッパーの無い開発は自分は遠慮したいですね。
    真にパフォーマンスが要求される部分のみ生のSQLを使用する程度で十分です。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません