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

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 的构建方式。

    对于在 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 对象类。