主流数据库介绍

Relational DBMS

基于关系模型的数据库,关系模型折射现实世界中的实体关系,将现实世界中各种实体及实体之间的关系通过关系模型表达出来,最大特点就是事务的一致性。

主流数据库/国产数据库有哪些 如何适配国产数据库_数据

Key-value Stores

一种非关系数据库,它使用简单的键值方法来存储数据,具有极高的并发读写性能。

主流数据库/国产数据库有哪些 如何适配国产数据库_数据_02

Document Stores

一种非关系数据库,可以在海量的数据中快速的查询数据。通常数据表示为 JSON 文档,因为开发人员将其数据模型视为文档更为直观。

主流数据库/国产数据库有哪些 如何适配国产数据库_数据_03

Time Series DBMS

一种非关系数据库,主要用于指处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也称为时间序列数据。常用于分布式系统监控、物联网等。

主流数据库/国产数据库有哪些 如何适配国产数据库_关系数据库_04

Graph DBMS

一种非关系数据库,是一个使用图结构进行语义查询的数据库,它使用节点、边和属性来表示和存储数据,主要处理现实世界复杂的关系网。

主流数据库/国产数据库有哪些 如何适配国产数据库_关系数据库_05

Search Engines

是一类专门用于数据内容搜索的非关系数据库。

主流数据库/国产数据库有哪些 如何适配国产数据库_数据库_06

RDF Stores

主流数据库/国产数据库有哪些 如何适配国产数据库_数据_07

Wide Column Stores

一种非关系数据库,它能很好地用于存储可收集的巨量数据。 它的架构使用持久的、稀疏的矩阵、多维度的映射(行值、列值和时间戳),采用表格式,意在实现大规模的可扩展性(超过PB规模)。

主流数据库/国产数据库有哪些 如何适配国产数据库_数据_08

Multivalue DBMS

是一种灵活的数据库,具有NoSQL和多维数据库的混合功能,支持和鼓励使用可以采用值列表的属性的功能,而不是所有属性都是单值的。

主流数据库/国产数据库有哪些 如何适配国产数据库_数据_09

Spatial DBMS

用于GIS数据库的存储。

主流数据库/国产数据库有哪些 如何适配国产数据库_数据_10

The top 5 open source systems

主流数据库/国产数据库有哪些 如何适配国产数据库_关系数据库_11

国产数据库介绍

主流数据库汇总

主流数据库/国产数据库有哪些 如何适配国产数据库_数据库_12

关系型适配方案

主流数据库/国产数据库有哪些 如何适配国产数据库_关系数据库_13

基于 Mybatis 框架的多数据库类型的支持:

  • 不同的 statementId
    导致接口 Mapper 的方法大量增加,接口庞大而臃肿
  • 不同的 mapper 文件
    导致需要维护多份通用的sql,因为每份 mapper 文件都需要实现所有statement
  • 每个 statement 添加属性 databaseId
    mybatis 启动的时候,会侦测当前使用的数据库,如果是 Oracle(name=“Oracle”) 的话,对于拥有相同 statementId的语句,则会选择执行带有 databaseId=“oracle” 的语句

注意事项

同一套方案适配不同的数据库时,存在各种兼容性问题。为了更好的适配国产数据库,需要做如下处理:

  • 禁用特性
    外键约束、触发器、存储过程、视图、自定义函数、全文索引、空间索引、非 UTF8 字符集等
  • 编码兼容性
    针对特殊的SQL语法,采用类继承 or databaseId 的方案进行适配解决
  • 系统初始化
    由于数据库的兼容性问题,系统初始化的 SQL 脚本需要针对不同数据库提供相应的初始化脚本