MySQL与mongodb优点与缺点
MySQL是关系型数据库
优点:
- 在不同的引擎上有不同 的存储方式。
- 查询语句是使用传统的sql语句,拥有较为成熟的体系,成熟度很高。
- 开源数据库的份额在不断增加,mysql的份额页在持续增长。
缺点:
- 在海量数据处理的时候效率会显著变慢。
Mongodb是非关系型数据库(nosql ),属于文档型数据库。
文档是mongoDB中数据的基本单元,类似关系数据库的行,多个键值对有序地放置在一起便是文档,语法有点类似javascript面向对象的查询语言,它是一个面向集合的,模式自由的文档型数据库。
优点:
- 快速。在适量级的内存的Mongodb的性能是非常迅速的,它将热数据存储在物理内存中,使得热数据的读写变得十分快。
- 高扩展性。mongodb的高可用与集群架构拥有十分高的扩展性,通过物理机器的增加,以及sharding的增加,mongodb的扩展将达到一个十分惊人的地步。
- 自身的failover机制。Mongodb的副本集配置中,当主库遇到问题,无法继续提供服务的时候,副本集将选举出一个新的主库继续提供服务
- json的存储格式。mongodb的json与bson格式很适合文档格式的存储与查询。
缺点:
- 不支持事务
存储方式:
- 虚拟内存+持久化。
查询语句:
- 是独特的Mongodb的查询方式。
适合场景:
- 事件的记录,内容管理或者博客平台等等。
架构特点:
- 可以通过副本集,以及分片来实现高可用。
数据处理:
- 数据是存储在硬盘上的,只不过需要经常读取的数据会被加载到内存中,将数据存储在物理内存中,从而达到高速读写。
Mysql和Mongodb主要应用场景
- 如果需要将mongodb作为后端db来代替mysql使用,即这里mysql与mongodb 属于平行级别,那么,这样的使用可能有以下几种情况的考量
- mongodb所负责部分以文档形式存储,能够有较好的代码亲和性,json格式的直接写入方便。(如日志之类)
- 从datamodels设计阶段就将原子性考虑于其中,无需事务之类的辅助。开发用如nodejs之类的语言来进行开发,对开发比较方便。
- mongodb本身的failover机制,无需使用如MHA之类的方式实现。
- 将mongodb作为类似redis ,memcache来做缓存db,为mysql提供服务,或是后端日志收集分析。 考虑到mongodb属于nosql型数据库,sql语句与数据结构不如mysql那么亲和 ,也会有很多时候将mongodb做为辅助mysql而使用的类redis memcache 之类的缓存db来使用。 亦或是仅作日志收集分析。