NoSQL,浅谈redis与mongoDB的区别
MongoDB和Redis都是NoSQL数据库,采用结构型数据存储,而MySQL、oracle等则属于传统的关系型数据库。
- NoSQL数据库与关系型数据库的优缺点
- 关系型数据库
优点:以完善的关系代数理论为基础,有严格的标准,支持事务ACID四性,借助索引机制可以实现高效的查询。
缺点:可扩展性差,无法较好地支持海量数据存储,数据模型过于死板,事务机制影响了系统的整体性能,全文搜索功能较弱。
- NoSQL数据库
优点:数据之间无关系,易扩展。有非常高的读写性能,支持大量数据,性能高。有灵活的数据模型,无须事先为要存储的数据建立字段,随时可以存储自定义的数据格式。
缺点:复杂查询性能不高,一般都不能实现事务的强一致性。
2. redis与mongoDB的区别
- 内存管理
Redis 数据全部存在内存,定期写入磁盘,当内存不够时,可以选择指定的 LRU 算法删除数据。
MongoDB 数据会优先存于内存,当内存不够时,只将热点数据放入内存,其他数据存在磁盘。
需要注意的是Redis 和mongoDB特别消耗内存,一般不建议将它们和别的服务部署在同一台服务器上。
- 数据结构
Redis 支持的数据结构丰富,包括hash、set、list等。
MongoDB 数据结构比较单一,但是支持丰富的数据表达,索引,类似关系型数据库,支持的查询语言非常丰富。
- 数据量和性能
当物理内存够用的时候,性能,redis>mongodb>mysql
数据量,mysql>mongodb>redis
注意mongodb可以存储文件,适合存放大量的小文件,内置了GirdFS 的分布式文件系统。
- 可靠性
mongodb从1.8版本后,采用binlog方式(MySQL同样采用该方式)支持持久化,增加可靠性;
Redis依赖快照进行持久化;AOF增强可靠性;增强可靠性的同时,影响访问性能。
可靠性上MongoDB优于Redis。
相关文章