0 / 0
Go back to the English version of the documentation
Data Virtualization支持的数据源
Last updated: 2024年11月26日
Data Virtualization支持的数据源和数据类型

Data Virtualization支持 "IBM Cloud Pak® for Data as a Service上的以下关系型和非关系型数据源。

如果平台连接使用云集成, Secure Gateway或 Satellite Link,那么无法作为现有平台连接的连接来连接到数据源。 连接到平台连接时,Data Virtualization不支持这些功能。 您会看到类似于以下内容的错误消息:Cannot reach the network destination of the data source.您可以使用云集成、Secure Gateway或Satellite Link设置数据源,并将主机名或 IP 端点作为新连接直接提供给Data Virtualization

大小限制
Data Virtualization支持行大小不超过 1 MB、列数不超过 2048 的表格虚拟化。 不过,Data Virtualization可预览的列数取决于很多因素,如列的数据类型。 目前,预览限制为 200 列。
"注释" 属性
创建虚拟表时,Data Virtualization不包括分配给数据源对象的注释属性。 此限制适用于所有数据源。
数据类型
Data Virtualization可能不支持数据源中的某些数据类型。 以下各表中记录了这些限制。 Data Virtualization还可以将数据源中的某些数据类型映射为其他数据类型。 这些映射基于底层 Db2® Big SQL 映射。 有关更多信息,请参阅 Db2 Big SQL

IBM 数据源

下表列出了可以从Data Virtualization连接到的IBM®数据源。

表 1. 受支持的 IBM 数据源
连接器 限制 更多信息
IBM Cloud® Databases for MongoDB IBM Cloud Databases for MongoDB 以 Beta 版形式提供。

Data Virtualization支持以下 "MongoDB数据类型:INT32、INT64、DOUBLE、STRING、BOOLEAN、DATE 和 BINARY。

 
IBM Cloud Databases for MySQL    
IBM Cloud PostgreSQL的数据库  

此连接经过优化以利用此数据源中的查询功能。

IBM Cloud Object Storage

这种连接在Data Virtualization中需要特别考虑。 请参阅在Data Virtualization中连接到IBM Cloud Object Storage

有关限制,请参阅 Data Virtualization中对象存储中的数据源

 
IBM Data Virtualization Manager for z/OS® 如果连接使用云集成, Secure Gateway或 Satellite Link,那么无法连接到 Data Virtualization Manager for z/OSData Virtualization不支持这些功能。 您将看到类似于以下内容的错误消息:Cannot reach the network destination of the data source.

此连接经过优化以利用此数据源中的查询功能。

IBM Db2
  • Data Virtualization不支持 NCHAR 和 NVARCHAR 类型。
  • Db2使用 DECFLOAT 类型,Data Virtualization将其默认为 DOUBLE。 此映射会影响返回特定值的方式。
  • Db2使用 DISTINCT 类型,Data Virtualization默认为 BLOB。

此连接经过优化以利用此数据源中的查询功能。

IBM Db2 Big SQL  

此连接经过优化以利用此数据源中的查询功能。

IBM Db2 for i  

此连接经过优化以利用此数据源中的查询功能。

IBM Db2 for z/OS  
IBM Db2 on Cloud Data Virtualization不支持 NCHAR 和 NVARCHAR 类型。  
IBM Db2 Warehouse    
IBM Informix® Data Virtualization不支持 INTERVAL、BIGINT 和 BIGSERIAL 数据类型。 有关更多信息,请参阅 使用 Connect for JDBC Informix 驱动程序时发生异常
IBM Netezza® Performance Server
  • Data Virtualization不支持 BLOB、XML 和 CLOB "Netezza数据类型。
  • 当使用 "选择语句或预览大于 64 的 LOB 数据时,"kB,"Data Virtualization会将数据截断为 64 K 字节。

此连接经过优化以利用此数据源中的查询功能。

IBM Planning Analytics
  • Data Virtualization只能虚拟化具有一个列维度的TM1®视图。
  • 无法将聚集下推到 TM1。 如果针对 TM1 的查询包含诸如 COUNT , SUM , AVG , MAX , MIN 或 GROUP BY 之类的聚集操作,那么可以添加以下服务器选项。
    alter server qplex options (add DB2_GROUP_BY 'N') 
  • 在TM1 中,Data Virtualization仅支持 VARCHAR 和 DOUBLE 数据类型。
  • TM1 无法识别 SQL。 TM1 的本机查询语言是 MDX ,它没有下推概念。 因此,此数据源未配置为支持最佳谓词下推。
 
IBM Data Virtualization
重要:请勿创建与Data Virtualization实例的连接。
 

第三方数据源

下表列出了可以从Data Virtualization连接到的第三方数据源。

表 2. 受支持的第三方数据源
连接器 限制 更多信息
Amazon RDS for MySQL
  • 您必须仅创建与 MySQL 数据源上的数据库的一个连接,以避免在 " 虚拟化 " 页面上出现重复行。 MySQL 不支持数据库隔离。
  • Data Virtualization不支持 BIT 类型。

此连接经过优化以利用此数据源中的查询功能。

Amazon RDS for Oracle
  • 当使用 "选择语句或预览大于 64 的 LOB 数据时,"kB,"Data Virtualization会将数据截断为 64 K 字节。
  • Data Virtualization中转换以下数据类型:
    • INTERVAL 和 JSON 转换为 VARCHAR。
    • 本地字符类型转换为 CHAR , VARCHAR 或 CLOB。
    • TIMESTAMP 和 TIMESTAMP WITH LOCAL TIME ZONE 转换为 TIMESTAMP。
    • XML 转换为 CLOB。
    • SMALLINT , INTEGER , BIGINT 转换为 DECIMAL $TAG1 4.0 $TAG2 , DECIMAL $TAG3 9.0 $TAG4 和 DECIMAL 18.0。
    • SMALLINT , INTEGER , BIGINT 转换为 DECIMAL $TAG1 4.0 $TAG2 , DECIMAL $TAG3 9.0 $TAG4 和 DECIMAL 18.0。
  • ˇ

此连接经过优化以利用此数据源中的查询功能。

Amazon RDS for PostgreSQL  

此连接经过优化以利用此数据源中的查询功能。

Amazon Redshift Data Virtualization中,SPATIAL、SKETCH 和 SUPER 数据类型被转换为 CLOB。

此连接经过优化以利用此数据源中的查询功能。

Amazon S3

这种连接在Data Virtualization中需要特别考虑。 请参阅 Data Virtualization中的连接至Amazon S3

  • 特定规则适用于 Amazon S3中的命名存储区。 有关更多信息,请参阅 Amazon S3 文档中的 存储区命名规则
  • 如果在存储区名称中包含点,那么不能使用基于 HTTPS 的虚拟主机样式寻址,除非您执行自己的证书验证。 用于存储区虚拟托管的安全证书对于名称中包含点的存储区不起作用。
  • 通过 AWS PrivateLink for Amazon S3,您可以在虚拟私有云 (VPC) 中供应接口 VPC 端点 (接口端点)。 创建与 Amazon S3 数据源的连接时,不能在 端点 URL 中使用这些端点。 不支持此类型的端点。 必须使用 Amazon S3的标准端点,例如 http://s3.eu-central-1.amazonaws.com/
  • 有关更多限制,请参阅 Data Virtualization中对象存储中的数据源
 
Apache Derby  

此连接经过优化以利用此数据源中的查询功能。

Apache Hive
  • 在虚拟化表中,只能列出复杂数据类型(例如,array、map、struct 和 union 类型)的值。 不支持对这些复杂数据类型的值执行任何其他操作。
  • 当使用 "选择语句或预览大于 64 的 LOB 数据时,"kB,"Data Virtualization会将数据截断为 64 K 字节。
  • 现在,缺省情况下, Hive 数据源中的字符串和二进制类型解析为 VARCHAR(32672)VARBINARY(32672) ,而不是 CLOB 和 BLOB。 Data Virtualization管理员可以配置 "HIVE_MAX_STRING_SIZE和 "HIVE_MAX_BINARY_SIZE"。 此更新可优化 Hive 数据源的 SQL 性能。 A Data Virtualization Admin can configure HIVE_MAX_STRING_SIZE and HIVE_MAX_BINARY_SIZE by calling the DVSYS.SETCONFIGPROPERTY procedure.

    例如,要将 Hive BINARY 数据类型的缺省最大大小更改为 2000(解析为 VARBINARY(2000)) ,请运行以下命令。

    db2 "call dvsys.setconfigproperty ('HIVE_MAX_BINARY_SIZE', '2000', '', ?, ?)"

    最小大小为 1 ,最大建议大小为 32672。 您可以超过 32672; 但是, STRINGBINARY 类型将解析为 CLOBBLOB 类型,这可能会导致某些查询失败。

此连接经过优化以利用此数据源中的查询功能。

Ceph

这种连接在Data Virtualization中需要特别考虑。 请参阅 Data Virtualization中的连接到 Ceph

有关限制,请参阅 Data Virtualization中对象存储中的数据源

 
Cloudera Impala  

此连接经过优化以利用此数据源中的查询功能。

通用 S3

有关限制,请参阅 Data Virtualization中对象存储中的数据源

 
Google BigQuery

这种连接在Data Virtualization中需要特别考虑。 请参阅 Data Virtualization中连接Google BigQuery

  • 在 "Google BigQuery数据源中,Data Virtualization不支持对数据类型为 "RECORD的列使用SELECT语句。

此连接经过优化以利用此数据源中的查询功能。

Greenplum  

此连接经过优化以利用此数据源中的查询功能。

MariaDB
  • Data Virtualization不支持 BIT、LONGTEXT 和 LONGBLOB 类型。
  • 您必须仅创建与 MariaDB 数据源上的数据库的一个连接,以避免在 " 虚拟化 " 页面上出现重复行。 MariaDB 不支持数据库隔离。
  • 对于高级操作 (例如,收集统计信息) ,您必须具有 MariaDB 数据源的管理许可权。

此连接经过优化以利用此数据源中的查询功能。

Microsoft Azure Data Lake Storage    
Microsoft Azure SQL Database    
Microsoft SQL Server
  • 当使用 "选择语句或预览大于 64 的 LOB 数据时,"kB,"Data Virtualization会将数据截断为 64 K 字节。

此连接经过优化以利用此数据源中的查询功能。

MongoDB
  • Data Virtualization不支持 BIT、LONGTEXT 和 LONGBLOB 类型。
  • 对于高级操作 (例如,收集统计信息) ,您必须具有 MongoDB 数据源的管理许可权。
 
MySQL

(我的 SQL Community Edition)

(我的 SQL Enterprise Edition)

  • 您必须仅创建与 MySQL 数据源上的数据库的一个连接,以避免在 " 虚拟化 " 页面上出现重复行。 MySQL 不支持数据库隔离。
  • Data Virtualization不支持 BIT 类型。
  • Data Virtualization中的 INTERSECT、INTERSECT ALL、EXCEPT、EXCEPT ALL 等集合操作不支持 BIGINT 函数。

此连接经过优化以利用此数据源中的查询功能。

Oracle
  • 当使用 "选择语句或预览大于 64 的 LOB 数据时,"kB,"Data Virtualization会将数据截断为 64 K 字节。
  • Data Virtualization中转换以下数据类型:
    • INTERVAL 和 JSON 转换为 VARCHAR。
    • 本地字符类型转换为 CHAR , VARCHAR 或 CLOB。
    • TIMESTAMP 和 TIMESTAMP WITH LOCAL TIME ZONE 转换为 TIMESTAMP。
    • XML 转换为 CLOB。
    • SMALLINT , INTEGER , BIGINT 转换为 DECIMAL $TAG1 4.0 $TAG2 , DECIMAL $TAG3 9.0 $TAG4 和 DECIMAL 18.0。

此连接经过优化以利用此数据源中的查询功能。

PostgreSQL  

此连接经过优化以利用此数据源中的查询功能。

Salesforce.com  

此连接经过优化以利用此数据源中的查询功能。

SAP ASE    
SAP OData
由于以下原因,无法预览或查询不可读的表:
  • SAP OData 数据源可能具有仅写访问权。 在这种情况下,更改用户许可权并不能避免此问题。
  • SAP OData 数据源具有读访问权,但需要过滤器。 此限制意味着您无法预览数据,但指定过滤器后可以读取数据。
 
Snowflake

这种连接在Data Virtualization中需要特别考虑。 请参阅 Data Virtualization中连接到 Snowflake

  • ARRAY ,地理位置和 VARIANT 数据类型转换为 VARCHAR。
  • Data Virtualization不支持Okta URL 端点

此连接经过优化以利用此数据源中的查询功能。

Teradata

Teradata JDBC 驱动程序 17.00 Copyright © 2024 by Teradata。 保留所有权利 (All rights reserved)。 IBM 提供了来自 Teradata 的许可证下的 Teradata JDBC Driver 的嵌入式用法,仅供用作 IBM Watson® 服务产品的一部分。

  • Data Virtualization不支持 XML "Teradata数据类型。 XML 数据类型将转换为 CLOB。
  • DECFLOAT 支持 34 位数字的 DECIMAL 数据。 在虚拟化期间,必须将超过此限制的数据列编辑为 DOUBLE。
  • Data Virtualization中转换以下数据类型:
    • 包含字符串比较操作 (例如,针对 CHAR 或 VARCHAR 数据的 GROUP BY 或 WHERE 谓词) 以处理区分大小写的查询。
    • 对于位数据, VARBYTE 将转换为 VARCHAR。
    • BYTE 转换为 BINARY。
    • BYTEINT 转换为 SMALLINT。
    • TIME ZONE 轴承转换为 TIME 和 TIMESTAMP。
    • PERIOD , DISTINCT , DATASET 和 ARRAY 将转换为 BLOB。
    • NUMBER 将转换为 DOUBLE。
    • YEAR , YEAR TO MONTH , DAY TO MINUTE , HOUR TO MINUTE , MONTH , HOUR 和 MINUTE 将转换为 INTEGER。
    • 将 DAY TO SECOND , HOUR TO SECOND , MINUTE TO SECOND 和 SECOND 转换为 DECIMAL。
  • 当使用 "选择语句或预览大于 64 的 LOB 数据时,"kB,"Data Virtualization会将数据截断为 64 K 字节。

此连接经过优化以利用此数据源中的查询功能。

Data Virtualization中对象存储的数据源

您可以使用存储为 IBM Cloud Object StorageAmazon S3Ceph或通用 S3 数据源上的文件的数据来创建虚拟表。 要访问存储在云对象存储器中的数据,必须创建与文件所在数据源的连接。

您可以将来自一个或多个文件的数据加以分段或组合来创建虚拟表。 在Data Virtualization中访问对象存储中的文件是基于使用Hadoop外部表支持的Db2 Big SQL功能。 有关更多信息,请参阅 CREATE TABLE (HADOOP) 语句

术语

存储区和分区在数据组织中起着重要作用。 以下组件是对象存储器的关键元素。
  • 存储区 是用于提供数据容器的逻辑抽象。 对象存储器中没有文件夹概念; 只有存储区和密钥。 只能在对象存储数据源的接口中创建存储区。 它们不能在Data Virtualization中创建。 存储区名称必须唯一且符合对象存储器提供程序的规则。 这些规则通常包括将名称限制为仅包含小写字母,数字和短划线的 3-63 个字符。 存储区名称必须以小写字母或数字开头和结尾。 Data Virtualization访问对象存储中的数据时,存储桶名称在所有对象存储连接中必须是唯一的。
  • 文件路径 是要存储数据的文件的完整路径。 S3 文件系统实现允许将零长度文件视为目录,将包含正斜杠 (/) 的文件名视为嵌套目录。 文件路径包括存储区名称,可选文件路径和文件名。 在对象存储器中,创建表时将使用文件路径。 同一路径中的所有文件都将添加到表数据中。 您可以通过向文件路径添加另一个文件来添加更多数据。
  • 分区 是按模式中的公共属性分组的数据。 分区将数据划分为多个文件路径,这些路径被视为目录。 Data Virtualization可以发现并使用分区来减少查询必须处理的数据量,从而提高使用分区列上的谓词进行查询的性能。

最佳实践

文件格式
Data Virtualization支持 PARQUET(或 PARQUETFILE)、ORC(优化行列式)、CSV(逗号分隔值)、TSV(制表符分隔值)和 JSON 文件格式。 不支持其他文件格式。
  • 对于 PARQUET (或 PARQUETFILE) ,不需要文件扩展名。 从数据文件中抽取元数据。
  • 对于 ORC ,不需要文件扩展名。 从数据文件中抽取元数据。
  • 对于 CSV 和 TSV 文件:
    • 需要相应的 .csv.tsv 文件扩展名,如下所示:
      • CSV: 需要 .csv 文件扩展名,并且该文件的内容必须遵循逗号分隔值的规范。
      • TSV: 需要 .tsv 文件扩展名,并且该文件的内容必须遵循制表符分隔值的规范。
    • 可选参数可用于指定围绕 CSV 和 TSV 文件中的字段值的字符串定界字符 (quoteChar)。
      • 如果指定了 quoteChar ,那么查询数据的性能可能会受到负面影响。
      • 缺省值为无定界符 (未指定)。
      • quoteChar 的值必须是单个字符,不能是空格 (空白) ,反斜杠,制表符,逗号或换行符 (\n)。
      • 如果字符串值包含字符串定界符 (quoteChar) ,那么可以使用反斜杠 (\) 对字符串定界符进行转义。
  • 对于 JSON 文件,需要 .json 文件扩展名。 必须对 JSON 文件进行编码,以使每行都是有效的 JSON 对象。 行必须由换行符 (\n) 分隔。 JSON Lines 文本格式 (也称为换行符分隔的 JSON) 是唯一受支持的 JSON 格式。 此格式存储可一次处理一条记录的结构化数据。
注: 所有其他文件格式都返回错误。 有关更多信息,请参阅 在 Cloud Object Storage中尝试使用不受支持的文件格式时的错误消息
组织数据
  • 避免在列名中使用字母数字字符,因为这可能会干扰 Hive 兼容性。 任何非字母数字字符或下划线字符都编码为_xNNNN,其中_xNNNN是该字符的十六进制值。 如果要正确查看列名,请通过完成以下步骤来启用 allownonalphanumeric 选项:
    1. 访问Data Virtualization实例中的头部 podc-db2u-dv-db2u-0)。
    2. 运行以下命令以编辑配置以包含 allownonalphanumeric 选项:
      db2uctl adm bigsql config --key bigsql.catalog.identifier.mappingrules --value allownonalphanumeric,allowleadingdigits,allowreservedwords
    3. 运行以下命令以重新启动 Big SQL:
      su - db2inst1 
      bigsql stop ; 
      bigsql start 
      
  • 如果通过虚拟化表访问对象存储器数据,那么要虚拟化的文件必须在单个文件路径和单个存储区中,并且该存储区必须至少包含一个您添加到购物车的文件。 此文件路径中的所有文件都是虚拟化表的一部分。 将更多数据添加到表 (在文件路径中创建新文件) 时,当您访问虚拟化表时,将显示数据。 文件路径中的所有文件都必须使用相同的文件格式,以便将它们虚拟化为一个表。
  • 如果要将多个文件路径中的文件虚拟化为一个表,那么可以虚拟化包含所有文件的存储区。 例如,如果您具有文件路径 A/B/C/T1aA/B/C/T1bA/B/D/T1cA/B/D/T1d,那么可以虚拟化文件路径 A/B/。 该路径和嵌套路径中的所有文件都将是可访问对象的一部分。
  • 请勿创建具有相同名称的两个对象 (表,模式或列) ,即使使用定界标识和混合大小写也是如此。 例如,不能有一个表 t1 和另一个名为 T1的表。 这些名称在对象存储器 (Hive) 中被视为重复名称。 有关更多信息,请参阅 标识
  • Db2 支持比 Hive 支持的更广泛的有效定界标识。 在对象存储库上创建虚拟化表时指定的某些标识名称可能会先进行调整,然后才能将其接受到 Hive 目录中。 将自动完成映射。 有关更多信息,请参阅 标识
  • 将新数据添加到虚拟化表的文件路径时,请考虑运行以下命令以确保更新元数据高速缓存以查看新数据。
    CALL SYSHADOOP.HCAT_CACHE_SYNC(<schema>, <object>)

    有关更多信息,请参阅 HCAT_CACHE_SYNC 存储过程

  • 将新分区添加到虚拟化表的文件路径时,单击 " 虚拟化数据 " 页面上的溢出菜单中的 刷新分区 以标识新分区。

    您还可以在 SQL 接口中运行以下命令,以标识已添加的新分区。

    MSCK REPAIR TABLE <table-name> 

    有关更多信息,请参阅 MSCK REPAIR TABLE

优化查询性能
  • 使用压缩文件格式 (例如 ORC 或 Parquet) 来最小化网络流量,从而提高查询性能。
  • 请勿使用 STRING 或 TEXT 数据类型。 使用 VARCHAR (n) 数据类型,将 n 设置为适合于列数据的值。 使用以下命令来变更表以定义相应的列长度。
     ALTER TABLE <schema>.<table> ALTER COLUMN <col> SET DATA TYPE VARCHAR(<size>)
  • 使用 Hive 样式分区对数据进行分区。 分区数据按公共属性分组。 Data Virtualization可以使用分区来减少查询必须处理的数据量。 可能无法查询整个数据集,甚至也没必要。 您可以在包含分区列的查询中使用谓词来提高性能。

    例如,按年份列分区的 school_records 表将值按年份分隔成单独的文件路径。 WHERE 条件 (例如 YEAR=1993YEAR IN (1996,1995)YEAR BETWEEN 1992 AND 1996 ) 仅扫描相应文件路径中的数据以解析查询。

    云对象存储器中的分区示例。
  • 准确定义分区列类型。 缺省情况下,分区字符列假定为 STRING 类型,建议不要这样做。 将分区列重新定义为相应的数据类型。
  • 收集有关正在查询的数据的统计信息。 Data Virtualization使用 "ANALYZE命令收集对象存储上虚拟化表的统计数据。 您可以在 Web 客户机中或通过使用 SQL 来收集统计信息。 有关详细信息,请参阅 Data Virtualization中收集统计数据

限制

  • 对于 CSV、TSV 或 JSON 格式的文本文件,Data Virtualization仅支持UTF-8字符编码。 Cloud Object Storage 二进制格式 (例如 ORC 或 PARQUET) 不受影响,因为它们以透明方式对字符类型进行编码。
  • Data Virtualization不支持对象存储虚拟表中的 TIME 数据类型。
  • 云对象存储器中资产的预览仅显示表的前 200 列。
  • 在除去与 Cloud Object Storage的连接之前,必须除去对象存储器连接中的所有虚拟化表。 如果除去了连接,并且您尝试除去该连接中的表,那么会看到错误。 请参阅 在对象存储器中除去虚拟化表时的凭证错误消息
  • 如果未在连接属性中指定存储区,那么连接是全局连接。 在这种情况下,请在文件路径中包含存储区名称。 在Data Virtualization实例中最多可指定一个全局连接。

另请参阅 CREATE TABLE (HADOOP) 语句中的 限制

Generative AI search and answer
These answers are generated by a large language model in watsonx.ai based on content from the product documentation. Learn more