in memory key-value store,同时提供了更加丰富的数据结构和运算的能力;真正基于磁盘的key-value storage, 模型单一简单,数据量不受限于内存大小,数据落盘高可靠;mongodb 最新引人的莫过于提供了sql接口,是目前nosql里最像mysql的,只是没有ACID的特性等。
一、目前哪些NoSQL数据库的特点
1. In-Memory KV Store : Redis
in memory key-value store,同时提供了更加丰富的数据结构和运算的能力,成功用法是替代memcached,通过checkpoint和commit log提供了快速的宕机恢复,同时支持replication提供读可扩展和高可用。
2. Disk-Based KV Store: Leveldb
真正基于磁盘的key-value storage, 模型单一简单,数据量不受限于内存大小,数据落盘高可靠,Google的几位大神出品的精品,LSM模型天然写优化,顺序写盘的方式对于新硬件ssd再适合不过了,不足是仅提供了一个库,需要自己封装server端。
3. Document Store: Mongodb
分布式nosql,具备了区别mysql的最大亮点:可扩展性。mongodb 最新引人的莫过于提供了sql接口,是目前nosql里最像mysql的,只是没有ACID的特性,发展很快,支持了索引等特性,上手容易,对于数据量远超内存限制的场景来说,还需要慎重。
4. Column Table Store: HBase
这个富二代似乎不用赘述了,最大的优势是开源,对于普通的scan和基于行的get等基本查询,性能完全不是问题,只是只提供裸的api,易用性上是短板,可扩展性方面是较早的,其次坐上了Hadoop的快车,社区发展很快,各种基于其上的开源产品不少,来解决诸如join、聚集运算等复杂查询。
延伸阅读:
二、comdb/comdbfast数据库
Comdb是一个独立的持久数据存储模块,它的初衷是设计一个具有快速查询能力的简单关系存储模型,它将数据以KEY<->DATA的形式存储在系统中,并提供由KEY到DATA的单向快速查询。
comdb对外实现的功能
- 按单个key值实现data的获取/添加/删除/修改
- 按多个key值实现data的批量的获取/添加/删除/修改
- 与其他模块支持长短连接
- 采用非对等线程模式进行数据的更新和查询
- 对于线性增长的key值,支持多机扩展功能(comdbtrans)
- 支持对数据的除重处理(comdb-elim)
comdb作为一个通用的存储模块,为满足不同种需求的需要,在设计上做了多种优化和升级,以下版本已经完成设计,在以后的一段日子里,会陆续发布:
- 支持64位key字段的comdb:采用hash_map实现的comdb,支持64位的key值查询.单个comdb支持亿级数据需要2G内存左右,缺点是暂时没有找到有效的数据组织方式,进行线性的扩容.
- 支持一次读写的comdb:在大数据量随机读写的应用中,一次读取与两次读取有较大的差异,此版本中,comdb对数据进行一次读取(普通comdb采用2次读取的方式)
- 支持压缩的功能选项:在文本数据的存储中,压缩处理是个不错的选择,降低存储成本的前提下,性能依然有50%的提高(要是所有数据都能压缩就爽了:))
- 支持DIRECT_IO读数据选项:在大数据量随机读取的应用中,采用DIRECT_IO进行数据读取,可以有效的提高读取效率。采用此选项建议前端采用cache机制。