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®数据源。
连接器 | 限制 | 更多信息 |
---|---|---|
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/OS 。 Data Virtualization不支持这些功能。 您将看到类似于以下内容的错误消息:Cannot reach the network destination of the data source. | 此连接经过优化以利用此数据源中的查询功能。 |
IBM Db2 |
|
此连接经过优化以利用此数据源中的查询功能。 |
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 |
|
此连接经过优化以利用此数据源中的查询功能。 |
IBM Planning Analytics |
|
|
IBM Data Virtualization | 重要:请勿创建与Data Virtualization实例的连接。
|
第三方数据源
下表列出了可以从Data Virtualization连接到的第三方数据源。
连接器 | 限制 | 更多信息 |
---|---|---|
Amazon RDS for MySQL |
|
此连接经过优化以利用此数据源中的查询功能。 |
Amazon RDS for Oracle |
|
此连接经过优化以利用此数据源中的查询功能。 |
Amazon RDS for PostgreSQL | 此连接经过优化以利用此数据源中的查询功能。 |
|
Amazon Redshift | 在Data Virtualization中,SPATIAL、SKETCH 和 SUPER 数据类型被转换为 CLOB。 | 此连接经过优化以利用此数据源中的查询功能。 |
Amazon S3 | 这种连接在Data Virtualization中需要特别考虑。 请参阅 Data Virtualization中的连接至Amazon S3。
|
|
Apache Derby | 此连接经过优化以利用此数据源中的查询功能。 |
|
Apache Hive |
|
此连接经过优化以利用此数据源中的查询功能。 |
Ceph | 这种连接在Data Virtualization中需要特别考虑。 请参阅 Data Virtualization中的连接到 Ceph。 有关限制,请参阅 Data Virtualization中对象存储中的数据源。 |
|
Cloudera Impala | 此连接经过优化以利用此数据源中的查询功能。 |
|
通用 S3 | 有关限制,请参阅 Data Virtualization中对象存储中的数据源。 |
|
Google BigQuery | 这种连接在Data Virtualization中需要特别考虑。 请参阅 Data Virtualization中连接Google BigQuery。
|
此连接经过优化以利用此数据源中的查询功能。 |
Greenplum | 此连接经过优化以利用此数据源中的查询功能。 |
|
MariaDB |
|
此连接经过优化以利用此数据源中的查询功能。 |
Microsoft Azure Data Lake Storage | ||
Microsoft Azure SQL Database | ||
Microsoft SQL Server |
|
此连接经过优化以利用此数据源中的查询功能。 |
MongoDB |
|
|
MySQL (我的 SQL Community Edition) (我的 SQL Enterprise Edition) |
|
此连接经过优化以利用此数据源中的查询功能。 |
Oracle |
|
此连接经过优化以利用此数据源中的查询功能。 |
PostgreSQL | 此连接经过优化以利用此数据源中的查询功能。 |
|
Salesforce.com | 此连接经过优化以利用此数据源中的查询功能。 |
|
SAP ASE | ||
SAP OData | 由于以下原因,无法预览或查询不可读的表:
|
|
Snowflake | 这种连接在Data Virtualization中需要特别考虑。 请参阅 Data Virtualization中连接到 Snowflake。
|
此连接经过优化以利用此数据源中的查询功能。 |
Teradata Teradata JDBC 驱动程序 17.00 Copyright © 2024 by Teradata。 保留所有权利 (All rights reserved)。 IBM 提供了来自 Teradata 的许可证下的 Teradata JDBC Driver 的嵌入式用法,仅供用作 IBM Watson® 服务产品的一部分。 |
|
此连接经过优化以利用此数据源中的查询功能。 |
Data Virtualization中对象存储的数据源
您可以使用存储为 IBM Cloud Object Storage, Amazon S3, Ceph, 或通用 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
) ,那么可以使用反斜杠 (\
) 对字符串定界符进行转义。
- 如果指定了
- 需要相应的 .csv 或 .tsv 文件扩展名,如下所示:
- 对于 JSON 文件,需要 .json 文件扩展名。 必须对 JSON 文件进行编码,以使每行都是有效的 JSON 对象。 行必须由换行符 (
\n
) 分隔。 JSON Lines 文本格式 (也称为换行符分隔的 JSON) 是唯一受支持的 JSON 格式。 此格式存储可一次处理一条记录的结构化数据。
注: 所有其他文件格式都返回错误。 有关更多信息,请参阅 在 Cloud Object Storage中尝试使用不受支持的文件格式时的错误消息。 - 组织数据
- 避免在列名中使用字母数字字符,因为这可能会干扰 Hive 兼容性。 任何非字母数字字符或下划线字符都编码为_xNNNN,其中_xNNNN是该字符的十六进制值。 如果要正确查看列名,请通过完成以下步骤来启用
allownonalphanumeric
选项:- 访问Data Virtualization实例中的头部 podc-db2u-dv-db2u-0)。
- 运行以下命令以编辑配置以包含
allownonalphanumeric
选项:db2uctl adm bigsql config --key bigsql.catalog.identifier.mappingrules --value allownonalphanumeric,allowleadingdigits,allowreservedwords
- 运行以下命令以重新启动 Big SQL:
su - db2inst1 bigsql stop ; bigsql start
- 如果通过虚拟化表访问对象存储器数据,那么要虚拟化的文件必须在单个文件路径和单个存储区中,并且该存储区必须至少包含一个您添加到购物车的文件。 此文件路径中的所有文件都是虚拟化表的一部分。 将更多数据添加到表 (在文件路径中创建新文件) 时,当您访问虚拟化表时,将显示数据。 文件路径中的所有文件都必须使用相同的文件格式,以便将它们虚拟化为一个表。
- 如果要将多个文件路径中的文件虚拟化为一个表,那么可以虚拟化包含所有文件的存储区。 例如,如果您具有文件路径 A/B/C/T1a, A/B/C/T1b, A/B/D/T1c和 A/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。
- 避免在列名中使用字母数字字符,因为这可能会干扰 Hive 兼容性。 任何非字母数字字符或下划线字符都编码为_xNNNN,其中_xNNNN是该字符的十六进制值。 如果要正确查看列名,请通过完成以下步骤来启用
- 优化查询性能
- 使用压缩文件格式 (例如 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=1993
,YEAR 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) 语句中的 限制
。