Dremio对国产数据库的支持使用

一.国产数据库调研

Ⅰ).达梦数据库

达梦数据库管理系统是达梦公司推出的具有完全自主知识产权的高性能数据库管理系统,简称DM。达梦数据库管理系统的最新版本是8.1.0版本,简称DM8。

DM8吸收借鉴当前先进新技术思想与主流数据库产品的优点,融合了分布式、弹性计算与云计算的优势,对灵活性、易用性、可靠性、高安全性等方面进行了大规模改进,多样化架构充分满足不同场景需求,支持超大规模并发事务处理和事务-分析混合型业务处理,动态分配计算资源,实现更精细化的资源利用、更低成本的投入。一个数据库,满足用户多种需求,让用户能更加专注于业务发展。

Ⅱ).神通数据库

神通数据库是天津神舟通用数据技术有限公司(简称“神舟通用公司”)拥有自主知识产权的企业级、大型通用关系型数据库管理系统,是神舟通用公司多年的大型数据库领域研发积累和深厚的航天信息化建设经验的集中体现,也是国家“核高基”重大专项、国家“863”计划大力支持基础软件领域发展所取得的一项重要成果。

神通数据库已经在*、电信、电力、国防、军工、教育等行业得到了大量应用,可靠稳定的支撑了*机关和企事业单位的数据业务平台。神通数据库最新版本是7.0.8

Ⅲ).人大金仓数据库

金仓数据库KingbaseES是人大金仓的核心产品,具有大型通用、"三高"(高可靠、高性能、高安全)、"两易"(易管理、易使用)、运行稳定等特点,是唯一入选国家自主创新产品目录的数据库产品,也是*、省部级实际项目中应用最广泛的国产数据库产品。

金仓数据库KingbaseES面向企业级关键业务应用,充分满足数据库系统高稳定性、高可靠性以及高性能的要求,内置高可用功能,提供高效查询优化策略和多样化数据缓存机制,支持并行处理和集群架构,具有完备的数据分区支持和海量数据管理能力,提供直观易用的系统监控手段,并与第三方数据库高度兼容,广泛支持业内主流中间件及其它应用,配备专业高效的技术服务团队,让国产数据库产品面对企业级关键业务应用更加从容和得心应手。

Ⅳ).南大通用数据库

南大通用数据库是天津南大通用数据技术股份有限公司研发的是国产数据库,南大通用数据库主要包括一下几部分产品

1).GBase 8a

GBase 8a是大数据时代成熟的分析型MPP数据库,是国内分析型数据库主导性产品,并与国外同类主流产品保持技术同步、市场同级。以大规模并行处理、列存储,高压缩和智能索引技术为基础,具有满足各个数据密集型行业日益增大的数据分析、数据挖掘、数据备份和即席查询等需求的能力。

2).GBase 8t

GBase 8t是支撑高端业务的事务型数据库,通过中国信息安全认证中心的安全可靠认证,并在高可用、灾备、空间数据、时序数据等方面技高一筹。

3).GBase 8m

GBase 8m是MPP架构的全内存数据库,采用多核、多进程、大内存、SSD等最新硬件技术,比同类内存数据库的性能有了大幅度的提升。

4).GBase UP

GBase UP作为统一数据平台,将事务型数据库、MPP数据库、Hadoop、Spark等不同类型的数据组织管理技术和数据处理技术融合在一起,并对外提供统一的服务,从而形成统一的数据平台。

5).InfiniData

InfiniData是基于x86的超融合架构数据库一体机,提供了灵活的软硬件配置方案,在帮助用户平滑地将业务过渡到新的数据库架构的同时带来超高的性价比。

二.数据库连接器支持实现

Ⅰ).数据库连接器说明

Dremio Hub为各种数据源提供了社区支持的连接器,并且可以创建自己的连接器。充分利用Dremio的速度和易用性,同时能够与任何其他数据源集成。

Advanced Relational Pushdown(ARP)框架允许为具有JDBC驱动程序并接受SQL作为查询语言的任何数据源创建Dremio插件。它允许使用几乎没有代码的插件创建方式,允许使用配置文件修改Dremio发出的查询。

Ⅱ).实现原理

  1. dremio-ce-jdbc-plugin通过加载/jars目录中的数据库连接器插件及依赖在/jars/3rdparty目录中的jar,来获取连接器信息
  2. 自定义数据库连接器通过dremio-ce-jdbc-plugin包中AbstractArpConf. loadArpFile来加载ARP定义文件(resources/arp/implementation/*-arp.yaml)
  3. 在自定义的DataSourceConf中使用注解@SourceType(value=”SourceName” lable=”show source name”)
  4. 使用注解@NotBlank()、@Tag()、@DisplayMetadata()、@NotMetadataImpacting()等,定义配置ip、port、username、password、database、fetchSize等信息
  5. 在toJdbcConnectionString方法中,拼接数据库连接字符串

三.ARP文件格式说明

文件目录:resources/arp/implementation/*-arp.yaml,文件内容主要包括metadata、syntax、data_types和relational_algebra,具体说明如下:

Ⅰ).metadata

元数据主要用来定义数据库连接器名字和API访问

metadata:
  # Manually Configured Metadata Section.
  name: SHENTONG
  apiname: shentong
  spec_version: '1'

Ⅱ).syntax

句法部分主要配置常规语法项,如标识符、长度限制、是否支持schema和catalog等信息

syntax:
  # Manually Configured Syntax Section.
  identifier_quote: '"'
  identifier_length_limit: 128
  allows_boolean_literal: true
  map_boolean_literal_to_bit: false
  supports_catalogs: false
  supports_schemas: true

Ⅲ).data_types

数据类型用来定义数据库连接器的jdbc驱动程序支持的数据类型与Dremio数据类型的映射关系

data_types:
  mappings:
    # Manually Configured Data Types Mappings Section.
    - source:
        name: "int"
      dremio:
        name: "integer"
      required_cast_arguments: "none"
    - source:
        name: "smallint"
      dremio:
        name: "integer"
      required_cast_arguments: "none"

Ⅳ).relational_algebra

relational_algebra用来定义聚合、关联、分组、排序、表达式、函数以及运算符等相关信息

relational_algebra:
  aggregation:
    enable: true
    group_by_ordinal: false
    distinct: true
    count_functions:
      count_star:
        enable: true
      count:
        enable: true
  except:
    enable: true
  project:
    enable: true
  join:
    enable: true
    cross:
      enable: true
      rewrite: "{0}, {1}"

# Describe the set of function signatures that are internally supported.
expressions:
  subqueries:
    correlated: true
    scalar: true
    in_clause: true
  supports_case: true
  supports_over: false
  operators:
    - names:
        - "="
        - "!="

四.使用说明

  1. 编译,在项目目录下运行,命令:mvn clean install
  2. 将生成的jar放到dremio的jars目录中
  3. 将JDBC依赖的jar包放到dremio的jars/3rdparty目录中
  4. 启动dremio

五.常用数据库连接列表

DataSource JDBC URL DriverName Port
达梦 jdbc:dm://ip:port dm.jdbc.driver.DmDriver 5236
神舟通用 jdbc:oscar://ip:port com.oscar.Driver 2003
人大金仓 jdbc:kingbase8://ip:port com.kingbase8.Driver 54321
南大通用 jdbc:gbase://ip:port com.gbase.jdbc.Driver 5258
SQL Server jdbc:sqlserver://ip:port;DatabaseName=database com.microsoft.jdbc.sqlserver.SQLServerDriver 1433
SQLite path org.sqlite.JDBC

六.神通数据库连接器代码

神通数据库连接器

上一篇:Dremio使用Superset可视化


下一篇:NVIDIA显卡性能靠频率?GPU Boost是怎么回事?