IBM Cloud Docs
数据库

数据库

搜寻存储在支持 Java 数据库连接 (JDBC) 的数据库中的文档 API。

IBM Cloud Pak for Data IBM Software Hub

此信息仅适用于已安装的部署。

IBM Watson® Discovery Cloud Pak for Data 上不支持 身份验证。Kerberos

要搜寻的文档

  • 将搜寻数据库中的每一行,并将其作为一个文档添加到集合中。 这些列将作为元数据建立索引。
  • 搜寻器尝试搜寻存储在数据库中的内容 (例如 BLOB/BINARY) 并对其建立索引。 将对 Discovery 支持的文件类型建立索引。 有关更多信息,请参阅 支持的文件类型
  • 重新抓取数据源时,会添加新文档,将更新的文档修改为当前版本,并将已删除的文档从集合索引中删除。
  • 所有 Discovery 数据源连接器都是只读的。 无论向搜寻帐户授予何种许可权,Discovery 从不写入,更新或删除原始数据源中的任何内容。

数据源需求

除了所有已安装的部署的 数据源需求 外,数据库数据源还必须满足以下需求:

  • Discovery 支持以下数据源版本:

    • IBM Cloud Pak for Data 1.8.0上的 Data Virtualization,1.8.3 使用 Db2 11.5
    • IBM Db2: 10.5, 11.1, 11.5
    • Microsoft SQL Server:2012、2014、2016 和 2017
    • Oracle Database: 12c, 18c, 19c
    • PostgreSQL: 9.6, 10, 11

    通过 IBM Cloud Pak for Data 4.5.x 发行版添加了对 Data Virtualization 的支持

  • 您必须获取要连接到的数据源的任何必需服务许可证。 有关许可证的更多信息,请与数据源的系统管理员联系。

先决条件步骤

  • 确定要搜寻的数据库表。 您可以在一个集合中抓取多个表,还可以指定具有不同模式或列集的表。 您必须了解以下信息:

    • 模式名称
    • 表名称

    对于 IBM Cloud Pak for Data上的 Data Virtualization,您可以从 IBM Cloud Pak for Data Web 客户机获取这些详细信息。 单击主菜单图标,展开“数据”,然后选择 Data virtualization。 在页面开头,选择显示 虚拟化数据

    显示 Data virtualization 视图,来自 Cloud Pak for Data
    中的虚拟化数据视图。Cloud Pak for Data

  • 如果计划搜寻具有相同名称但不同数据类型的列的多个表,请务必小心。 在内容挖掘项目中,将具有相同名称但不同数据类型的列分配给名称中具有数据类型后缀的字段,例如 DATA_string。 在所有其他项目类型中,将从索引中排除其中一个表中的数据。 例如,如果有两个表的列都称为 DATA,其中一个表的 DATA 列填充的是日期,而另一个表的 列填充的是字符串,那么其中一个表中的数据就会被排除在索引之外。

  • 获取有权访问要搜寻的表的用户的用户凭证。

  • 必须先获取数据库的 JDBC 驱动程序库,然后才能连接到数据库。 设置数据库数据源时,将要求您指定 JDBC 驱动程序类路径。

  • 必须先安装 IBM Data Server 驱动程序包,然后才能使用 JDBC连接到 Data Virtualization 服务。 有关更多信息,请参阅 将应用程序连接到 Data Virtualization 服务

  • 如果要连接到在不同于 Discovery 服务的集群中托管的 Data Virtualization 实例,那么必须将针对 Data Virtualization 路由的流量从外部基础结构节点转发到集群的主节点。 有关更多信息,请参阅 更新 HAProxy 配置文件

  1. 从数据库服务器或供应商的 Web 站点下载 JDBC 驱动程序库的 JAR 文件。

    以下文件与每个数据库相关联:

    • Db2 和 Data Virtualization: db2jcc4.jar
    • Oracle: ojdbc8.jar
    • SQL Server: mssql-jdbc-7.2.2.jre8.jar
    • PostgreSQL: postgresql-42.2.6.jar
  2. 将 JAR 文件压缩成一个压缩文件。

    如果您有一个只有一个 JAR 文件的 JDBC 驱动程序,请跳过此步骤。

  3. 记下驱动程序的存储位置。 必须在下一个过程中指定存储此 JAR 或压缩文件的目录,以便 Discovery 可以上载该文件。

连接到数据库数据源

开始之前,如果计划将扩充项应用于数据,请在“内容挖掘”项目类型中创建集合。 如果您正在使用其他项目类型并计划应用扩充项,请在此处停止。 有关更多信息,请参阅 将扩充项应用于数据库中的内容

从 Discovery 项目完成以下步骤:

  1. 从导航窗格中,选择 管理集合

  2. 单击“新建收藏”。

  3. 单击数据库,然后单击下一步

  4. 命名集合。

  5. 如果数据库中文档的语言不是英语,请选择相应的语言。

    有关受支持语言的列表,请参阅语言支持

  6. 可选: 更改同步调度。

    有关更多信息,请参阅 搜寻调度选项

  7. 在“输入您的证书”部分填写以下字段:

    数据库 URL

    数据库服务器的 URL。

    下表显示了示例数据库 URL:

    示例数据库 URL
    数据库 语法 示例
    Data virtualization (同一集群) jdbc:db2://{fully-qualified-hostname-of-dv-service}:{jdbc-nonssl-internal-port}/bigsql jdbc:db2://c-db2u-dv-db2u-engn-svc.myproject.svc.cluster.local:50000/bigsql
    Data virtualization (独立集群) jdbc:db2://{cluster-address }: {jdbc-nonssl-external-port} /bigsql jdbc:db2://api.conn.cp.example.com:30269/bigsql
    Db2 jdbc:db2://{server}:{port}/{database_name} jdbc:db2://localhost:50000/sample:sslConnection=true;
    Oracle jdbc:oracle:thin:@//{host}:{TCPport}/{service_name} jdbc:oracle:thin:@localhost:1521/sample
    SQL Server jdbc:sqlserver://{serverName}[{instanceName}]:{port}[;property=value] jdbc:sqlserver://localhost:1433;DatabaseName=sample
    Postgresql jdbc:postgresql://{host}:{port}/{database} jdbc:postgresql://localhost/sample
    用户

    从所选数据库中获取的用户名。 您可使用此用户名来搜寻源。 不同数据库的用户名不同。

    密码

    与用户名相关联的密码。 不同数据库的密码不同。

  8. 连接设置部分填写以下字段:

    JDBC 驱动程序类型

    选择数据库。

    Db2 默认为选中。 如果要从未列出的数据库类型中抓取,请选择其他。 要在 IBM Cloud Pak for Data上搜寻由 Data Virtualization 管理的数据,请保持选中 Db2

    JDBC 驱动程序类名

    与所选数据库关联的 JDBC 驱动程序类名。 除非选择 OTHER,否则将自动填充此字段。

    JDBC 驱动程序类路径

    上传 JDBC 驱动程序文件,其扩展名为.jar 或.zip。 或者,您可以复用先前上载的 .jar 或 .zip 文件。

  9. 填写 指定要搜寻的内容 部分中的以下字段,然后单击 添加:

    模式名
    要抓取的模式。
    表名
    要搜寻的模式中的表。

    单击“编辑”图标以指定更多表搜寻设置,包括:

    主键
    目标数据库表的主键。 如果目标数据库表中未配置主键,则必须在此字段中指定键。 JDBC 数据库搜寻器将此主键值附加到每个已搜寻行的 URL,以保持其唯一性。 当主键为组合键时,使用逗号来连接密钥名称,例如 key1,key2。 如果未指定,项目将缺省为该表的主键字段。 如果在目标数据库表中配置了主键,那么将自动检测到此键。
    行过滤器
    可选。 指定 SQL WHERE 子句来指定要抓取的表行。 必须指定布尔表达式,该表达式可以是 WHERE 语句中 SELECT 子句的条件。 如果语法或列名中有错误,那么搜寻会将此表排除在外,并且不会对任何文档建立索引。
    包含要抽取的数据的列
    包含要搜寻的数据的列的名称。 如果未指定该列,那么将选择包含文本或单个大对象的列进行搜寻。
    MIME 类型的数据
    可选。 如果未指定 MIME 类型,那么会检测到该类型。

    您在“表搜寻设置”对话框中指定的值不会随模式和表名称一起显示,但这些值将应用于数据库连接。

    使用 4.6.5 发行版添加了 包含要抽取的数据的列MIME 类型的数据 字段。

  10. 如果希望搜寻器从文档中的图像中抽取文本,请展开 更多处理设置,并将 应用光学字符识别 (OCR) 设置为 On

    启用 OCR 并且您的文档包含图像时,处理需要更长时间。 有关更多信息,请参阅 光学字符识别

  11. 单击完成

将快速创建集合。 将数据添加到集合时,处理数据需要更多时间。

如果要检查进度,请转至“活动”页面。 在导航窗格中,单击 管理集合,然后单击以打开集合。

在 Linux 上使用 Windows 认证

来自 Microsoft 的 JDBC 驱动程序在 Linux上不支持 Windows 认证。 如果要使用 Microsoft Windows 认证在 Linux上访问 SQL Server,那么可以从 SourceForge使用名为 jTDS 的第三方 JDBC 驱动程序。 在配置期间指定以下值:

  • 数据库 URL: jdbc:jtds:sqlserver://<host>:<port>;databaseName=<database>;domain=<domain>;useNTLMv2=true;
  • JDBC 驱动程序类型:OTHER
  • JDBC 驱动程序类名称:net.sourceforge.jtds.jdbc.Driver

将扩充项应用于数据库中的内容

如果使用数据库作为数据源,并且要将扩充项应用于从数据库建立索引的嵌套字段,那么必须使用内容挖掘项目类型。

如果您的目标是使用“文档检索”项目类型创建搜索应用程序,请首先创建“内容挖掘”项目类型。 从“内容挖掘”项目中,您可以连接到数据库并扩充数据。 然后,您可以复用文档检索项目中的扩充集合。

要扩充数据库内容以在“文档检索”项目中使用,请完成以下步骤:

  1. 创建内容挖掘项目。

    有关更多信息,请参阅 创建项目

  2. 连接数据库数据源。

    有关更多信息,请参阅 配置数据源: 数据库

  3. 应用扩充项。

    有关更多信息,请参阅以下主题:

  4. 创建文档检索项目。

    有关更多信息,请参阅 创建项目

    当系统提示您选择集合时,请选择 复用现有集合中的数据。 如果需要,请滚动以查看此选项。

  5. 选择您使用“内容挖掘”项目创建和扩充的集合,然后单击 完成