SQLとホスト言語

JavaRuby等のホスト言語はRDBMSに対してSQLを入力として
送信し、SQLの実行結果を出力として受け取ります。
SQLRDBMSの内蔵するSQLパーサで解釈され、実行されます。
ホスト言語はSQLのパース・実行を行いません。


JavaRuby等のホスト言語はRDBMS内のデータ構造にダイレクト
にアクセスすることはできません。


ホスト言語はSELECT文の実行結果全件を構造体として受け取ります。
ホスト言語がイテレータ形式でのテーブルへのアクセスを提供している
ようにみえても、実際は実行結果として受け取った構造体に対する
イテレータ形式での操作手段が提供されているにすぎません。


SELECT文で取得する件数を絞り込むことは必須で、絞り込んでいない
とホスト言語が実行結果として受け取る構造体が肥大化してしまいます。


PL/SQL等のDB上で実行するタイプの言語は、DB内へのデータ構造
SQLを介さずダイレクトにアクセスします、SQLと構文的に
似ていることが多いものの、SQLとは全くの別物です。


JavaRuby等のホスト言語はTCP/IPやDB固有のプロトコルを用いて
DBと接続し、通信します。


JavaRuby等のホスト言語ではDBとの接続・通信の詳細を隠蔽した
ライブラリが存在するので、ユーザはDBとの接続・通信の詳細を
気にすることなく利用できます。


DBとの接続を確立する処理は時間が掛かるので、DBとの接続をプール
して使い回ずことが必要であり、DBとの接続が外部要因により切断される
可能性の低い環境をターゲットにするDB連携アプリでは接続の使い回し
は当たり前となっています。無線LANのようにDBとの接続の外部要因に
よる切断が頻発する可能性のある環境ではこの限りではありません。


DBとの接続をプールしていても、SQLでの問合せには時間が掛かります、
SQLでの問合せ回数はできる限り減らす必要があります。


一本のSQLでの問合せの応答時間と、同じ問合せを複数のSQLに分割した
場合の応答時間を比較し、トータルでの処理時間が短くなる選択をすることも
必要です。


書きかけ、推敲中...。