JDBC データビューを設定する場合、次のオブジェクトも設定する必要があります。
JDBC オブジェクトクラス。1 つまたは複数の JDBC テーブルを LDAP オブジェクトクラスにマップします。
JDBC テーブル。各リレーショナルデータベーステーブルに対して定義します。
JDBC 属性。JDBC テーブル内の指定された列の LDAP 属性を定義します。
リレーショナルデータベースの各テーブルの JDBC テーブルを作成します。
% dpconf create-jdbc-table jdbc-table-name db-table |
db-table の名前は大文字と小文字を区別します。リレーショナルデータベースで使用したのと同じ文字 (大文字または小文字) を使用してください。異なる文字を使用すると、そのテーブルをターゲットとする操作は失敗する場合があります。
各リレーショナルデータベーステーブル内で各列の JDBC 属性を作成します。
% dpconf add-jdbc-attr table-name attr-name sql-column |
JDBC 属性を作成すると、テーブル列が LDAP 属性にマップされます。
(省略可能) リレーショナルデータベース内の列が大文字と小文字を区別する場合、JDBC 属性の LDAP 構文を変更します。
% dpconf set-jdbc-attr-prop table-name attr-name ldap-syntax:ces |
ldap-syntax の値は、デフォルトで cis です。これは、jdbc-attr が大文字と小文字を区別しないことを意味します。リレーショナルデータベースが大文字と小文字を区別する場合、値を ces に変更します。
Oracle や DB2 など、特定のリレーショナルデータベースはデフォルトで大文字と小文字を区別します。LDAP はデフォルトで大文字と小文字を区別しません。Directory Proxy Server はリレーショナルデータベーステーブルの列が大文字と小文字を区別することを検出すると、フィルタ内の対応する属性の ldapsearch クエリーが UPPER 関数を使用して SQL クエリーに変換されます。
たとえば、クエリー ldapsearch -b "dc=mysuffix" "(attr=abc)" は次の SQL クエリーに変換されます。
SELECT * FROM mytable WHERE (UPPER(attr)='ABC') |
デフォルトで、この種類のクエリーはインデックスが生成されません。このため、このようなクエリーは、パフォーマンスに大きな影響を与える可能性があります。
次の 2 つの方法でパフォーマンスへの影響を緩和できます。
jdbc-attr の ldap-syntax プロパティーを ces に設定する。
LDAP フィルタで使用されている可能性のある各 jdbc-attr の UPPER 関数でインデックスを作成する。
リレーショナルデータベースが大文字と小文字を区別しない場合は、ldap-syntax をデフォルト値の cis に設定します。ldap-syntax:ces は、大文字と小文字を区別しないデータベースではサポートされません。
LDAP リレーショナルデータベーステーブルの JDBC オブジェクトクラスを作成します。
% dpconf create-jdbc-object-class view-name objectclass primary-table \ [secondary-table... ] DN-pattern |
JDBC オブジェクトクラスを作成すると、原則的にこれらのテーブルが関連付けられる LDAP オブジェクトクラスが指定されます。JDBC オブジェクトクラスは、一次テーブルと二次テーブルが存在する場合、これらも指定します。
JDBC オブジェクトクラスを作成する場合、DN パターンを指定します。DN パターンは、エントリの DN の構築方法を示します。
二次テーブルが存在する場合、一次テーブルと二次テーブル間の結合ルールを定義します。
% dpconf set-jdbc-table-prop secondary-table-name filter-join-rule:join-rule |
結合ルールは二次テーブルで定義され、そのテーブルからのデータが一次テーブルのデータにリンクされる方法を決定します。オブジェクトクラスの一次テーブルと二次テーブル間の関係の定義方法は重要です。詳細については、「JDBC テーブル間の関係の定義」を参照してください。
JDBC オブジェクトクラスのスーパークラスを指定します。
% dpconf set-jdbc-object-class-prop view-name objectclass super-class:value |
スーパークラスは、JDBC オブジェクトクラスが継承した LDAP オブジェクトクラスを示します。