同期サーバー 管理ガイド


サブスクリプション・レベル、グループ・レベル、またはユーザー・レベルでの水平フィルター操作

サブスクリプション・レベル、グループ・レベル、またはユーザー・レベルでの水平フィルター操作では、データ・ソースからデータを選択するために SQL 文節を使用します。SQL 文節の内容は、DB2 DataPropagator サブスクリプションの「Advanced Subscription Definition (拡張サブスクリプションの定義)」ノートブックの「Rows (行)」ページおよび JDBC サブスクリプションの「Advanced Replication Subscription (拡張レプリケーション・サブスクリプション)」ノートブックの「Rows (行)」ページでコントロールしています。これらのノートブックをオープンするには、次のようにします。

  1. JDBC サブスクリプションまたは DataPropagator サブスクリプションを作成または編集します。
  2. Define Subscription (サブスクリプションの定義)」をクリックします。「Define Replication Subscription (レプリケーション・サブスクリプションの定義)」ウィンドウがオープンします。
  3. Advanced (拡張)」をクリックします。 DB2 DataPropagator サブスクリプションの場合、「Advanced Subscription Definition (拡張サブスクリプションの定義)」ノートブックがオープンします。JDBC サブスクリプションの場合は、「Advanced Replication Subscription (拡張レプリケーション・サブスクリプション)」ノートブックがオープンします。

単純水平フィルターの定義

サブスクリプション・レベルでデータをフィルターに掛けるには、次のようにします

「Subscription (サブスクリプション)」ノートブックの「Rows (行)」ページで、「All rows needed (すべての行)」ボックスに SQL 文節を入力します。次の形式で、SQL 文節全体を 1 行に入力する必要があります。

city='myValue'

SQL 文節の先頭に WHERE を入力しないでください。ボックス内に入力された文節に、WHERE が自動的に付加されます。たとえば、次の文節では、Los Angeles と同じ city の列値を持つ列とだけ同期をとります。

city='Los Angeles, CA 90061'

グループ・レベルでデータをフィルターに掛けるには、次のようにします

  1. 「Subscription (サブスクリプション)」ノートブックの「Rows (行)」ページで、「Subset of rows for individual users (個々のユーザーがもつ行のサブセット)」ボックスに SQL 文節を入力します。 SQL 文節の先頭に WHERE を入力しないでください。ボックス内に入力された文節に、WHERE が自動的に付加されます。SQL 文節の値を使用する代わりに、パラメーターを挿入します。たとえば、city の列のパラメーターである :fcity. の値を基準にして、VNPERSON 表をフィルターに掛けるには、次のように入力します。
    city=':fcity.'
    

    ここで、:fcity. は、列値のパラメーターです。

  2. フィルターに掛けるグループの「Create or Edit Group」ノートブックをオープンします。フィルター・パラメーターを使用して作成したサブスクリプションは、編集中のグループに割り当てなければなりません。
  3. 「Group (グループ)」ノートブックの「Data filter (データ・フィルター)」ページで、「Add (追加)」をクリックします。
  4. Parameter name (パラメーター名)」フィールドに :fcity. と入力します。

    追加テキストを使って、自分のパラメーター名を一意的に識別できるようにすることをお勧めします。たとえば、パラメーター名をコロン (:) で始めて、ピリオド (.) で終わらせる、というようにしてください。

  5. Default value (デフォルト値)」フィールドに、デフォルト値を入力します。たとえば、次のように入力します。
    Los Angeles, CA 90061
    

    特殊値も使用できます。値 $USERNAME には、パラメーター値として同期サーバーのユーザー ID が挿入できます。これにより、特定のフィールドで同期サーバー ユーザー ID を使用して、特定のユーザーが作成した行をデータ・ソースの挿入することができます。

  6. OK」をクリックします。

このグループに割り当てられた各ユーザーは、VNPERSON 表から、city 列の値が Los Angeles, CA 90061 である行のみを受け取ります。それ以外のグループは、構成されたフィルターに応じて、VNPERSON 表のすべて、または VNPERSON 表の特定のサブセットを受け取ります。

ユーザー・レベルでデータをフィルターに掛けるには、次のようにします

  1. 「Rows (行)」ページで、「Subset of rows for individual users (個々のユーザーがもつ行のサブセット)」ボックスに SQL 文節を入力します。SQL 文節の先頭に WHERE を入力しないでください。ボックス内に入力された文節に、WHERE が自動的に付加されます。 SQL 文節の値を使用する代わりに、パラメーターを挿入します。たとえば、city の列のパラメーターである :fcity. の値および ID 列 のパラメーターである :fid. の値を基に VNPERSON 表をフィルターに掛けるには、次のように入力します。
    city=':fcity.' and id=':fid.'
    

    ここで、:fcity. は city の列値のパラメーターです。また、:fid. は ID 列値のパラメーターです。

  2. 「Create Subscription (サブスクリプションの作成)」ノートブックを完成させ、クローズします。
  3. フィルターに掛けるユーザー・グループの「Create or Edit Group」ノートブックをオープンします。フィルター・パラメーターを使用して作成したサブスクリプションは、編集中のグループに割り当てなければなりません。
  4. 「Group (グループ)」ノートブックの「Data filter (データ・フィルター)」ページで、「Add (追加)」をクリックします。
  5. Parameter name (パラメーター名)」フィールドに :fcity. と入力します。
  6. Default value (デフォルト値)」フィールドに、デフォルト値を入力します。たとえば、次のように入力します。
    Los Angeles, CA 90061
    
  7. OK」をクリックします。
  8. 再度「Add (追加)」をクリックして、2 つ目のパラメーターを追加します。
  9. Parameter name (パラメーター名)」フィールドに :fid. と入力します。
  10. OK」をクリックします。
  11. 「Group (グループ)」ノートブックを完成させ、クローズします。
  12. フィルターに掛けるユーザーの「Create or Edit User」ノートブックをオープンします。フィルター・パラメーターを使用して、ユーザーをグループに割り当てなければなりません。
  13. 「Group (グループ)」ノートブックの「Data filter (データ・フィルター)」ページで、:fid. パラメーターを選択し、「Change (変更)」をクリックします。
  14. User override (ユーザー・オーバーライド)」フィールドに、値を入力します。たとえば、このユーザーの :fid. 値をオーバーライドし、900000401 をセットするには、次のように入力します。
    900000401
    
  15. OK」をクリックします。

このユーザーは、City 列の値が Los Angeles, CA 90061 で、かつ Id 列の値が 900000401 のレコードのみを受け取ります。 VNPERSON には、この値を持つレコードが 1 件あります。同じグループに割り当てられた他のユーザーは、VNPERSON 表から、City 列の値が Los Angeles, CA 90061 で、かつ User 列の値がデータ・フィルターによってセットされたものである行のみを受け取ります。それ以外のグループは、構成されたフィルターに応じて、VNPERSON 表のすべて、または VNPERSON 表の特定のサブセットを受け取ります。

グループ・レベルまたはユーザー・レベルでの複合水平フィルターの定義

データベースおよびユーザー管理におけるいくつかの状態では、グループまたはユーザーが参照できる行を制限するために、「Subset of rows for individual users (個々のユーザーがもつ行のサブセット)」フィールドの複合 SQL WHERE 文節の定義を呼び出します。フィルターを定義する際は、ミラー・データベース内の表を参照する場合や、グループまたはユーザー用のパラメーターを使用する場合や、あるいはこれらの方法を組み合わせて使用する場合があります。単純水平フィルターを作成するための基本ステップについては、単純水平フィルターの定義を参照してください。

DB2 Everyplace 同期サーバーは、フィルターと共に使用する、SQL WHERE の標準インプリメンテーションのサブセットを提供します。サブセットの構文については、フィルターの構文を参照してください。

次の例は、ミラー・データベース内の他の表を参照する方法と、水平フィルター操作のためのパラメーターの使用方法を示しています。

Ziptab および Business という名前の 2 つの表を管理していて、この両方がミラー・データベースに入っているとします。 Ziptab には特定の市の ZIP コードが入っており (表 4)、Business には企業情報とその企業の ZIP コードが入っています (表 5)。カリフォルニア州サンホセ (San Jose, California) のユーザーには、その市の企業のみを見せたいとします。グループを作成しておき、これらのユーザーをそのグループに割り当てておきます。


表 4. Ziptab 表

City Zipcode
San Jose 95141
San Jose 95123
Los Angeles 93002


表 5. Business 表

Business Zip
IBM 95141
My Company 95123
Your Company 93002
Another Company 94888

「Rows (行)」ページの「Subset of rows for individual users (個々のユーザーがもつ行のサブセット)」フィールドに、次の文節を入力します。

(Zip) IN (SELECT Zipcode FROM Ziptab WHERE City = ':fcity.')

:fcity. は、City 列の値のためのパラメーターです。グループに対して、この値を San Jose にセットします。

そして、「Create Subscriptions (サブスクリプションの作成)」ノートブックを完了し、クローズします。その結果、同期の後は、デバイス上の「Business」表に表示される行は、次のものだけになります。

表 6. デバイスに表示される行

Business Zip
IBM 95141
My Company 95123

フィルターの構文

モバイル・デバイス管理センター (MDAC) でレプリケーション・サブスクリプションを作成するときに、SQL の WHERE 文節と似た文節を使用して、個々のユーザーのためにフィルター操作を行うことができます。 DataPropagator サブスクリプションの「Advanced Replication Subscription (拡張レプリケーション・サブスクリプション)」ノートブック、あるいは JDBC サブスクリプションの「Advanced Replication Subscription (拡張レプリケーション・サブスクリプション)」ノートブックの、「Subset of rows for individual users (個々のユーザーがもつ行のサブセット)」フィールドに、文節を入力します。

下記の構文図を使用する際には、制限があります。制限は次のとおりです。

構文

フィルター
 
   .-論理演算子 AND または OR-.
   V                          |
>>---| ディメンション |-------+--------------------------------><
 
ディメンション
 
|--+-列名--IN--| 副選択 |-----------+---------------------------|
   |    .-,----.                    |
   |    V      |                    |
   +-(----列名-+--)--IN--| 副選択 |-+
   '-| 単純単項フィルター |---------'
 
副選択
 
|--(--| SELECT 文節 |--| FROM 文節 |--+----------------+--)-----|
                                      '-| WHERE 文節 |-'
 
SELECT 文節
 
           .-,----.
           V      |
|--SELECT----列名-+---------------------------------------------|
 
FROM 文節
 
|--FROM--| 表参照 |---------------------------------------------|
 
WHERE 文節
 
|--WHERE--| 単純フィルター |------------------------------------|
 
表参照
 
|--+---------------+--表名--------------------------------------|
   '-スキーマ名--.-'
 
単純フィルター
 
   .-論理演算子 AND または OR-.
   V                          |
|----| 単純単項フィルター |---+---------------------------------|
 
単純単項フィルター
 
|--+-NOT--| 単純単項フィルター |-+------------------------------|
   +-(--| 単純フィルター |--)----+
   '-| 単純述部 |----------------'
 
単純述部
 
|--| 式 |--| 単純述部終了 |-------------------------------------|
 
式
 
|--+-| 関数 |-+-------------------------------------------------|
   +-列名-----+
   '-| 定数 |-'
 
関数
 
|--+---------------+--関数名--(--+------------+--)--------------|
   '-スキーマ名--.-'             | .-,------. |
                                 | V        | |
                                 '---| 式 |-+-'
 
単純述部終了
 
|--+-+-| 演算子 |-+--| 式 |----------------+--------------------|
   | '-IN---------'                        |
   +-IS--+-----+--NULL---------------------+
   |     '-NOT-'                           |
   '-+-----+--BETWEEN--| 式 |--AND--| 式 |-'
     '-NOT-'
 
演算子
 
|--+-=----+-----------------------------------------------------|
   +-<>---+
   +->----+
   +-<----+
   +->=---+
   +-<=---+
   +-!=---+
   +-!<---+
   +-!>---+
   '-LIKE-'
 
 

説明

演算子
次の演算子のいずれかを使用することができます。

=
等しい。

<>
等しくない。

<
より小さい。

>
より大きい。

<=
以下。

!>
以下。

>=
以上。

!<
以上。

LIKE
1 つの文字ストリングが一致する。 1 バイト文字セット (SBCS) の下線で、1 つの SBCS 文字を表します。 2 バイト文字セット (DBCS) の下線で、1 つの DBCS 文字を表します。たとえば、WHERE PART_NUMBER LIKE '_0' (ここで、下線は SBCS) という条件では、0 で終わる 2 桁の数字 (たとえば、20、30 および 40 など) をすべて戻します。パーセント (SBCS または DBCS のいずれか) では、ゼロまたはそれ以上の SBCS 文字あるいは DBCS 文字のストリングを表します。たとえば、WHERE DEPT_NUMBER LIKE '2%' という条件では、2 の数字で始まる部門番号 (たとえば、20、27、または 234 など) をすべて戻します。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]