- PR -

パフォーマンスを求めるならCを使わなければいけないのか

投稿者投稿内容
七味唐辛子
ぬし
会議室デビュー日: 2001/12/25
投稿数: 660
投稿日時: 2004-08-26 14:17
引用:

unibonさんの書き込み (2004-08-26 13:45) より:



COBOL や RPG は分からないのですが、
for (int i = 0; i < 1000; i++) {
hoge.execute("SELECT * FROM CUSTOMER WHERE CUSTOMER_ID = " + i);
}
みたいな SQL をレコードごとに発行するのはやめて、レコードセットを一度だけ取得して、レコードごとにフェッチしてくれ、ということではないのでしょうか。
あるいは、DBMS を使わずに ISAM 等でレコードブロック単位でファイルを読み書きしてくれ、なのでしょうか。
[/quote]

逆だと思います。そのようにしか取り出せないと思っているのでは、グループ関数とか
UNIONとか知らないのでは、したがって集計処理1行ずつ取り込んで、コードで、
必要な行を選択して、何度もワーク使い倒して出力するもんだと思っているのでは、ないかと

えんぞ@?
ぬし
会議室デビュー日: 2004/07/06
投稿数: 271
お住まい・勤務地: はまっこ
投稿日時: 2004-08-26 14:56
Pro* COBOL/Pro* C であってもデータベースのアクセスは
引用:

for (int i = 0; i < 1000; i++) {
hoge.execute("SELECT * FROM CUSTOMER WHERE CUSTOMER_ID = " + i);
}


↑のようなことは、まずしないはずです。
引用:

レコードセットを一度だけ取得して、レコードごとにフェッチ


とするのが通常です。

#なんか話しがみえづらいのはオレだけ...
skulker
ベテラン
会議室デビュー日: 2004/06/08
投稿数: 67
投稿日時: 2004-08-26 15:03
単純に、「RDBは遅い」という古いおつむの人なのでしょう。
基幹系はIMS-DBみたいな階層型DBやVSAMでないと駄目だと思い込んでいるんでしょう。
古い都銀はおいといて、金融のホストシステムでもCICS+COBOL+DB2の組み合わせは普通のご時世なのに。

DBイコールRDB、SQLという固定概念も駄目だとは思いますけど。
たーぞう
ぬし
会議室デビュー日: 2003/08/08
投稿数: 317
お住まい・勤務地: お花畑
投稿日時: 2004-08-26 15:18
この手の問題を、ふっる〜い人がどのように考えるかと言うとですねぇ。
 ・ファイルを全件読み込んで処理するなら、SAMファイルをシーケンシャルに
  読み込むのが一番処理が速い。

 ・SQLなんかでやるといろんな検索条件やら並べ替えやらがあって、ディスクI/Oが
  何回も発生するからとんでもなく遅くなるだろう。

 ・よってOracleだろうがDB2だろうが1件1件読み込んで処理するのが1番いいのだ!
  最近の若いモンはすぐにSQLだのなんだの楽な方向に向かおうとしよる!けしからん!!!

てなところですかね。

お客さん、そんなかんじの人じゃありませんでした?

[ メッセージ編集済み 編集者: たーぞう 編集日時 2004-08-26 15:23 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-08-27 08:28
引用:

MIDさんの書き込み (2004-08-26 12:32) より:

現在、基幹システムのリプレイスを検討しているのですが、その打ち合わせの中で、
「(オフコンでCOBOLやRPGで開発するのでなく)DB2やOracleなどを使うのなら、C言語(C++?)でレコードレベルアクセス(一件ずつREAD、WRITEするやり方)をしないとオフコン並のパフォーマンスは得られない。SQL文では話にならない」というような趣旨のことを云われました。


 OracleまたはDB2から、SQLを使わずにデータを取り出す方法を知りたい。。。

 そりゃぁね、データファイルの構造がわかっていれば、SQLの代わりを自作することで可能なんでしょうけど、どれだけ開発コストが跳ね上がることか。。。
はやぷ
会議室デビュー日: 2002/12/25
投稿数: 13
投稿日時: 2004-08-27 08:45
はやぷと申します。

ストアドプロシージャをC言語で書けっていうなら・・・
でもSQL使うなって言うんだから話はまた別か・・。
駄文すみません。
プリンス
ベテラン
会議室デビュー日: 2003/07/05
投稿数: 78
お住まい・勤務地: 神奈川
投稿日時: 2004-08-27 13:06
skulkerさんが指摘したように、お客様は単に階層型DB(IMS)とリレーショナルDB(Oracle)をごちゃ混ぜにしているんだと思います。階層型DBの場合は、ジョイン操作は必要なく、ツリー構造をトラバース(ノード間を渡り歩く)ことで、レコードを取得していきます。アメリカではすでにJava,RDBにリプレースされていると聞きますが、日本の金融界はまだまだIMSが生き残っているのでしょうか?
ようすけ
会議室デビュー日: 2002/07/26
投稿数: 17
投稿日時: 2004-08-28 01:07
たぶん、そのお客さんは、過去にオフコンのシステムを
C/S系に乗せ換えてもらったのだと思います。
その時に体感したのは、C/Sの方が遅いということだ
と思います。
で、オフコンのようにISAMアクセスをCでしなければ、
オフコン並の速度は出せないという結論に到ったのでしょう。

最後のオフコンのようにISAMアクセスとCってのは
その人の考えが、偏っている為かもしれません。
が・・・C/Sの方が遅いというのは、DB+SQLでも
あながち間違いではないようです。(私がすこしだけ調べた
限りです、また言語による速度はこの場合影響が少なすぎる
ので無視です。)

何故、そういう結論なのかは、以下のサイトの、C/Sの
真実1998年版を読んでください。
http://www2p.biglobe.ne.jp/~sakurait/index.htm
読めば、如何に私たちの考えがまだまだ浅いかってのが
思い知らされます。

ここまでやって、お客さんに説明して、初めて”さすが
プロだ!”と納得してくれるのかもしれません。

(惜しいのは、このサイト更新がとまってるのよね
また、汎用機やオフコン系の人のサイトって、かなり
参考になりますね)

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