- PR -

基本的な業務システムの作り方について

投稿者投稿内容
Anthyhime
ぬし
会議室デビュー日: 2002/09/10
投稿数: 437
投稿日時: 2007-08-11 08:51
 SQLServerのTransact SQLによるストアドプロシージャの開発は決してPL/SQLに比べると、生産性は高くはないです。また、あまりにも複雑な仕組みを作ろうとすると、保守が難しい製品が出来上がる可能性があります。
 未経験ならなおさらリスクが高まると思います。
 パフォーマンスが必要な処理のみストアドプロシージャを利用し、通常の処理は生産性、保守性の比較的高いVB.NETでADO.NETで処理するのが一般的な手法かと思います。
 「VB.netの中にSQLがというのが違和感」とのことですが、こうしたプログラムの中にSQLを埋め込む手法は一般的です。またSQLを分離して管理したいのであれば、SQLを外部のファイルにまとめてはどうでしょうか。
引用:

ちなみに、ストアドプロシージャとは別にサーバー側のアプリケーション(サーバーにおいてあるプログラム)がクライアントから処理を受けてデータを渡す・・・というのはあまり一般的ではないのでしょうか。


 一般的です。が、「VB.net自体初めてで」で、.NET RemotingやWebServiceを利用したリモートオブジェクトの配備、呼び出しは、少しチャレンジングかも知れません。
さかもと
ぬし
会議室デビュー日: 2004/05/14
投稿数: 586
投稿日時: 2007-08-11 09:46
おはようございます。さかもとと申します。

引用:

ちなみに、ストアドプロシージャとは別にサーバー側のアプリケーション(サーバーにおいてあるプログラム)がクライアントから処理を受けてデータを渡す・・・というのはあまり一般的ではないのでしょうか。


別に特殊なことではないと思います。要件次第、技量次第で色々な選択肢がありますし。
又、SQL文をプログラムに埋め込むことも既出ですが普通によくやります。

ストアドのデメリットはAnthyhime様おっしゃるように「生産性は高くない」と言われているところでしょうか?(PL/SQL良く知らないのでどこがどうとは言えませんが)
あまりにも複雑なことをストアドに任せようとするとT-SQLに関する結構な技量が必要になることも否めません。でも件数を読んで戻す、とかテーブルを更新するとか、基本的なことを考えれば、T-SQL未経験だと言っても習得も実装もそれほど難しくはありません。

混乱を招くかもしれませんがSQL CLR
という選択肢も出てきます。


_________________
------------------------------------------
拝啓、さかもとと申します。

[ メッセージ編集済み 編集者: さかもと 編集日時 2007-08-11 09:46 ]
yawata133
ベテラン
会議室デビュー日: 2007/04/06
投稿数: 76
投稿日時: 2007-08-11 17:47
Visual Studio でSQLを実行することはそれほどは問題ないはずです。ADO.NETについて調べればなんとかなります(ただし私の言うように排他制御については確信がもてないのです)実際SQL分を実行させるのとストアードプロシージャを実行させるのとはあまりコードが変わりません。ストアードプロシージャを多用するためにはコード中に何の処理を実行させるのか詳しいコメントを入れないとわからなくなります。

バッチ処理を高速化させるのは昔はストアードプロシージャを実行させるのが普通でしたが、サーバやPCの処理能力が格段にアップしたので、サーバーでプログラムを実行したり、1GLANで接続したサーバーやPCで処理を行うのも手です。

VSを使う上で問題なのはやっぱり排他制御かな〜と思いますし、これについてのスレッドを上げろという意見がありますが、かなり重い議論になるので、あえて今はさけます。不満かと思う皆さんが多いと思いますが、ご勘弁ください。VS2005 C#については私のHPや他の人のHPを見てみればどんなものかわかると思います。

[ メッセージ編集済み 編集者: yawata133 編集日時 2007-08-13 07:57 ]
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2007-08-11 22:43
引用:

yawata133さんの書き込み (2007-08-11 17:47) より:

VSを使う上で問題なのはやっぱり排他制御かな〜と思いますし、これについてのスレッドを上げろという意見がありますが、かなり重い議論になるので、あえて今はさけます。不満かと思う皆さんが多いと思いますが、ご勘弁ください。VS2005 C#については私のHPや他の人のHPを見てみればどんなものかわかると思います。


これはまるくさんの、この発言のことを指していると思われますが。

引用:

まるくさんの書き込み (2007-08-10 13:36) より:

引用:

は、排他制御が必要です。誰か.net で排他制御できるカウンターの作り方を教えていただきたいです。



別スレッド立ててね。


これを読むと「.net で排他制御できるカウンターの作り方」について
「別スレッド立ててね」と書かれているように見えますけど。
排他制御についてのスレッドをあげろという趣旨の発言はどこにも
見られませんよ。
そもそも質問主の発言を一切スルーして、ご自身の質問を投げるの
はいかがかと思いますし、まるくさんもそれに対して「別スレッド立て
てね」と書かれているのだと思います。

以前からyawata133さんの発言を拝見していますが、元発言をよく
お読みになって、答えられるかどうかよく判断してから回答された
方がよろしいかと。
yawata133
ベテラン
会議室デビュー日: 2007/04/06
投稿数: 76
投稿日時: 2007-08-12 19:06
TO ボビ王子様

以前から私の発言を読んでくださってありがとうございます。答えられるか答えられなか、質問の内容を確認するために投稿しているので、今後もがんがん投稿させていただきます。
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2007-08-12 20:52
あーあ。救いようがない類だったか。
どせい
大ベテラン
会議室デビュー日: 2006/10/25
投稿数: 145
投稿日時: 2007-08-13 01:15
引用:

yawata133さんの書き込み (2007-08-12 19:06) より:


的外れな情報を投稿するなとは言わないけど、ほどほどにね。
質問者はわからないことがあるからスレ立ててるのに、
そこで的外れな情報出して、解決までの道を遠回りさせちゃ可哀相だよ。

#「回答者は絶対間違えるな」なんてすごく窮屈だし、求める気はないけども
#それなりの精度を出すのが回答者の嗜みなんじゃないかなあ?

引用:

yawata133さんの書き込み (2007-08-12 19:06) より:
TO ボビ王子様



ハンドル名とはいえ、間違えたまま放置は非常に失礼だよ。
denden
会議室デビュー日: 2007/07/04
投稿数: 8
投稿日時: 2007-08-14 00:07
みなさま、ご回答ありがとうございます。
いろいろといただきましたので、自分なりにまとめて考えてみたのですが

1.SQL構文をVB上に書くのはなんら問題はなくてむしる普通
2.処理速度やバッチ処理を考えるならストアドプロシージャがよさそう
3.でもストアドプロシージャにはコツがいるらしい
4.クライアントとサーバーで処理させるという意味では、ストアドプロシージャを含めていろいろな方法が実際に使われているけれども、それなりの知識と技術がいるので効率化等も踏まえて判断したほうがいい

という印象をうけました。

いろいろな議論の発端となってしまった(すみません)排他制御については、どの方法もあまり関係ない、という感じでしょうか。これについては別途検討が必要なようですね。

ストアドプロシージャ自体は身に着けておいてもいい知識だと感じましたし、効率化という意味ではいいなと思うのですが、生産性と保守がネックですね。もっとも、処理自体はそこまで複雑にはならないと思うので、あとはストアドでどのくらいのことまで実現できるかによるかなと思いました。

OracleのPL/SQLだと大概なんでもいける気がするので、あまり気にしていなかったんですが、SQLServerだと若干厳しいでしょうか。

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