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特性
2024年云服务器租用优惠价格,11月最新: