shared.xmlのDB接続情報と.kjbファイルのDB接続情報
きょうはshared.xml
についてのメモです。
先日のポストで、Spoon(開発および手動実行ツール)やKitchen(バッチ実行ツール)を起動する際、環境変数KETTLE_HOME
に.kettle
ディレクトリの親ディレクトリを指定することで、任意のkettle.properties
やshared.xml
をロードさせることができると述べました。この後者のshared.xml
はデータベース接続を「共有」状態としたときに当該接続情報が記録され、複数のジョブで「共有」できるというものです。
ところでこの「共有」しているデータベースを使ったジョブのファイル(.kjb
)をテキストエディタで開いてみるとここにも接続情報が記載されていることがわかります。
... <connection> <name>pgsql_localhost_dvdrental</name> <server>${PG_SERVER_HOST}</server> <type>POSTGRESQL</type> <access>Native</access> <database>dvdrental</database> <port>${PG_SERVER_PORT}</port> <username>${PG_USER_ID}</username> <password>${PG_USER_PASSWORD}</password> <servername/> ...
では、KETTLE_HOME
のshared.xml
に記載された接続情報と.kjb
に記載された接続情報はどちらが優先されるのでしょうか?
KETTLE_HOME
を設定しつつspoon.sh
を起動してためしてみたところ、優先されるのはshared.xml
の接続情報でした。[ビュー]タブの[データベース接続]の欄に表示される接続情報はあくまでもshared.xml
からロードされる情報で、Spoon上でジョブを実行したときも同じ情報が使用されました。
これはKitchenも同様でkitchen.sh
でジョブを起動したときもKETTLE_HOME
のshared.xml
の情報が優先されました。
「まあそうでなくては困る」という結論ではありますが、上述のようにジョブ・ファイルに冗長化記述されていることを考えれば、この挙動について理解しておくことは重要なことだと思います。