![]() ![]() ![]() ![]() |
この章では、管理プロパティを作成する、メモリの管理およびキャッシュを有効化するなどタスクを含む ALDSP データスペースのコンフィグレーション方法について説明します。内容は以下のとおりです。
キャッシングおよびロギングなどのデータスペースに対する設定がシステム管理カテゴリにおける [一般] タブを使用して、表示およびコンフィグレーションできます。
物理ソース カテゴリでは、リソースのエンド ポイントのコンフィグレーションおよび変更、物理データ ソースの場所の表示、置換 SQL 文の作成ができます。
この節では、ALDSP Administration Console の物理ソース カテゴリを使用してこれらの機能をコンフィグレーションする方法について説明します。この章の内容は以下のとおりです。
定義されたリレーショナル データベースを使用するデータ サービスおよび関数ライブラリのリストを表示できます。[使用場所] タブをクリックすると、データ サービスとその固有のパスのリストが表示されます (図 4-2 を参照)。
リソース リストからデータ サービスを選択してデータ サービスに関するメタデータを表示できます。
開発サーバからプロダクション サーバにデータスペースを移動するには、データソースの場所または他のアーティファクトの名を変更する必要があります。たとえば、機密情報などの保護された情報を守るために開発時にサンプルのデータ ソースを使用している場合には、ある時点でテスト用のデータ ソースを実際のデータのある新しいデータ ソースに置換する必要があります。図 4-3 に示すように、物理ソース カテゴリを使用してこれらの変更ができます。
データ ソースのエンド ポイントを変更することによって、データ ソースの名と場所、および従属アーティファクトの対象名を変更することもできます。リレーショナル ソースの場合は、カタログ名、スキーマ名、パッケージ名、テーブル名、ストアド プロシージャ名、ビュー名およびリレーショナル関数が含まれています。エンド ポイントの変更は、元の値に戻されるか、さらに変更されるまで有効です。
注意 : | アーティファクトのエンド ポイントを変更する場合、アーティファクトのいくつかのプロパティは古いソースと一致する必要があります。たとえば、リレーショナル データ ソースに対するベンダのタイプ、バージョンなどのプロパティは古いソースと同じでなければなりません。 |
表 4-1 に、エンド ポイント設定を変更できるアーティファクトを示します。
ALDSP はリレーショナル データ ソースにアクセスするため SQL を使用します。コンパイル時に、組み込みクエリ オプティマイザが、バックエンド ソースに対する最適な実行方式を決定します。その後 SQL クエリが生成され、基底のデータベースに送信されます。
リレーショナル ラッパーによって生成される SQL クエリは、基底の各データベースに固有のものです。生成される SQL クエリは多くの場合で有効な結果を返しますが、生成されるクエリをさらに最適化したほうが望ましい場合もあります。ほとんどの RDBMS システムでは、そうした最適化が実行ヒントを介して行われます。
SQL 文の置換によって、生成される SQL クエリにヒントを追加することができます。これを行うには、ALDSP によってデフォルトで生成されるクエリの代わりに実行される、編集された SQL 文を指定します。
警告 : | ALDSP によって生成される SQL 文とは異なり、置換される SQL 文は検証なしで基底のデータベースに渡されます。このため、データベースにヒントを提供する以外の目的でこの機能を使用しないことをお勧めします。さらに、デプロイする前に、置換される SQL 文と生成される SQL 文をテストで比較して、予期されるパフォーマンス上の利点が得られることを確認するようお勧めします。 |
図 4-4 に示すように、物理ソース カテゴリで使用可能な [置換された SQL 文] タブを使用して、ALDSP Administration Console に置換 SQL 文が作成され、登録されます。
ALDSP サーバでは、元の生成された SQL クエリとユーザが指定する任意の置換クエリとの間に置換テーブルが保持されます。ユーザによって指定された SQL クエリのみが置換されます。
ALDSP の管理者は、ALDSP Administration Console を使用して置換クエリを定義および管理します。
置換クエリは、元の SQL クエリの代わりに実行されます。ALDSP 実行時エンジンは、元のクエリの型/カラム情報を使用して SQL 結果セットを読み込みます。「SQL 文の置換の要件」で示されている条件に違反した、不正な置換に関する問題があると、以下のような問題が発生する場合があります。
生成されるクエリでも置換クエリでも、外部化されたエンド ポイントのサポートには特別な構文が使用されます (詳細については、「データ ソースのエンド ポイントの変更」を参照)。次の置換クエリでは、こうした構文 (強調箇所) が示されています。
SELECT /*+ FIRST_ROWS (10)*/ t1."BILL_TO_ID" AS c1, t1."C_ID" AS c2, t1."DATE_INT" AS c3, t1."ESTIMATED_SHIP_DT" AS c4,
t1."HANDLING_CHRG_AMT" AS c5, t1."ORDER_DT" AS c6, t1."ORDER_ID" AS c7, t1."SALE_TAX_AMT" AS c8,
t1."SHIP_METHOD_DSC" AS c9, t1."SHIP_TO_ID" AS c10, t1."SHIP_TO_NM" AS c11, t1."STATUS" AS c12,
t1."SUBTOTAL_AMT" AS c13, t1."TOTAL_ORDER_AMT" AS c14, t1."TRACKING_NO" AS c15
FROM {RTLAPPLOMS}.{CUSTOMER_ORDER} t1
注意 : | 置換される SQL 文に SQL フラグメント (文字列リテラルなど) を追加する場合は、二重の開始中括弧を使用する規則にも従う必要があります。 |
注意 : | 次に例を示します。 |
SELECT t1.ID FROM CUSTOMER() WHERE $i/ID > `a{bee}c' return $i/ID
SELECT t1.ID FROM {CUSTOMER} t1 WHERE t1.ID > `a{{bee}c'
要求に応じて、元のクエリと同じ名前のプレースホルダを使用する置換クエリが指定されます。SQL 生成ステージの最後に、元の名前は現在のエンド ポイント名に置換されます。エンド ポイントの設定が見つからない場合は、元の名前が使用されます。
置換される SQL クエリに関しては、以下の要件があります。
注意 : | サブクエリを使用するクエリの場合、最も外側のサブクエリのみがカラムのエリアスを保持しなければなりません。内部のサブクエリは保持する必要はありません。 |
作成日時と最終更新日時が、システムによって自動追跡されます。置換クエリの使用の例は、SQL 文の置換の例に示しています。
SQL 文の置換を行う順序に決まりはありません。そのため、この節の例とその手順は、SQL 文の置換を作成およびテストする 1 つの方法にすぎません。
http://localhost:7001/dspconsole
SELECT t1."BIRTH_DAY" AS c1, t1."CUSTOMER_ID" AS c2, t1."CUSTOMER_SINCE" AS c3,
t1."DEFAULT_SHIP_METHOD" AS c4, t1."EMAIL_ADDRESS" AS c5, t1."EMAIL_NOTIFICATION" AS c6,
t1."FIRST_NAME" AS c7, t1."LAST_NAME" AS c8, t1."LOGIN_ID" AS c9, t1."NEWS_LETTTER" AS c10,
t1."ONLINE_STATEMENT" AS c11, t1."SSN" AS c12, t1."TELEPHONE_NUMBER" AS c13
FROM {RTLCUSTOMER}.{CUSTOMER} t1
SELECT /*+ FIRST_ROWS (10)*/ t1."BIRTH_DAY" AS c1, t1."CUSTOMER_ID" AS c2, t1."CUSTOMER_SINCE" AS c3,
t1."DEFAULT_SHIP_METHOD" AS c4, t1."EMAIL_ADDRESS" AS c5, t1."EMAIL_NOTIFICATION" AS c6,
t1."FIRST_NAME" AS c7, t1."LAST_NAME" AS c8, t1."LOGIN_ID" AS c9, t1."NEWS_LETTTER" AS c10,
t1."ONLINE_STATEMENT" AS c11, t1."SSN" AS c12, t1."TELEPHONE_NUMBER" AS c13
FROM {RTLCUSTOMER}.{CUSTOMER} t1
最適なスレッド数のコンフィグレーションは、ALDSP をデプロイするマシンの物理的なリソース、予期される負荷、およびデプロイするデータスペースのタイプに応じて変わります。スレッド数を増やすことで処理を高速化できますが、メモリが消費されます。優先およびリソースの可用性によって、スレッド数を増やす必要があります。
優先を決定およびサーバ スレッド数を設定する方法については、「www.dev2dev.com」の「ALDSP FAQ」を参照してください。
ALDSP Administration Console では、以下のオプションを使用してサーバのスレッド数が設定されます。
WebLogic Server のパフォーマンス チューニングの詳細については、『WebLogic Server パフォーマンス チューニング』ガイドを参照してください。
メモリの管理を有効にすると、ALDSP はメモリで管理したソート演算子および結合演算子を使用します。メモリで管理した演算子は、大きなデータセットの存在下でメモリの利用を制限するためディスクを使用します。各演算子は、時刻、メモリに項目の最大数を設定することが許可されています。処理する項目の数は最大数を超えると、演算子はタスクを終了するにはディスクを使用します。ここで、「項目」は処理する (結合またはソート) ものです。
注意 : | 別のクエリ ワークロードは、通常異なるサイズの項目が含まれます。 |
たとえば、2 つのソート演算子および 3 つの結合演算子を含むクエリ プランと想定します。演算子ごとに項目の最大数は 40,000 であると仮定してみましょう。クエリによって処理される全体な大量のデータにかかわらず、このクエリ プランは、同時にメモリで最も (2 + 3) * 40,000 = 200,000 項目が含まれています。
演算子の最大数は、ALDSP 対応サーバによって指定した時点で処理されるすべてのクエリ プランに介して同時に実行される演算子の総数を参照します。演算子の最大数および項目の最大数を一緒にサーバのメモリ利用の総数を管理するおよび「out-of-memory」例外に対する保護を提供できます。必要に応じて、ワークロードおよびデータ特性によってこれらの値を調整する必要があります。項目のサイズは実際のメモリ利用に影響するので、項目の数はメモリ利用の粗測量のみである。
管理プロパティとは、ALDSP Administration Console を使用してコンフィグレーションできるユーザ定義のプロパティです。管理プロパティの値は、XQuery 関数 (データ サービス関数またはセキュリティの XQuery 関数) で使用できます。
注意 : | セキュリティの XQuery 関数の詳細については、「ALDSP リソースの保護」を参照してください。 |
管理プロパティを使用することで、データ サービス関数またはセキュリティの XQuery 関数の本文を変更することなく管理者によって簡単に変更できる関数パラメータを指定できます。
データスペース内の任意のデータ サービスは管理プロパティの値を使用できます。プロパティ値には、BEA 関数 get-property()
を使用する XQuery を介してアクセスできます。この関数はプロパティ名を引数として取り、値を文字列として返します。また、パラメータのデフォルト値として機能する引数も取ります。デフォルト値は、そのプロパティがコンソールでコンフィグレーションされていない場合に使用されます。
以下の例では、管理プロパティを使用する XQuery 関数ライブラリの関数を示します。
declare function f1:getMaximumAccountViewable() as xsd:decimal {
let $amount := fn-bea:get-property("maxAccountValue", "1000.00")
cast as xsd:decimal
return $amount
};
注意 : | 削除したプロパティを使用する get-property() 呼び出しでは、プロパティのデフォルト値が使用されます。 |
コンソールでのオプレション カテゴリを使用して、長期にわたって実行するアクティブなクエリおよびデータスペースの更新をモニタすることができます。図 4-11 では、RTLApp データスペースについて実行中のアド ホック クエリを示します。
注意 : | アクティブなクエリおよび更新はデータスペースレベルでモニタできます。 |
アクティブな クエリまたは更新がサーバで長時間にわたって実行されている場合、テーブルに情報が表示されます。このテーブルでは、[関数名] フィールドの下に XQuery 関数をリストします。
クエリによってデータを取得するために予想以上の時間がかかると、[クエリの停止] をクリックしてクエリを停止することができます。
アド ホック クエリの場合、[関数] フィールドの関数名をクリックしてアド ホック クエリを表示できます。これによって、図 4-11 に示すように、サーバで実行中のアド ホック クエリが表示できます。
アクティブなクエリと同様にアクティブな更新もモニタできます。
場合によっては、別のデータスペースによってテーブルがロックされているために ALDSP でデータベース テーブルからデータを読み込めないことがあります。この場合、ALDSP によって発行されたクエリは、そのデータスペースがロックを解放するまでキューに入れられます。この状態を回避するには、トランザクション アイソレーションを設定して WebLogic Server 上の JDBC 接続プールでコミットされていないデータを読み込めるようにします。
トランザクション アイソレーション レベルを設定するには、次の手順に従います。
http://<HostName>
:<Port>
/console
たとえば、WebLogic Server のローカル インスタンス (自分のマシンで実行されているインスタンス) の Administration Console を起動するには、Web ブラウザのアドレス フィールドに次の URL を入力します。
SQL SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
![]() ![]() ![]() |