mongodb,redis,mysql 简要对比
本篇内容大部分不是原创,转载的会贴有链接。
准备学习下数据库,想对目前的主流数据库做一个简单的了解分析,就搜集了资料整理到了一块。
当下主流的要数NoSql数据库了,拥有强大的高并发能力。
mongodb:
它是一个内存数据库,数据都是放在内存里面的。
对数据的操作大部分都在内存中,但mongodb并不是单纯的内存数据库。
持久化方式:
mongodb的所有数据实际上是存放在硬盘的,所有要操作的数据通过mmap的方式映射到内存某个区域内。
然后,mongodb就在这块区域里面进行数据修改,避免了零碎的硬盘操作。
至于mmap上的内容flush到硬盘就是操作系统的事情了,所以,如果,mongodb在内存中修改了数据后,mmap数据flush到硬盘之前,系统宕机了,数据就会丢失。
mmap详解链接:http://www.cnblogs.com/techdoc/archive/2010/12/22/1913521.html
redis:
它就是一个不折不扣的内存数据库了。
redis所有数据都是放在内存中的,持久化是使用RDB方式或者aof方式。
解密redis持久化:http://blog.nosqlfan.com/html/3813.html
mysql:
无论数据还是索引都存放在硬盘中。到要使用的时候才交换到内存中。能够处理远超过内存总量的数据。
Redis是k-v型数据库,目标是做高效的分布式缓存。数据一般不实时落地。也不适合做存储和分析。
HBase是列式数据库,BigTable的一种实现,目标是高效存储大量数据,支持列压缩,行事务。适合Schema-less的数据。
Redis很适合用来做缓存,但除此之外,它实际上还可以在一些“读写分离”的场景下作为“读库”来用,特别是用来存放Hadoop或Spark的分析结果。
Redis的读写性能在100,000 ops/s左右,时延一般为10~70微妙左右;而HBase的单机读写性能一般不会超过1,000ops/s,时延则在1~5毫秒之间。
Redis的魅力还在于它不像HBase只支持简单的字符串,他还支持集合set,有序集合zset和哈希hash
MongoDB做高性能数据库,Redis做缓存,HBase做大数据分析。MongoDB还无法取代关系型数据库。
传统关系型数据库面对数据规模、数据模型复杂时的不足,导致了NoSQL的快速发展,后者易扩展,性能高,支持灵活的数据模型。
MongoDB是高性能、无模式的文档型数据库,支持二级索引,非常适合文档化格式的存储及查询。MongoDB的官方定位是通用数据库,确实和MySQL有些像,现在也很流行,但它还是有事务、join等短板,在事务、复杂查询应用下无法取代关系型数据库。
Redis是内存型Key/Value系统,读写性能非常好,支持操作原子性,很适合用来做高速缓存。
HBase存储容量大,一个表可以容纳上亿行、上百万列,可应对超大数据量要求扩展简单的需求。Hadoop的无缝集成,让HBase的数据可靠性和海量数据分析性能(MapReduce)值得期待。
所以说,关系型数据库和NoSQL各有优劣,两者结合,可以覆盖更多的业务场景。
网易云提供三副本高可用的[MongoDB](MongoDB 服务_MongoDB 云端解决方案-网易云)云端解决方案,并为备份、监控和性能特别优化,使用[Redis](Redis_缓存服务_key-value在线存储服务-网易云)构建高性能缓存,支持数据持久化,使用HBase支持大数据分析。