主流数据库/国产数据库有哪些 如何适配国产数据库_国产化数据库适配_郎涯技术的博客-程序员资料

技术标签: # 数据库  数据库  

主流数据库介绍

Relational DBMS

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

image-20220405202333116

Key-value Stores

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

image-20220405203149088

Document Stores

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

image-20220405203256717

Time Series DBMS

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

image-20220405203009035

Graph DBMS

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

image-20220405203401322

Search Engines

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

image-20220405203449476

RDF Stores

image-20220405204542063

Wide Column Stores

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

image-20220405203648299

Multivalue DBMS

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

image-20220405204216673

Spatial DBMS

用于GIS数据库的存储。

image-20220405204044195

The top 5 open source systems

image-20220405211941801

国产数据库介绍

主流数据库汇总

screencapture-modb-pro-dbRank-2022-04-05-21_22_24

关系型适配方案

适配数据库

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

  • 不同的 statementId

    导致接口 Mapper 的方法大量增加,接口庞大而臃肿

  • 不同的 mapper 文件

    导致需要维护多份通用的sql,因为每份 mapper 文件都需要实现所有statement

  • 每个 statement 添加属性 databaseId

    mybatis 启动的时候,会侦测当前使用的数据库,如果是 Oracle(name=“Oracle”) 的话,对于拥有相同 statementId的语句,则会选择执行带有 databaseId=“oracle” 的语句

注意事项

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

  • 禁用特性

    外键约束、触发器、存储过程、视图、自定义函数、全文索引、空间索引、非 UTF8 字符集等

  • 编码兼容性

    针对特殊的SQL语法,采用类继承 or databaseId 的方案进行适配解决

  • 系统初始化

    由于数据库的兼容性问题,系统初始化的 SQL 脚本需要针对不同数据库提供相应的初始化脚本

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/aoshilang2249/article/details/124029226

智能推荐

数据中心基础设施及日常运维管理_数据中心运维管理的博客-程序员资料

资料免费送(点击链接下载)史上最全,数据中心机房标准及规范汇总(下载)数据中心运维管理 | 资料汇总(2017.7.2版本)                       ...

import dlib,报错:ImportError: libcublas.so.10.0: cannot open shared object file: No such file or direc_Richard Young的博客-程序员资料

import dlib,报错:ImportError: libcublas.so.10.0: cannot open shared object file: No such file or directory.很简单,直接卸载dlib,重新安装。sudo pip uninstall dlibsudo pip install dlib就可以解决了。原因是,cuda版本发生过变化,dlib库与其版本不一致。重装dlib系统会自动搜索匹配的版本。so easy!...

【C学习笔记之一】 指针_倔强的大萝卜的博客-程序员资料

0 指针的基础知识0.1 指针的概念指针变量:指针变量也是一个变量,在指针中存放的内容是一块内存空间的地址。内存地址:计算机内存的最小单位是Byte,每一个Byte都有一个唯一的编号,这个编号就是内存空间的地址,通常叫作内存地址。这个编号在32位操作系统下是一个32位的整数,在64位操作系统下是一个64位的整数。例如在win64系统下的VS2015中运行一下程序:    #include<s...

第1075期AI100_机器学习日报(2017-08-28)_ai100_ml的博客-程序员资料

AI100_机器学习日报 2017-08-28TensorFlow生成模型集锦@爱可可-爱生活PyTorch语义图像分割/检测库@爱可可-爱生活分布式机器学习平台比较 @阿里云云栖社区从Boosting到Stacking,概览集成学习的方法与性能@机器之心SyncedCVPR WebVision挑战赛分享与展望@爱可可-爱生活@好东西传送门 出品,由@AI100运营

hexo博客的yilia主题之添加分类_hexo yilia文章分类_皓月雨欣的博客-程序员资料

文章目录步骤1.添加 categories 页面2.添加 categories 链接3.修改 yilia 主题4.多层分类5.效果6.参考文档1 添加 categories 页面1.1 新建 categories 页面

fedora22/ubuntu14.04下配置Trilinos/Anasazi,PETSc/SLEPc_米饭的白色的博客-程序员资料

为了用PHG解特征值问题,这些天一直在苦恼如何安装特征值解法器,PHG/manual里面提到了一些特征值解法器,并且部分给出了rpm包,可最开始用的是ubuntu系统,所以自己从网上下的这些包的源码安装的,结果安装好后在./phg中进行./configure 时就是识别不出所安装的包,无奈只得又重装的fedora22。       在fedora22下,从PHG提供的网站ftp://159.2

随便推点

字符串和字符串数组_crazy_zhangcong的博客-程序员资料

文章目录字符串字符串输出字符串常用方法计算字符串的长度字符串拼接字符串拷贝字符串比较字符串数组字符串用双引号引起来的就是字符串,字符串由字符组成字符串使用%s格式化输出字符串以\0结尾,没有\0就不是字符串只要是用双引号括起来的都是字符串字符串的本质就是数组注意: 字符串变量和普通的字符数组有一定的区别,C语言规定,字符串必须以\0结尾(作为字符串的结束符号),所以字符串变量的元素...

Flash builder 4.7连接手机调试项目_cp1001的博客-程序员资料

flash builder里的手机项目连接到手机做真机调试:1.修改项目属性里的调试设置:选择使用设备调试   2. usb方式或者wifi方式连接手机到pc手机打开调试模式(这个选项一般在开发者模式里)。手机连接到pc会自动安装驱动,android手机还需要安装USB 设备驱动程序才能调试。在设备管理器里查看是否成功安装了USB 设备驱动程序(开启USB调

英文论文格式_英文论文公式格式_Bluenapa的博客-程序员资料

1.公式变量 在文中涉及时要和公式正文一致2.formula 也是行文句子的一部分,注意标点的书写。3.det 函数问题当输入det时 ,matype 会自动识别然后将其变为罗马样式,导致出现有正有斜的现象。解决这个问题可以先敲出 de*t 然后再将* 删除,曲线救国最终达到斜体的目的。...

在CentOS 7上实施密码复杂性策略_authtok_type_allway2的博客-程序员资料

在本指南中,我们将学习如何在基于CentOS 7 / RHEL的派生产品上实施密码复杂性策略。我们之前的指南涵盖了在Ubuntu 18.04上实施密码复杂性。您可以通过以下链接进行检查;在Ubuntu 18.04上实施密码复杂度策略在CentOS 7上实施密码复杂度策略与我们之前的指南类似,我们将使用PAMpwquality模块在基于CentOS 7 / RHEL的派生产品上实施密码复...

yii2 php echart,YII2 使用Echart 简易demo_沈一冰的博客-程序员资料

第一步 下载第三方包使用compose下载"bower-asset/echarts": "2.2.1";以及php插件composer require"hisune/echarts-php"第二步 创建asset bunnle类。① ②namespace app\assets;use yii\web\AssetBundle;class EchartsAsset extends AssetBun...

python cx_Oracle 5_睡皇逸的博客-程序员资料

转载自:http://www.oracle.com/technetwork/cn/articles/prez-stored-proc-096180-zhs.html调用数据库存储过程及其他感兴趣的高级 Python 编程功能。2010 年 3 月发布对于涉及数据库的软件开发来说,有两种主流开发方法:一种是在应用程序中(对于三层体系结构,也可以是在中间件中)实现所有业务逻辑,