Gartner分析师Merv Adrian在Twitter上RT了一条关于NoSQL数据库评选的消息,他认为这就像是在对比你更喜欢苹果、鸡尾酒还是西兰花,它们都有不同的应用场景,对比NoSQL产品是没有意义的。比如MongoDB和Cassandra就没有什么可比性,它们的共同点只是都叫做NoSQL数据库而已,它们的应用场景非常不同。
下面还是根据学习,对现在比较热门的MangoDB和Memcached以及Redis做个简单的学习:
MangoDB是(document database, 硬盘型)
a. 基于磁盘的数据库,只是缓存热点数据在内存中。
b. 文档型的非关系型数据库,
优势是查询功能强大,可存储海量数据。
c. 可替换MySQL等关系型数据库;
在内存足够的情况下,读写性能不错,可省去Cache这一层
Memcached和Redis是(key value store, 内存型)
a.内存型数据库,数据保存在内存中,通过TCP直接存取; 或者说是全内存Cache。
优势是速度快,并发高,缺点是数据类型有限,查询功能不强,一般做缓存。
b. Key Value Store
c. 全内存
Memcached vs Redis
a. 都是Key Vale, Memory Cache
b. Memecahced是 multiple-thread; 适合多核CPU的应用。
Redis是 single-thread.
如果再多数据结构基础上支持多线程,加锁可能是个问题(待深入学习验证)。
c. Redis具有持久化机制,可以定期将内存的数据持久化到硬盘上
d. Redis支持的数据类型更多
e. Redis 具备binlog功能,将所有操作写入日志,以便redis出现故障时,可通过binlog进行恢复。
f. Redis支持Virtual Memory,可限定内存大小,当数据超出阀值,就通过类似LRU的算法将最不常用的数据保存到硬盘的页面问题中。