mongo和mysql区别

Tables mongo mysql
数据库类型 非关系型、文档型、nosql 关系型
存储方式 虚拟内存+持久化 不同引擎不同存储方式
查询语句 独特mongo查询语句 传统sql语句
架构特点 可以通过副本集,分片实现高可用,集群架构拥有十分高的扩展性 常见有单点、集群多种架构方式
数据处理方式 基于内存,将热数据存在物理内存中,从而达到高速读写 不同引擎拥有自己特点,海量数据处理效率显著变慢
事务性 本身没有事务机制,若要实现,需要通过一张额外的表,逻辑上自行实现事务 支持事务操作
占用空间 占用空间大 占用空间小
join操作 mongo没有join mysql支持join
扩展性 nosql基于键值对,数据间没有耦合,容易水平扩展 关系型数据库有类似join这样的多表查询机制的限制导致扩展很艰难
成熟度 新兴数据库,成熟度较低 拥有成熟体系,成熟度较高
广泛度 nosql数据库中,mongodb是较为完善的DB之一,使用人群也在不断增长 开源数据库份额在不断增加,mysql份额也在持续增长

关系型数据库?非关系型数据库?
关系型数据库依赖一个模型来创建数据库,比如我们使用的mysql中的表是由横列和纵列组成的一个二维表格。关系型数据库可以通过关系模型使多个表的数据关联起来,比如我们平时说的一对一、一对多、多对一。由于是建立在数据模型的基础上,所以可以通过SQL语句很方便在多个表之间做复杂的查询操作。关系型数据库相对安全,因为直接存储在硬盘中所以突然的宕机、停电等意外不会导致数据丢失。
非关系型数据库即我们常说的nosql数据库,部署起来都比较简单,没有关系型数据库那么复杂。Mongo的存储方式为虚拟内存+持久化存储,Mongo将数据写入内存中,再由虚拟内存管理器将其持久化到硬盘中,因此写操作会比关系型数据库快很多。NOSQL的存储格式是key-value形式,可以像关系型数据库那样存储基础数据类型的数据,也可以存储集合、对象等等。NoSQL虽然性能比较高,但是并不支持事务,也不能进行联表查询,一般用于较大规模数据的存储。

mongo和mysql主要应用场景
1、mongo所负责部分以文档形式存储,能够有较好的代码亲和性,json格式直接写入方便
mongo适合场景:事件的记录,内容管理或者博客平台等,存储数据格式比较丰富,日志信息一般种类较多,范围较大,内容比较杂乱,通过mongo将日志进行收集管理,使查找变得非常容易
2、将mongodb作为类似redis等缓存db,为mysql提供服务,或是后端日志收集分析。考虑到mongodb属于nosql型数据库,sql语句不如mysql亲和,也会有很多时候将mongodb作为辅助mysql而使用的类似redis之类的缓存db来使用。亦或是仅作为日志收集分析
3、mysql一个复杂的查询操作,一系列的组合索引都会消耗非常多的内存空间,此时我们需要对数据库进行读写分离操作,或将数据库结构进行拆分(水平拆分、垂直拆分)将请求压力分担在不同的库中

你可能感兴趣的:(mongo和mysql区别)