前言
经常会涉及到 关系型数据库与非关系型数据库 的笔试题,下面用一张表进行梳理
数据库类型 | 特性 | 优点 | 缺点 |
---|---|---|---|
关系型数据库 MySQL、Oracle、Microsoft Access、Microsoft Server DB2、PostgreSQL、SQLite、Teradata、MariaDB、SAP |
1、采用了关系模型来组织数据,一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织 2、最大特性:数据的一致性 3、事务必须具备ACID特性 |
1、容易理解:关系模型相对网状、层次等其他模型更容易理解 2、使用方便:使用通用的SQL语言 3、易于维护:丰富的完整性(实体、参照、用户定义)大大减低了数据冗余和数据不一致的概率 |
1、高性能并发需求 2、读写性能比较低,性能欠佳:多表的关联查询 3、对数据库系统进行升级和扩展时,往往需要停机维护和数据迁移 |
非关系型数据库 Redis、MongoDB、HBase、Amazon DynamoDB Memcached、Microsoft Azure Cosmos DB、Hazelcast |
1、使用键值对存储数据 2、分布式 3、一般不支持ACID特性 4、严格上不是一种数据库,而是一种数据结构化存储方法的集合 |
1、无需多表关联查询,读写性能很高 2、基于键值对,数据没有耦合性,容易扩展 3、存储格式多样:key,value形式、文档形式、图片形式等等,而关系型数据库则只支持基础类型。 |
1、不支持sql,学习和使用成本高 2、无事务管理 3、只适合存储较为简单的数据,不适合久存储海量数据 |
比较
关系型数据库 | 非关系数据库 | |
---|---|---|
成本 | 花费大量成本购买使用 | √ 数据库简单易部署,基本都是开源软件 |
查询速度 | 数据存储在硬盘中 | √ 数据存储在缓存中,不需要经过SQL层的解析 |
存储数据的格式 | 只支持基础类型 | √ 支持基础类型、对象、集合等各种格式 |
扩展性 | 扩展很艰难:多表查询机制的限制 | √ 基于键值对,数据没有耦合性,容易扩展 |
持久存储 | √ 适合 | × 不适合 |
数据一致性 | √ 一般强调的是数据的强一致性 | 一般强调的是数据最终一致性,有可能读到的是一个处于中间态的数据,不提供事务的处理 |