きどたかのブログ

いつか誰かがこのブログからトラブルを解決しますように。

半分寝てても怯むことなく質問をするKYなオレ

今日のアレはなんだったんだろうか…。


事前に集めたであろう質問は、誰が質問したのか分からない状態で、
書いたであろう人が何か積極的に発言したことは1つのみ。
他人の質問を咀嚼して、なんかオイラが質問の問答をしてしまっていたような…。
単純に僕がKYなだけ?
あんだけ人集まってるのに黙って時間を無駄にしてんじゃないの。
どんどん聞けばいいのに。
Officailな内容を知りたい部分と、
UnOfficialだがTipsのような工夫が知りたい部分とか、
まあ色々あるじゃないか。
ほとんど空っぽなんだからとりあえず餡を詰めておこうよ、アンパンマン。



自分勝手にその場で質問し、日頃の葛藤を解消していったが、
他の人はいったいどんなことを解消出来たのだろうか。
もう不思議でしかたない。


そういう自分は、主にSQLJに関するところで質問し、
DB2についてはお疲れで寝ていたのが実情か…。



全てが全て即座に解消されたわけではないが、
いくつかの事柄について僕の考察が正しいことの確認が取れた。
あやふやな状態がより硬い状態へ遷移することは良いことだ。
答えが存在していることが分かるだけでもだいぶ違う。
答えがないことが分からない状態は常に不安定な実験や、確認を伴い非常にコストがかかる時間帯だ。


バージョンに関する内容についてはかなり注意が必要そうだ。
SQLJはJavaを生成する点でやはり異色だ。
ドライバーバージョンだけならまだ良い。
トランスレートがsqlj.zipのバージョンに左右されるのであれば、
sqlj.zipはターゲットとするDB2と合わせるべきだ。
ん?いや、それ以前に合わせるべきだ。


sqlj.zipと言っても色々ある。
ローカルのSQLLIBに格納されてるやつ。(たぶん一番使うべきではない)
DB2からコピーしてきたやつ。
DB2 for z/OSからコピーしてきたやつ。(試したことないけど)
ローカルのRADのpluginsにあるやつ。
WASが隠し持ってるやつ。(これは私がそうであると疑っている部分です)


とりあえず今はLUWのDB2にあったやつに統一している。
少し前まではそれすらも不揃いの林檎ちゃんだった。
生成されたJavaファイルはLUWだとかに関わらず同じであって欲しい。
これはsqljコマンドの部分であるが、bindなどの作業は違いが出てくる可能性もある。
sqljなんかも-versionなんかで調べられるので、キチンと見ておく方が良い。


僕が心配しているのは、何かあった時にどのように切り分けるかだ。
差が少なければ少ないほど原因究明を楽にする。



みんなはRADとかWASの管理コンソールでほいほいやっとるが、
うちのチームはなかば自発的にant部隊をやり出して、
アプリケーションを簡単にデプロイするための方法を模索している。
そういえば、ある意味、僕の得意分野(?)の文字コードの話もあったな・・。
これはsqljに限らない話だから、まあ彼らがなんか指針を考えるだろう。



別にRADに依存したくないという欲求からやっている作業ではなく、
ソースの管理単位をsqljファイルのみとすること、およびプリコンパイルの自動化目的です。
クラスパスに必要なものがあれば、serは別のJarに存在しても良いみたいなので、
追々そのようなantに仕向けていこうと思う。


僕はオープン系の現場で働いた経験が無いので、
SQLについてどのように面倒を見ているのかよくわからない。
Oracleマスターとしての僕は「実行計画くらい自分で取れるでしょ」的に思う。
これはどちらかというとどのような体制を組むのかという話だなー。
オレはフレームワーク開発者だからそんなところまで面倒みない。バイバイ。


あとなんだっけかなー、そうだアクセスパスの話だ。
OracleSQLプロファイルのように、アプリケーションに変更を加えずに実行計画を変更する方法は特段無さそうだ。
Oracleの拙い経験では、多くの問題は索引の見直しで解決出来てしまうが、
そうではない場合SQL文の変更が必要になるケースとなるだろう。
Hint句を書いて直るならまだ良い。
だが、DB2にヒント句なんてないだろ?
それ以外の方法はアプリケーションのロジック変更になるんだろうな。


BIND時にアクセスパスが決定されることを考えると、
BIND時に統計情報を元にコストベースでDB2が考えるのだろうな。
ということは、僕らがやってるようなWASの管理コンソールでバインドしてると、
毎回バインドしてるから、バインドのタイミングではだいぶ統計情報が違ってるかも知れん。
なんだっけかな、人から聞いた話で言うと、
バッチ処理がしこたま走った後に、オンラインが急激なスローダウン的なこと。
仮に試験のフェーズにおいていきなり遅くなった的なことに出くわす可能性もある。
早いところ管理コンソールからバインドする方法ではない方法を提供しないとな。


まあ、うちのチームできっとantを書くからなんとかなりそうだな。
不格好ではあるがプリコンパイルのantはほぼ完成してるはず。
カスタマイザーの部分もなんとかなってほしい。