グローバルリソース

グローバルリソースとは

グローバルリソースとは、データベースやメールサーバ、FTPサーバなどのデータリソースへの接続設定です。すべてのプロジェクト・スクリプトから使用できます。
グローバルリソースはコントロールパネルの「グローバルリソースの設定」から登録・変更・削除などの管理を行うことができます。

グローバルリソースには以下のような利点があります。

コンポーネントプール

グローバルリソースは多くの場合、データリソースへ接続するための実際のコネクションを持っています。コネクションの生成は一般的にコストの高い処理といわれています。そのため、一度生成したコネクションをプール(ためる)し、必要となった際にコネクションを再使用することで生成コストを低く抑えます。 このように実際のコネクションをプールする仕組みのことを「コンポーネントプール」と呼びます。
SkyOnDemandでは、「グローバルリソースの設定」で、コンポーネントプールの設定を行うことができます。
設定できる項目は以下の通りです。 各項目の詳細は以下の通りです。

コンポーネントプールの有効/無効

コンポーネントプールを有効にすると、対象となるデータリソースに実際に接続されたコネクションがプールされることになります。
対象となるデータリソースを管理する上で、使用後すぐにコネクションを解放したい場合もあります。そのような場合にはコンポーネントプールを無効にします。
コンポーネントプールを無効にした場合、データリソースに接続するたびに実際のコネクションの生成が行われるため、パフォーマンスが低下する可能性があります。

プールされるコネクションの初期値および上限値

プールされるコネクションの初期値には、SkyOnDemand Server起動時にプールされるコネクション数を設定します。
トランザクション数が多く、常時一定数以上のコネクションが必要な場合に、初期値に最低限のコネクション数を設定することを検討してください。
また、初期値に大きな値を設定すると、SkyOnDemand Serverの起動に時間がかかるほか、対象となるデータリソースへ使用されないコネクションが張られることになります。

プールされるコネクションの上限値には、対象となるデータリソースへのコネクションの最大数を設定します。
この値を超えて対象となるデータリソースに接続することはありません。対象のデータリソースのリソース管理を行いたくない場合に、最大値を設定することを検討してください。
最大値が小さすぎると、多くのスクリプトがコネクション使用待ち状態になり、システム全体のパフォーマンスが低下します。逆に大きすぎると、対象のデータリソースがリソース枯渇に陥る可能性があるため、リソース管理という観点からも推奨できません。

対象となるデータリソースへの不可、スクリプトのパフォーマンスのバランスを考慮し、初期値および上限値を設定してください。

プールされるコネクションの生存期間

プールされるコネクションは接続の生存期間を過ぎた場合、次の「コンポーネントプールGC」が実行されたタイミングで破棄されます。
コンポーネントプールGCとは、プールに格納されたコネクションを定期的にチェックし、ある条件を満たしたコネクションを破棄する機構です。
以下で、グローバルリソースが破棄されるタイミングを説明します。
()内の番号は「コンポーネントプールGC図」の番号を表します。
  1. (1)と(2)の間のタイミングでグローバルリソースが生成されます。
    →生存期間のタイマーがカウントダウンし始めます。
  2. (2)と(3)の間のタイミングでグローバルリソースが使用されます。
    →生存期間のタイマーがリセットされ、プールに戻されたタイミングからカウントダウンし始めます。
  3. (4)と(5)の間のタイミングでグローバルリソースの生存期間が超過します。
    →このタイミングではまだグローバルリソースはプールから破棄されません。
  4. (5)のタイミングで、グローバルリソースが破棄されます。
コンポーネントプールGC図

コンポーネントプールのリセット

コントロールパネルなどからコンポーネントプールのリセットを行うことができます。
リセット時の動作は以下の通りです。

各グローバルリソースがサポートする接続先のバージョンについて

各グローバルリソースは、[接続タイプ]または[種類]に表示のバージョンのみをサポートします。
[接続タイプ]または[種類]に接続先のバージョン表記がない場合は、各アダプタの「稼働環境」のページでサポートバージョンを確認してください。

たとえば、データベースアダプタなどで接続先のデータベースのバージョンが変更になった場合には、必ずそのバージョンをサポートするグローバルリソースへの変更を行ってください。

グローバルリソース名について

各コンポーネントでは接続先に設定されたグローバルリソースの接続情報の取得を「グローバルリソース名」で行います。
グローバルリソース名を登録する際には、同一SkyOnDemand Server上のほかのコンポーネントで参照していない一意な名前を付けてください。

また、以下のような設定を行うこともできます。
  1. あるコンポーネントで使用しているグローバルリソース名を変更
  2. 新規にグローバルリソースを作成し、上記1.で変更する前の名前を指定
こうすることで、スクリプトの変更を行わずに別のグローバルリソースに変更することができます。たとえば、データベースアダプタなどで接続先のデータベースのバージョンが変更になった場合、簡易に対応することができます。

同一コンポーネントのグローバルリソースを使用すること、接続先データベースにスクリプトレベルで変更が必要となる相違点がないこと(テーブル名やカラム名、型情報など)が前提になります。