| 数据库模型 | 非关系型 | 关系型 |
| 存储方式 | 虚拟内存+持久化 | 不同引擎有不同存储方式 |
| 查询语句 | 独特MongoDB查询方式 | 传统SQL语句 |
| 架构特点 | 可通过副本集和分片实现高可用 | 常见有单点、M-S、MHA、MMM、Cluster等架构方式 |
| 数据处理方式 | 基于内存,将热数据存在物理内存中,从而达到高速读写 | 不同引擎拥有其自己的特点 |
| 成熟度 | 新兴是数据库,成熟度较低 | 拥有较为成熟的体系,成熟度较高 |
| 优势 | 1、无需经过sql层的解析,读写性能高;2、基于键值对,数据没有耦合性,容易扩展;3、存储数据的格式,nosql使用key:val的形式,文档的形式,图片形式等等,而关系型数据库则只支持基础类型;4、本身的failover(故障切换)机制,无需使用如MHA之类的方式实现。 | 1、容易理解 2、使用方便 3、易于维护 4、事务一致 5、支持SQL,可用于复杂的查询 |
| 缺点 | 1、不提供sql支持,学习成本高 2、无事务处理,附加功能和报表支持也不好 | 1、为了维护一执行需要消耗大量的性能 2、影响读写 3、固定的表结构 4、不适合高并发读写需求 5、不适合海量数据的高效率读写 |
| 主要应用场景 | 1、数据以文档形式存储,能够有较好的代码亲和性,json格式的直接写入方便。(如日志之类) 2、从datamodels设计阶段就将原子性考虑于其中,无需事务之类的辅助 3、将mongodb作为类似redis ,memcache来做缓存db,为mysql提供服务,或是后端日志收集分析 | |
| 数据库 | database | database |
| 数据库表/集合 | collection | table |
| 数据记录行/文档 | document | row |
| 数据字段/域 | field | column |
| 索引 | index | index |
| 表连接 | 不支持 | table joins |
| 主键 | primary key,自动将_id字段设置为主键 | primary key |