主流NoSQL数据库的分析与选择

一由于新的数据项目的数据量级较大,所以考虑将mysql替换更高性能的数据库。java

介绍一下NoSQL(不单单是关系型数据库)的不一样种类和其擅长的业务。mysql

NoSQL的一个比较明显的特色是适用于现代大数据的存储.(支持hadoop,保证了数据量级的同时对读写性能有必定要求)sql

 

目前市面上主流的开源NoSQL有如下几类:数据库

MongoDB, Cassandra, CouchDB, Hypertable, Redis, Riak, Neo4j, HBASE, Couchbase, MemcacheDB, RevenDB and Voldemort缓存

以上均免费且开源。做者选了几种国内比较通用的进行分析。网络

NoSQL 优势  缺点   适用场景与备注  应用场景
 Hbase  

支持数十亿行X上百万列
堪比MySQL的随机访问性能数据结构

维护开发复杂,须要手工MapReduce   

1.简单数据写入(如“消息类”应用)
2.海量、结构简单的分布,并发数据的查询(如“详单类”应用)
适用于偏好BigTable,而且须要对大数据进行随机、实时访问的场合并发

 

1.Facebook的消息类应用,包括Messages、Chats、Emails和SMS系统
2.淘宝的WEB版阿里旺旺,后台是Hbas
3.小米的米聊用的也是Hbase
4.移动某省公司的手机详单查询系统nosql

 Mangodb  功能丰富,数据类型灵活,各个性能特性都比较平衡  性能在同类中比较低  

1.二级索引,支持相比于HBase更复杂的集合查找
2.处理文档型数据更为直接。支持复杂的数据结构
适用于须要动态查询支持;须要使用索引而不是 map/reduce功能;须要对大数据库有性能要求oop

 例如:你本打算采用 MySQL或 PostgreSQL,但由于它们自己自带的预约义栏让你望而却步。
 Redis 速度快,简单,容易维护,支持多种数据结构  数据可靠性无保障,功能较少。  

1.处理数据量小于以上两种的极高速读写
2.支持集合set,有序集合zset和哈希hash格式
适用于数据变化快且数据库大小可碰见(适合内存容量)的应用程序

 

1.例如:股票价格、数据分析、实时数据搜集、实时通信。
2.适用于高速缓存,存放Hadoop或Spark的分析结果,或在部分场合能够对关系数据库起到很好的补充做用

 Cassandra  对大型表格和Dynamo支持得最好,高写入性能  臃肿和复杂,java配置异常频出  适用于写入较多于读取操做(记录日志).快速开发应用程序,大量写入、统计和分析,须要扩展的部署结构  例如:银行业,金融业(虽然对于金融交易不是必须的,但这些产业对数据库的要求会比它们更大)写比读更快,因此一个天然的特性就是实时数据分Neo4j析
 Neo4j  图形类数据  非图形数据不适用  适用于图形一类数据。这是Neo4j与其余nosql数据库的最显著区别  例如:社会关系,公共交通网络,地图及网络拓谱

 

 

 

综合以上特征,若是想要对用户出行的数据进行统计,不一样用户单日的行程数目与充电次数均不相同,mangodb的不一样结构的文件存储更适用于当前场景。

 

参考文章:

https://blog.csdn.net/renyi_blog/article/details/23285977

https://bbs.csdn.net/topics/390826073

https://blog.csdn.net/aikumei/article/details/77671891

相关文章
相关标签/搜索