更新时间:2024-07-24 GMT+08:00

添加GAUSSDB数据源

本章节指导用户在HSConsole界面添加GaussDB类型的JDBC数据源。

添加GAUSSDB数据源前提条件

  • 数据源所在集群与HetuEngine集群节点网络互通。
  • HetuEngine所在集群的所有节点的“/etc/hosts”文件中,添加待对接数据源所在集群的主机名称和对应的IP映射,及其“/etc/hosts”文件中的“10.10.10.10 hadoop.系统域名”(如“10.10.10.10 hadoop.hadoop.com”),否则HetuEngine无法根据主机名称连接到非本集群节点。
  • 已创建HetuEngine计算实例。

添加GAUSSDB数据源步骤

  1. 使用HetuEngine管理员用户登录FusionInsight Manager,选择“集群 > 服务 > HetuEngine”,进入HetuEngine服务页面。
  2. 在“概览”页签下的“基本信息”区域,单击“HSConsole WebUI”后的链接,进入HSConsole界面。
  3. 选择“数据源”,单击“添加数据源”。在“添加数据源”页面填写参数。

    1. 配置“基本配置”,填写数据源名称,选择数据源类型“JDBC > GAUSSDB-A”。
    2. 配置“GAUSSDB-A配置”,参数配置请参考表1
      表1 GAUSSDB-A配置

      参数

      描述

      取值样例

      驱动

      默认为“gaussdba”。

      gaussdba

      JDBC URL

      连接GaussDB数据库的JDBC URL地址。格式为:

      jdbc:postgresql://CN业务IP:端口/数据库名称

      说明:

      若GaussDB数据库开启SSL,URL地址需添加如下SSL相关参数:ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory

      • GaussDB数据库未开启SSL:

        jdbc:postgresql://10.0.136.1:25308/postgres

      • GaussDB数据库开启SSL:

        jdbc:postgresql://10.0.136.1:25308/postgres?ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory

      用户名

      GaussDB数据源连接用户名。

      根据连接数据源的用户名修改。

      密码

      GaussDB数据源连接密码。

      根据连接数据源的用户名密码修改。

    3. (可选)配置GaussDB用户信息,参考表2

      “GaussDB用户信息配置”与“HetuEngine-GaussDB用户映射配置”要搭配使用,HetuEngine在对接的GaussDB数据源时,通过用户映射,使得HetuEngine的用户具备与GaussDB数据源被映射的用户访问GaussDB数据源时同样的权限。可以多个HetuEngine用户对应一个GaussDB用户。

      在 GaussDB数据库中,创建的用户名要符合标识符的命名规范,且最大长度不超过63个字符。当用户名中包含大写字母时数据库将自动转换为小写字母,如果需要创建包含大写字母的用户名则需要使用双引号括起来。因此,配置“Data Source User”时,必须使用GaussDB数据库转换后的用户名。

      例如:

      • 在 GaussDB数据库创建的用户名为Gaussuser1,则Data Source User应为gaussuser1。
      • 在 GaussDB数据库创建的用户名为“Gaussuser1”,则Data Source User应为Gaussuser1。
      表2 GaussDB用户信息配置

      名称

      描述

      Data Source User

      数据源用户名称。

      如果配置了数据源用户为gaussuser1,那么必须有映射到gaussuser1的HetuEngine用户。例如创建hetuuser1映射到gaussuser1。

      Password

      对应数据源的用户认证密码。

    4. (可选)配置 HetuEngine-GaussDB用户映射配置,参考表4 HetuEngine-GaussDB用户映射配置

      以HetuEngine User和Data Source User键值对的形式配置多个HetuEngine的用户对应上面多个用户的其中一个。当使用不同的HetuEngine用户访问GaussDB时,可对应用不同的GaussDB的用户和密码。

      表3 HetuEngine-GaussDB用户映射配置

      名称

      描述

      HetuEngine User

      HetuEngine用户名。

      Data Source User

      数据源用户,如gaussuser1(表2中配置的数据源用户)。

    5. (可选)自定义配置。
      • 单击“增加”可以增加自定义配置参数。配置GaussDB数据源自定义参数,参考表4
        表4 GaussDB数据源自定义配置参数

        名称

        描述

        取值样例

        use-connection-pool

        是否使用JDBC连接池

        true

        jdbc.connection.pool.maxTotal

        JDBC连接池中最大连接数

        8

        jdbc.connection.pool.maxIdle

        JDBC连接池中最大空闲连接数

        8

        jdbc.connection.pool.minIdle

        JDBC连接池中最小空闲连接数

        0

        join-pushdown.enabled

        • true:允许将Join下推到数据源执行
        • false: Join不会被下推到数据源执行,因此会消耗更多的网络和计算资源

        true

        join-pushdown.strategy

        前提条件:Join下推功能已开启

        • AUTOMATIC:基于代价估算(cost-based)的Join下推
        • EAGER:尽可能的Join下推

        AUTOMATIC

        source-encoding

        GaussDB数据源编码方式

        UTF-8

        multiple-cnn-enabled

        是否使用GaussDB多CN配置。如果使用,首先确保关闭JDBC连接池功能,其次JDBC URL格式为:jdbc:postgresql://host:port/database,jdbc:postgresql://host:port/database,jdbc:postgresql://host:port/database

        false

        parallel-read-enabled

        是否使用并行数据读取功能

        启用并行数据读取功能将基于节点分布和“max-splits”参数值来确定实际的split数。

        并行读取将与数据源创建多个连接,被依赖的数据源应当具备支持负载的能力。

        false

        split-type

        并行数据读取类型

        • NODE:基于GaussDB数据源DN节点划分并行度
        • PARTITION:基于表分区划分并行度
        • INDEX:基于表索引划分并行度

        NODE

        max-splits

        最大并行度

        5

        use-copymanager-for-insert

        数据写入时是否使用CopyManager批量导入功能

        false

        unsupported-type-handling

        当连接器不支持此数据类型时,可以转换为VARCHAR,从而避免失败

        • CONVERT_TO_VARCHAR:不支持的类型将转为VARCHAR类型,并且只支持对它们的读操作,不支持的类型包括:BIT VARYING、CIDR、MACADDR、INET、OID、REGTYPE、REGCONFIG、POINT
        • IGNORE(默认值):不支持的类型将不在查询结果中显示

        CONVERT_TO_VARCHAR

        max-bytes-in-a-batch-for-copymanager-in-mb

        CopyManager批量导入每一批次最大数据量,单位:MB

        10

        decimal-mapping

        默认情况下HetuEngine会跳过未指定精度或超过最大精度38位的Decimal/Number/Numeric数据类型,通过设置“decimal-mapping=allow_overflow”,将其映射为Decimal(38,x)数据类型,x值为decimal-default-scale的值

        allow_overflow

        decimal-default-scale

        Decimal/Number/Numeric映射数据类型Decimal(38,x)小数位精度值,取值范围0~38,默认为0

        0

        case-insensitive-name-matching

        HetuEngine支持的GAUSSDB数据源的Schema和Table名称大小写格式敏感。

        • false:仅支持查询全小写的Schema或Table。默认值为false。
        • true:
          • 忽略大小写后无同名的Schema或Table:支持查询该Schema或Table。
          • 忽略大小写后存在同名的Schema或Table:不支持查询该Schema或Table。

        false

      • 单击“删除”可以删除已增加的自定义配置参数。
    6. 单击“确定”。

  4. 登录集群客户端所在节点,执行以下命令,切换到客户端安装目录并认证用户。

    cd /opt/client

    source bigdata_env

    kinit HetuEngine组件操作用户 (普通模式集群跳过)

  5. 执行以下命令,登录数据源的catalog。

    hetu-cli --catalog 数据源名称 --schema 数据库名

    例如执行以下命令:

    hetu-cli --catalog gaussdb_1 --schema admin

  6. 执行以下命令,可正常查看数据库表信息或不报错即表示连接成功。

    show tables;

GAUSSDB数据类型映射

GAUSSDB数据类型(data type)

HetuEngine数据类型(data type)

BOOLEAN

BOOLEAN

TINYINT

TINYINT

SMALLINT

SMALLINT

INTEGER

INTEGER

BINARY_INTEGER

INTEGER

BIGINT

BIGINT

SMALLSERIAL

SMALLINT

SERIAL

INTEGER

BIGSERIAL

BIGINT

FLOAT4 (REAL)

REAL

FLOAT8(DOUBLE PRECISION)

DOUBLE PRECISION

DECIMAL[p (,s)]

DECIMAL[p (,s)]

NUMERIC[p (,s)]

DECIMAL[p (,s)]

CHAR(n)

CHAR(n)

CHARACTER(n)

CHAR(n)

NCHAR(n)

CHAR(n)

VARCHAR(n)

VARCHAR(n)

CHARACTER VARYING(55)

VARCHAR(n)

VARCHAR2(n)

VARCHAR(n)

NVARCHAR2(n)

VARCHAR

TEXT(CLOB)

VARCHAR

DATE

TIMESTAMP

TIMESTAMP

TIMESTAMP

UUID

UUID

JSON

JSON

添加GAUSSDB数据源约束

  • 不支持如下语法:GRANT、REVOKE、SHOW GRANTS、SHOW ROLES、SHOW ROLE GRANTS。
  • UPDATE和DELETE语法不支持筛选条件子句中包含跨catalog的条件,例如:UPDATE mppdb.table SET column1=value WHERE column2 IN (SELECT column2 from hive.table)。
  • UPDATE语法不支持更新DATE/TIMESTAMP/VARBINARY字段。
  • 不支持查询WHERE语句条件为REAL,例如SELECT * FROM mppdb.table WHERE column1 = REAL '1.1'。
  • DELETE语法不支持筛选条件子句中包含子查询,例如:DELETE FROM mppdb.table WHERE column IN (SELECT column FROM mppdb.table1)。
  • HetuEngine支持GaussDB数据源Decimal/Number/Numeric类型数据的最大精度不超过38位。
  • 当谓词的前后两端任意一端包含子查询时,该谓词不会下推,如示例语句count(*) 后面存在子查询,则不下推,但子查询中的min函数可以下推。
    select count(*) from item where i_current_price = (select min(i_current_price) from item);