主流数据库介绍
Relational DBMS
基于关系模型的数据库,关系模型折射现实世界中的实体关系,将现实世界中各种实体及实体之间的关系通过关系模型表达出来,最大特点就是事务的一致性。
Key-value Stores
一种非关系数据库,它使用简单的键值方法来存储数据,具有极高的并发读写性能。
Document Stores
一种非关系数据库,可以在海量的数据中快速的查询数据。通常数据表示为 JSON 文档,因为开发人员将其数据模型视为文档更为直观。
Time Series DBMS
一种非关系数据库,主要用于指处理带时间标签(按照时间的顺序变化,即时间序列化)的数据,带时间标签的数据也称为时间序列数据。常用于分布式系统监控、物联网等。
Graph DBMS
一种非关系数据库,是一个使用图结构进行语义查询的数据库,它使用节点、边和属性来表示和存储数据,主要处理现实世界复杂的关系网。
Search Engines
是一类专门用于数据内容搜索的非关系数据库。
RDF Stores
Wide Column Stores
一种非关系数据库,它能很好地用于存储可收集的巨量数据。 它的架构使用持久的、稀疏的矩阵、多维度的映射(行值、列值和时间戳),采用表格式,意在实现大规模的可扩展性(超过PB规模)。
Multivalue DBMS
是一种灵活的数据库,具有NoSQL和多维数据库的混合功能,支持和鼓励使用可以采用值列表的属性的功能,而不是所有属性都是单值的。
Spatial DBMS
用于GIS数据库的存储。
The top 5 open source systems
国产数据库介绍
主流数据库汇总
关系型适配方案
基于 Mybatis 框架的多数据库类型的支持:
- 不同的 statementId
导致接口 Mapper 的方法大量增加,接口庞大而臃肿 - 不同的 mapper 文件
导致需要维护多份通用的sql,因为每份 mapper 文件都需要实现所有statement - 每个 statement 添加属性 databaseId
mybatis 启动的时候,会侦测当前使用的数据库,如果是 Oracle(name=“Oracle”) 的话,对于拥有相同 statementId的语句,则会选择执行带有 databaseId=“oracle” 的语句
注意事项
同一套方案适配不同的数据库时,存在各种兼容性问题。为了更好的适配国产数据库,需要做如下处理:
- 禁用特性
外键约束、触发器、存储过程、视图、自定义函数、全文索引、空间索引、非 UTF8 字符集等 - 编码兼容性
针对特殊的SQL语法,采用类继承 or databaseId 的方案进行适配解决 - 系统初始化
由于数据库的兼容性问题,系统初始化的 SQL 脚本需要针对不同数据库提供相应的初始化脚本