ルールの定義¶
1 つまたは複数のプランを作成したら、ルールを作成する必要があります。各ルールに、その条件が満たされた場合にユーザーセッションに割り当てるプランを割り当てます。
ルールを定義するには、以下の手順に従って実施してください。
[Rules] タブをクリックします。
[New] をクリックします。
名前と、必要に応じて新しいルールの説明を入力します。
このルールをすべてのユーザーセッションに適用する場合、[Always] を選択します。ただし、通常は、セッションのクエリにプランを適用するかどうかを判断するための条件を追加します。これを行うには、[Specify condition] を選択します。この場合、ユーザーのセッションの属性に基づく条件を入力します。
たとえば、条件が
user_agent='reports application'
である場合、Resource Manager は、user agent プロパティが「reports application」であるクライアントが開いたセッションにプランを適用します。クライアントがコネクションを開いたときに user agent プロパティを設定する手順については、「 アプリケーションのユーザーエージェントの設定 」を参照してください。1 日の特定の時間帯にクエリの実行を禁止するには、以下のような条件を使用できます。
user_agent='reports application' AND gethour(CURRENT_TIMESTAMP) >= 8 AND gethour(CURRENT_TIMESTAMP) < 23
この条件を持つルールは、レポート生成のシナリオで一般的な、CPU 負荷の高いクエリが夜間にのみ動作し、日常業務のクエリに干渉しないようにする場合に役立ちます。
Virtual DataPort へのコネクションを開いたユーザーに付与されているロールに基づいて条件を作成するには、(roles).value 属性を使用します。(roles).value = <role name> という条件は、ユーザーに割り当てられているロールの少なくとも 1 つが <role name> である場合に true になります。
これらの条件で使用できるすべてのフィールドのリストについては、付録「 Resource Manager: ルールの評価に使用できるフィールド 」を参照してください。
[Plan name] リストで、上記の条件が満たされた場合にユーザーセッションに適用するプランを選択します。
[Ok] をクリックして、ルールを作成します。
プランの条件は、[Rules] ダイアログのリストの上から下まで順番に評価されます。ルールの条件が満たされた場合、Resource Manager は、そのルールのプランをユーザーセッションに割り当てて、それ以上のルールの評価を停止します。
Resource Manager がルールの条件を評価する順序を変更するには、ルールを選択して または のボタンをクリックすることで、そのルールを上または下に移動します。
例 1
以下の 2 つのルールを定義したとします。
ルール A: 条件 user_name = acme
ルール B: 条件 access_interface = JDBC
JDBC アプリケーションが Virtual DataPort にユーザー名 acme で接続した場合、Resource Manager はルール A のプランを割り当てます。なぜなら、このユーザーセッションがルール B の条件を満たしているとしても、ルールのリストで最初に条件を満たすことがわかったルールはルール A だからです。
セッションがどのルールの条件も満たさない場合、Resource Manager はユーザーセッションにプランを割り当てません。
例 2
Data Catalog のユーザーにのみ適用されるルールを作成するには、 access_interface in ('Data-Catalog', 'JDBC')
という条件を指定してルールを作成します。Data Catalog は、一部のリクエストを実行する際に、独自のアクセスインターフェイスや標準 JDBC アプリケーションなどのアクセスインターフェイスを使用するので、「JDBC」も指定する必要があります。
これは、Scheduler、Diagnostic & Monitoring Tool、および Solution Manager にも適用されます。