5款主流NoSQL数据库全方位横评
转载自IT168:http://tech.it168.com/a2011/0715/1218/000001218808.shtml
【IT 168专稿】在前面的系列文章中简单评测了HandlerSocket、TTServer、MongoDB、Redis和HBase五款NoSQL产品,本文对评测结果做一下总结。
数据库评测回顾:
• 主流NoSQL数据库评测之HandlerSocket
• 主流NoSQL数据库评测之Tokyo Cabinet
• 主流NoSQL数据库评测之MongoDB
• 主流NoSQL数据库评测之Redis
• 主流NoSQL数据库评测之HBase
一、测试平台
本次评测并没有采用传统的关系型数据库测试常用的TPC-H标准,而是针对性的采用写入500万条100个字节的数据,然后随机读出500条记录的方法,来评测数据的存储和读取效率,客户端采用PHP写的程序,接口使用了不同的第三方类库,使用Apache ab工具进行并发测试。
NoSQL所在服务器配置如下:
CPU为Xeon 2.80GHz *4
内存为4G
硬盘为一块400G SATA盘
操作系统为64位CentOS 5.3版本
二、数据读写效率
从图中可见HandlerSocket、TTServer(Table类型)和Redis的读取效率很高,在配置不高的测试环境中,能达到2.5万以上QPS,TTServer(BTree类型)、MongoDB和Redis写效率较高,能达到6千以上QPS。
综合来看,Redis的读写效率都很高,这是因为它的大部分操作都在内存中完成,只是定期刷新数据到磁盘。MongoDB的读写效率比较均衡,HBase在存取效率上的表现不高。HandlerSocket读取效率很高,但是写入偏慢,这是因为写入完全是利用Innodb存储引擎的机制,利用传统关系型数据库的日志和存储机制保障降低在异常情况下丢失数据的概率。
可见MongoDB占用内存较多,这是因为其内存是操作系统管理的,可能会使用较多的系统可用内存来缓存数据。Redis使用很少,和实际数据的容量大小相当。
四、数据文件大小
可见MongoDB产生的数据文件很大,接近4G,这是由其预分配存储空间的实现机制决定的。Redis和TTServer(BTree类型)的数据文件大小都和500条100字节数据的容量大小接近。
五、比较结论
由于NoSQL的产品设计思路和实现方式和传统的关系型数据库不同,不同的NoSQL产品有其自身侧重的方向,比如HandlerSocket、TTserver和Redis侧重Key-Value的高效读写效率,MongoDB侧重文档型的数据存储结构,HBase则是需要存储海量数据的BigTable实现。因此简单的横向对比意义不大,我们更重要的是要深刻了解我们的应用场景,在此基础上尽量选择合适的并且是自身比较熟悉的NoSQL产品,在这技术发展日新月异的时代,新的产品和技术不断涌现,我们需要不断的权衡取舍,以能解决我们工作中的实际问题为出发点来做出选型,而不是盲目跟风,为了尝试新技术而采用新技术的做法是不可取的。只有我们有能力驾驭了新技术,新技术才能真正的为我所有,从而为产品创造价值。