Sun Java System Directory Server Enterprise Edition 6.3 管理指南

Procedure配置 JDBC 表、属性和对象类

配置 JDBC 数据视图时,还必须配置以下对象:

  1. 为关系数据库中的每个表创建 JDBC 表。


    % dpconf create-jdbc-table jdbc-table-name db-table
    

    db-table 的名称区分大小写。请确保使用的大小写与关系数据库中使用的相同,否则针对该表的操作可能会失败。

  2. 为每个关系数据库表中的每个列创建 JDBC 属性。


    % dpconf add-jdbc-attr table-name attr-name sql-column
    

    创建 JDBC 属性会将表列映射到 LDAP 属性。

  3. (可选的)如果关系数据库中的列区分大小写,请更改 JDBC 属性的 LDAP 语法。


    % dpconf set-jdbc-attr-prop table-name attr-name ldap-syntax:ces

    默认情况下,ldap-syntax 的值为 cis。这表明 jdbc-attr 不区分大小写。如果您的关系数据库区分大小写,请将值更改为 ces

    默认情况下,某些关系数据库(如 Oracle 和 DB2)区分大小写。LDAP 在默认情况下不区分大小写。当目录代理服务器检测到关系数据库表的某个列区分大小写时,在过滤器中具有相应属性的 ldapsearch 查询将被转换为使用函数 UPPER 的 SQL 查询。

    例如,查询 ldapsearch -b "dc=mysuffix" "(attr=abc)" 将被转换为以下 SQL 查询:


    SELECT * FROM mytable WHERE (UPPER(attr)='ABC')

    默认情况下,此类查询不会编制索引。因此,具有此特性的查询可能会造成较大的性能影响。

    可通过以下两种方式减轻性能影响:

    • 将 jdbc-attr 的 ldap-syntax 属性设置为 ces

    • 对于每个可能会在 LDAP 过滤器中使用的 jdbc-attr,使用函数 UPPER 创建索引。


    注 –

    如果关系数据库不区分大小写,请使用 ldap-syntax 的默认值,即 cis。不区分大小写的数据库不支持 ldap-syntax:ces


  4. 为 LDAP 关系数据库表创建 JDBC 对象类。


    % dpconf create-jdbc-object-class view-name objectclass primary-table \
      [secondary-table... ] DN-pattern
    

    创建 JDBC 对象类实际上是指定将与这些表相关联的 LDAP 对象类。JDBC 对象类还将指定主表和从表(如果这些表存在)。

    创建 JDBC 对象类时将指定 DN 模式。DN 模式用于描述将使用哪些属性来构建条目的 DN。例如,如果将 DN 模式指定为 uid,则会使用属性 uid 和数据视图的视图基来构建条目的 DN。例如,uid=bjensen,ou=people,dc=example,dc=com。DN 模式可以由多个属性组成。在这种情况下,应使用 ,(逗号)来分隔各个属性。例如,如果将 DN 模式指定为 uid,country,则数据视图返回的条目 DN 为 uid=bjensen,country=America,ou=people,dc=example,dc=com

    对于在 JDBC 对象类的 DN 模式中定义的所有子树组件,均应为其定义 JDBC 对象类。例如,如果 JDBC 对象类中具有 DN 模式 uid,ou,则应为 DN 模式 ou 定义一个 JDBC 对象类。这对于目录代理服务器构建结构正确的 DIT 很有必要。否则,在搜索结果中不会返回具有类似于 ou=xxx,base-DN 值的子树。

  5. 如果存在从表,请定义主表和从表之间的联接规则。


    % dpconf set-jdbc-table-prop secondary-table-name filter-join-rule:join-rule
    

    联接规则在从表上进行定义,用于确定该表中的数据如何链接到主表数据。对象类主表和从表关系的定义方式非常重要。有关详细信息,请参见定义 JDBC 表之间的关系

  6. 指定 JDBC 对象类的超类。


    % dpconf set-jdbc-object-class-prop view-name objectclass super-class:value
    

    超类表示 JDBC 对象类所继承的 LDAP 对象类。