DM(达梦数据库)连接器

概述

DM连接器允许在外部DM数据库中查询和创建表。这可用于在DM和Hive等不同系统之间或在两个不同的DM实例之间联接数据。

配置

首先,在开始使用DM连接器之前,应该先完成以下步骤:

  • 用于连接DM的JDBC连接详情

要配置DM连接器,在etc/catalog中创建一个目录属性文件,例如dameng.properties。使用以下内容创建文件,并根据设置替换连接属性:

connector.name=dameng
connection-url=jdbc:dm://主机:端口/SYSDBA
connection-user=用户名
connection-password=密码
  • 添加DM的JDBC驱动

DM JDBC驱动不在普通存储库中提供,如果您是DM数据库的用户,您可以选择前往DM官方网站,在确保遵守DM JDBC驱动所适用的license的条件下,下载和安装DM JDBC驱动到存储库中。DM JDBC驱动(DmJdbcDriverX.jar X为数字,根据DM的版本不同而不同)可能会作为DM客户端安装的一部分进行安装。获取了DM JDBC驱动后,您可以将jdbc jar文件部署到协调节点和工作节点上的openLooKeng插件文件夹中。例如,jdbc驱动文件为DmJdbcDriverX.jar,openLooKeng插件包文件夹为 /opt/hetu-server/plugin,则拷贝命令如下: cp DmJdbcDriverX.jar /opt/hetu-server/plugin/dm。重启协调节点和工作节点进程,DM连接器即可正常工作。

  • 是否开启查询下推功能

如果要启用DM连接器的连接器下推功能,不需要做任何操作,DM连接器的下推功能默认是打开的。但也可以按如下设置:

jdbc.pushdown-enabled=true
#true表示打开下推,false表示关闭。
  • 下推模式选择。

如果要启用DM连接器的全部下推功能,不需要做任何操作,DM连接器的下推模式默认是全部下推的。但也可以按如下设置:

jdbc.pushdown-module=FULL_PUSHDOWN
#FULL_PUSHDOWN,表示全部下推;BASE_PUSHDOWN,表示部分下推,其中部分下推是指filter/aggregation/limit/topN/project这些可以下推。
  • 更多配置

由于达梦数据库和Oracle同源,在实现DM连接器时,复用了Oracle连接器的部分配置,具体配置可参考ORACLE

通过openLooKeng查询DM

对于名为dameng的DM连接器,每个DM数据库的用户都可以通过DM连接器获取其可用的模式,命令为SHOW SCHEMAS

SHOW SCHEMAS FROM dameng;

如果已经拥有了可用模式,可以通过SHOW TABLES命令查看名为data的DM数据库拥有的表:

SHOW TABLES FROM dameng.data;

若要查看数据模式中名为hello的表中的列的列表,请使用以下命令中的一种:

DESCRIBE dameng.data.hello;
SHOW COLUMNS FROM dameng.data.hello;

你可以访问数据模式中的hello表:

SELECT * FROM dameng.data.hello;

连接器在这些模式中的权限是在连接属性文件中配置的用户的权限。如果用户无法访问这些表,则特定的连接器将无法访问这些表。

DM Update/Delete 支持

使用DM连接器创建表

示例:

CREATE TABLE dameng_table (
    id int,
    name varchar(255));

对表执行INSERT

示例:

INSERT INTO dameng_table
  VALUES
     (1, 'foo'),
     (2, 'bar');

对表执行UPDATE

示例:

UPDATE dameng_table
  SET name='john'
  WHERE id=2;

上述示例将值为2的列id的行的列name的值更新为john

UPDATE前的SELECT结果:

lk:default> SELECT * FROM dameng_table;
id | name
----+------
  2 | bar
  1 | foo
(2 rows)

UPDATE后的SELECT结果

lk:default> SELECT * FROM dameng_table;
 id | name
----+------
  2 | john
  1 | foo
(2 rows)

对表执行DELETE

示例:

DELETE FROM dameng_table
  WHERE id=2;

以上示例删除了值为2的列id的行。

DELETE前的SELECT结果:

lk:default> SELECT * FROM dameng_table;
 id | name
----+------
  2 | john
  1 | foo
(2 rows)

DELETE后的SELECT结果:

lk:default> SELECT * FROM dameng_table;
 id | name
----+------
  1 | foo
(1 row)

DM连接器的限制

  • openLooKeng支持连接DM8。

  • DM连接器暂不支持Update下推功能。