MogoDB和MySql的主要区别
数据库 | MongoDB | MySQL |
---|---|---|
数据库模型 | 非关系型 | 关系型 |
存储方式 |
以类JSON的文档的格式存储 虚拟内存+持久化 |
不同引擎有不同的存储方式 |
查询语句 | MongoDB查询方式(类似JavaScript的函数) | SQL语句 |
架构特点 |
可以通过副本集,以及分片来实现高可用 (在副本集中,当主库遇到问题,无法继续提供服务时,副本集将选举一个新的主库继续提供服务, 高可用和集群架构拥有十分高的扩展性) |
常见有单点,M-S,MHA,MMM,Cluster等架构方式 |
数据处理方式 | 基于内存,将热数据存放在物理内存中,从而达到高速读写 |
不同引擎有自己的特点 处理海量数据效率先住变慢 |
成熟度 | 新兴数据库,成熟度较低 | 成熟度高 |
广泛度 | NoSQL数据库中,比较完善且开源,使用人数在不断增长 | 开源数据库,市场份额不断增长 |
事务性 |
仅支持单文档事务操作,弱一致性 (本身没有带事务机制,需要在MongoDB中实现事务机制,需要通过一个额外的表,从逻辑上自行实现事务) |
支持事务操作 |
占用空间 | 占用空间大 | 占用空间小 |
join操作 | MongoDB没有join | MySQL支持join |
Mysql和Mongodb主要应用场景
1.如果需要将mongodb作为后端db来代替mysql使用,即这里mysql与mongodb 属于平行级别,那么,这样的使用可能有以下几种情况的考量:
(1)mongodb所负责部分以文档形式存储,能够有较好的代码亲和性,json格式的直接写入方便。(如日志博客之类)
(2)从datamodels设计阶段就将原子性考虑于其中,无需事务之类的辅助。开发用如nodejs之类的语言来进行开发,对开发比较方便。
(3)mongodb本身的failover机制,无需使用如MHA之类的方式实现。
2.将mongodb作为类似redis ,memcache来做缓存db,为mysql提供服务,或是后端日志收集分析。
考虑到mongodb属于nosql型数据库,sql语句与数据结构不如mysql那么亲和 ,也会有很多时候
将mongodb做为辅助mysql而使用的类redis memcache 之类的缓存db来使用。 亦或是仅作日志收集分析。