- PR -

Database Expert 会議室での質問について

投票結果総投票数:35
SQLで可能なことは極力SQLに任せて実現する。 26 74.29%
SQLは単純化し、極力ロジックで実現する。 9 25.71%
  • 投票は恣意的に行われます。統計的な調査と異なり、投票データの正確性や標本の代表性は保証されません。
  • 投票結果の正当性や公平性について、@ITは一切保証も関与もいたしません。
投稿者投稿内容
るぱん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 1370
投稿日時: 2007-11-27 16:01
るぱんです。

個人的な基準です。たたき台にしてみて下さい。
コード:
1.テーブルが業務の流れに添った形
  A.業務上特異な計算処理
    ビジネスロジックに記述
  B.それ以外
    極力SQLにて。不可能な場合はBatchの使用を考慮

2.テーブルが業務の流れに添っていない形
  A.業務上特異な計算処理
    ビジネスロジックに記述
    ※そもそも論で切り分けて不可能な場合、
     SQLを切り分ける形で業務に併せに行く。
     メンテナンス性能を考慮

  B.それ以外
    極力SQLにて。不可能な場合はBatchの使用を考慮
    ※そもそも論で切り分けて不可能な場合、
     SQLを切り分ける形で業務に併せに行く。
     メンテナンス性能を考慮


Error401
常連さん
会議室デビュー日: 2007/03/12
投稿数: 39
投稿日時: 2007-11-27 16:32
いわゆる「SQLパズル」(http://oraclesqlpuzzle.hp.infoseek.co.jp/にあるような問題)の場合は、SQLで書いたほうが速い場合が多いので、SQLで書きます。

とはいっても、数十行や百行を超えるレベルのものは、プログラムから直接SQLを発行することはなく、Viewかストアードサブプログラムを使用しますので、xUnitとの親和性もそれほど悪いとは思っていません。開発対象のプロダクトの使用言語ではない言語も使えますし。

質問の「どちらを選んでもAPのパフォーマンスに大差がない」という場面に出会うことはめったにないのですが、その場合はどちらで実装したほうがReadability, Testabilityに優れているかで、その都度判断すると思います。
なので、どちらも選択しませんでした。
KOX
大ベテラン
会議室デビュー日: 2004/08/23
投稿数: 142
投稿日時: 2007-11-27 17:52
(1)に投票しました。
基本はSQLのみで実装します。
無駄なデータをアプリ側で処理するのも面倒ですし、
解析する際にプログラムとSQLのどちらも行う必要があるから。
おーたむや
会議室デビュー日: 2004/04/16
投稿数: 1
投稿日時: 2007-12-06 00:39
SQLはあくまでDBアクセスが役割であってプログラムの重要な部分を担ってはいけないですね。あくまでも補助です。ビジネスロジックをSQLに入れてしまうと、変更に弱いプログラムになってしまいコストがかかります。

上総
大ベテラン
会議室デビュー日: 2006/06/22
投稿数: 107
投稿日時: 2007-12-06 18:06
私は極力ビジネスロジックをも含めて、SQL(ストアド)で処理を行う派です。

ネットワーク上でデータをやり取りするよりも、サーバーで一括で処理を行い、
正常・異常の終了コードだけ返す方がスマートですね。
大抵はクライアントで処理を行うよりもレスが良いですし、クライアント端末の
方がサーバー端末より高スペックって事も無いでしょうしね。

スキルアップ/キャリアアップ(JOB@IT)