- - PR -
パフォーマンスを求めるならCを使わなければいけないのか
1|2|3
次のページへ»
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-08-26 12:32
こちらには初めて投稿します。
現在、基幹システムのリプレイスを検討しているのですが、その打ち合わせの中で、 「(オフコンでCOBOLやRPGで開発するのでなく)DB2やOracleなどを使うのなら、C言語(C++?)でレコードレベルアクセス(一件ずつREAD、WRITEするやり方)をしないとオフコン並のパフォーマンスは得られない。SQL文では話にならない」というような趣旨のことを云われました。 データベースへのアクセスはSQLが基本、と考えていたのですが、それが根底から否定され、とまどっています。 実際、開発現場では、パフォーマンスを追求する必要があるときは、SQL(、もっと広い意味で言えば、JDBCやEJBなども含んで考えています)は使わないものなのでしょうか? みなさんのご意見をお聞かせください。 | ||||
|
投稿日時: 2004-08-26 12:46
C/S モデルでしょ?
レコードレベルアクセスなんてしてたら遅すぎて、オペレーターが死んじゃうよ? たぶん、旧システム(オフコン)は、クライアント端末は単なるコンソール(telnet)として 機能して、すべてのプロセスがサーバーで動作していたんだと思う。 だから、レコードレベルアクセスに耐えられるのよ。C/S で LAN 越しに レコードレベルアクセスなんてやっちゃあいけません。 きっと、その話をした人は何も分かっていないよ。無視したほうがいい。 PCベースで C/S モデルを組むなら、レコードレベルアクセスなんて言語道断。 SQLを使用して必要範囲のデータをクライアントに一括取得するのが常識です。 | ||||
|
投稿日時: 2004-08-26 12:49
はにまるです。
DBに対して情報アクセスする以上 SQL文は必要ですよね。(少なくともOracleでは) とすると、極力Cで処理すると云う事は 「Oracle上でのデータ操作」、「C言語上でのデータ操作」と2重処理になる訳です。 また、Oracleでは事前にメモリの確保や事前取得データのメモリ保持 インデックス検索等、パフォーマンス向上の為の技術が盛り込まれています。 それを自作のC言語で超えさせるのでしょうか? シーケンシャルアクセスで全件操作のならばC言語だよな。 と、私個人の知識では思っています。 基礎技術的な知識は疎いので逆に SQLよりCが早いって、どういう構想での発言か逆に伺いたいです。 | ||||
|
投稿日時: 2004-08-26 13:04
リプレースの話だよね?
その想定しているオフコンの性能と今度予定しているマシンの性能差も加味して、 更にチューニングした性能向上あたりも視野に入れないと意味が無いと思うのだが? 昔の機械でがりがりに作ったものより今の機械で安易に作ったほうが何倍も早いと いうのはありがちだし、最近だとメモリどっさり積んでハード性能に任せた性能向上 というのもある話だから局所的なプログラミングだけで判断しない方がいいと思いますね。 | ||||
|
投稿日時: 2004-08-26 13:25
ウチも来年辺り基幹システム入れ替えです。
で、オフコン並みのパフォーマンス出すのにファイルをレコード単位で読み書き...って なんか、RPGべったりじゃなくて、CにSQL組み込んでプログラム書けってことじゃろか? でも、皆さん仰るように今日日のPCというかIAサーバならJavaで書いても大丈夫な気もします。 また、Javaで書いてもSQLチューニングするとかやることは一杯あると思います(をい、勝手にJavaに決めるな でもも、レコード単位でファイル読み書きするCプログラムでトランザクションとか大丈夫なんかなぁ。 そっちの方が心配だ。 _________________ がうしぇ 人生のデザインパターン.... | ||||
|
投稿日時: 2004-08-26 13:36
文面どおり受け止めて返信します。
オープンシステムではSQLを使わずにDB2やOracleにアクセスしないとパフォーマンスが出ない、ということですか? そんなのは不可能だし(敢えて言い切ります)、DB2やOracleを使う意味がないじゃないですか。 | ||||
|
投稿日時: 2004-08-26 13:45
unibon です。こんにちわ。
COBOL や RPG は分からないのですが、 for (int i = 0; i < 1000; i++) { hoge.execute("SELECT * FROM CUSTOMER WHERE CUSTOMER_ID = " + i); } みたいな SQL をレコードごとに発行するのはやめて、レコードセットを一度だけ取得して、レコードごとにフェッチしてくれ、ということではないのでしょうか。 あるいは、DBMS を使わずに ISAM 等でレコードブロック単位でファイルを読み書きしてくれ、なのでしょうか。 | ||||
|
投稿日時: 2004-08-26 13:53
はい、一票いれさせていただきます^^ 安定性や信頼性のテストを考えたらエライコトになりそうな気がします。 (いや、それは一切考えないで、という要求でしたら別です。) もし、SQLを使わないとしたら、DBは捨ててファイルアクセスにしたほうがいいかも、 と考えてしまいました #一部被りました。 [ メッセージ編集済み 編集者: Ken-Lab 編集日時 2004-08-26 13:56 ] |
1|2|3
次のページへ»