常见的NoSQL数据库及优缺点对比

NoSQL即非关系型的数据库,NoSQL数据库发展十分迅速,码笔记听说已经有上百种NoSQL数据库了,码笔记分享几种常见的NoSQL数据库及对比:

NoSQL数据库及对比

常见的NoSQL数据库有Redis、MangoDB、Memcached、HBase、HyperTable、Flare、Tokyo Tyrant、CouchDB、ROMA和Cassandra等,根据各个NoSQL数据库的特性特点汇总为下表:

临时性键值存储 永久性键值存储 面向文档的数据库 面向列的数据库
Memcached Tokyo Tyrant MangoDB Cassandra
Redis Flare CouchDB HBase
ROMA HyperTable
Redis

Redis优缺点对比

优点:

1. 支持多种数据结构,如string(字符串)、list(双向链)、dict(hash表)、set(集合)、zset(排序set)、hyperloglog(基数估算);
2. 支持持久化操作,可以进行aof及rdb数据持久化到磁盘,从而进行数据备份或数据恢复等操作,较好的防止数据丢失的手段;
3. 支持通过Replication进行数据复制,通过master-slave机制,可以实时进行数据的同步复制,支持多级复制和增量复制,master-slave机制是Redis进行HA的重要手段;
4. 单线程请求,所有命令串行执行,并发情况下不需要考虑数据一致性问题;
5. 支持pub/sub消息订阅机制,可以用来进行消息订阅与通知;
6. 支持简单的事务需求,但业界使用场景很少,并不成熟。

缺点:

1. Redis只能使用单线程,性能受限于CPU性能,故单实例CPU最高才可能达到5-6wQPS每秒(取决于数据结构,数据大小以及服务器硬件性能,日常环境中QPS高峰大约在1-2w左右);
2. 支持简单的事务需求,但业界使用场景很少,并不成熟,既是优点也是缺点;
3. Redis在string类型上会消耗较多内存,可以使用dict(hash表)压缩存储以降低内存耗用。

Memcache优缺点对比

优点:

1. Memcached可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS(取决于key、value的字节大小以及服务器硬件性能,日常环境中QPS高峰大约在4-6w左右),适用于最大程度扛量;
2. 支持直接配置为session handle。

缺点:

1. 只支持简单的key/value数据结构,不像Redis可以支持丰富的数据类型;
2. 无法进行持久化,数据不能备份,只能用于缓存使用,且重启后数据全部丢失;
3. 无法进行数据同步,不能将MC中的数据迁移到其他MC实例中;
4. Memcached内存分配采用Slab Allocation机制管理内存,value大小分布差异较大时会造成内存利用率降低,并引发低利用率时依然出现踢出等问题,需要用户注重value设计。

MongoDB优缺点对比

优点:

1. 更高的写负载,MongoDB拥有更高的插入速度;
2. 处理很大的规模的单表,当数据表太大的时候可以很容易的分割表;
3. 高可用性,设置M-S不仅方便而且很快,MongoDB还可以快速、安全及自动化的实现节点(数据中心)故障转移;
4. 快速的查询,MongoDB支持二维空间索引,比如管道,因此可以快速及精确的从指定位置获取数据。MongoDB在启动后会将数据库中的数据以文件映射的方式加载到内存中。如果内存资源相当丰富的话,这将极大地提高数据库的查询速度;
5. 非结构化数据的爆发增长,增加列在有些情况下可能锁定整个数据库,或者增加负载从而导致性能下降,由于MongoDB的弱数据结构模式,添加1个新字段不会对旧表格有任何影响,整个过程会非常快速。

缺点:

1. 不支持事务;
2. MongoDB占用空间过大;
3. MongoDB没有成熟的维护工具。

Tokyo Tyrant特性

  • 持久性的键值存储;
  • 用来处理需要持久保存,高速处理的数据;
  • 具有非常快的处理速度;
  • 用于不需要定期清除的数据;
  • 使用一致性散列(Consistent Hashing)算法来分散数据。
  • 云服务器服务器,价格很低很低,值得看看
    ①真便宜:云服务器69元1年,203元3年(全网最低价)
    ②秒杀:腾讯云服务器秒杀99元/年起
    ③618:阿里云618服务器0.9折起(2020年)