天天看點

Dremio對國産資料庫的支援使用一.國産資料庫調研二.資料庫連接配接器支援實作三.ARP檔案格式說明四.使用說明五.常用資料庫連接配接清單六.神通資料庫連接配接器代碼

一.國産資料庫調研

Ⅰ).達夢資料庫

達夢資料庫管理系統是達夢公司推出的具有完全自主知識産權的高性能資料庫管理系統,簡稱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

六.神通資料庫連接配接器代碼

神通資料庫連接配接器