NoSql数据库

Nosql数据库在面对大数据时代快速增加的数据规模和复杂的数据模型,凭借易扩展、大数据量、高性能以及灵活的数据模型在数据库领域站稳脚跟javascript

nosql种类 基本分为 键值存储数据库 文档型数据库 列存储数据库 图形数据库 Redis MongoDB Hbase 不太了解 详细总结 Hbase HBase 是Apache Hadoop 中的一个子项目,属于bigtable 的开源版本,所实现的语言为Java(故依赖 Java SDK)。HBase 依托于 Hadoop 的 HDFS(分布式文件系统)做为最基本存储基础单元。java

Hbase特色 所用语言: Java 特色:支持数十亿行X上百万列 使用许可: Apache 协议:HTTP/REST (支持 Thrift,见编注4) 在 BigTable以后建模 采用分布式架构 Map/reduce 对实时查询进行优化 高性能 Thrift网关 经过在server端扫描及过滤实现对查询操做预判 支持 XML, Protobuf, 和binary的HTTP Cascading, hive, and pig source and sink modules 基于 Jruby( JIRB)的shell 对配置改变和较小的升级都会从新回滚 不会出现单点故障 堪比MySQL的随机访问性能node

HBase 优势 存储容量大,一个表能够容纳上亿行,上百万列; 可经过版本进行检索,能搜到所需的历史版本数据; 负载高时,可经过简单的添加机器来实现水平切分扩展,跟Hadoop的无缝集成保障了其数据可靠性(HDFS)和海量数据分析的高性能(MapReduce); 在第3点的基础上可有效避免单点故障的发生。mysql

HBase 缺点 基于Java语言实现及Hadoop架构意味着其API更适用于Java项目; node开发环境下所需依赖项较多、配置麻烦(或不知如何配置,如持久化配置),缺少文档; 占用内存很大,且鉴于创建在为批量分析而优化的HDFS上,致使读取性能不高; API相比其它NoSql 的相对笨拙redis

HBase 适用场景 bigtable类型的数据存储; 对数据有版本查询需求; 应对超大数据量要求扩展简单的需求。sql

Redis Redis 是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。目前由VMware主持开发工做。shell

Redis 特色 所用语言:C/C++ 特色:运行异常快 使用许可: BSD 协议:类 Telnet 有硬盘存储支持的内存数据库, 能够将数据交换到硬盘 Master-slave复制 虽然采用简单数据或以键值索引的哈希表,但也支持复杂操做,例如 ZREVRANGEBYSCORE。 INCR & co (适合计算极限值或统计数据) 支持 sets(同时也支持 union/diff/inter) 支持列表(同时也支持队列;阻塞式 pop操做) 支持哈希表(带有多个域的对象) 支持排序 sets(高得分表,适用于范围查询) Redis支持事务 支持将数据设置成过时数据(相似快速缓冲区设计) Pub/Sub容许用户实现消息机制数据库

Redis 优点 很是丰富的数据结构; Redis提供了事务的功能,能够保证一串 命令的原子性,中间不会被任何操做打断; 数据存在内存中,读写很是的高速,能够达到10w/s的频率。安全

Redis 缺点 Redis3.0后才出来官方的集群方案,但仍存在一些架构上的问题; 持久化功能体验不佳——经过快照方法实现的话,须要每隔一段时间将整个数据库的数据写到磁盘上,代价很是高;而aof方法只追踪变化的数据,相似于mysql的binlog方法,但追加log可能过大,同时全部操做均要从新执行一遍,恢复速度慢; 因为是内存数据库,因此,单台机器,存储的数据量,跟机器自己的内存大小。虽然redis自己有key过时策略,可是仍是须要提早预估和节约内存。若是内存增加过快,须要按期删除数据。ruby

Redis 应用场景 最佳应用场景:适用于数据变化快且数据库大小可碰见(适合内存容量)的应用程序。 例如:微博、数据分析、实时数据搜集、实时通信等。

MongoDB MongoDB 是一个高性能,开源,无模式的文档型数据库,开发语言是C++。它在许多场景下可用于替代统的关系型数据库或键/值存储方式。

MongoDB特色 所用语言:C++ 特色:保留了SQL一些友好的特性(查询,索引)。 使用许可: AGPL(发起者: Apache) 协议: Custom, binary( BSON) Master/slave复制(支持自动错误恢复,使用 sets 复制) 内建分片机制 支持 javascript表达式查询 可在服务器端执行任意的 javascript函数 update-in-place支持比CouchDB更好 在数据存储时采用内存到文件映射 对性能的关注超过对功能的要求 建议最好打开日志功能(参数 --journal) 在32位操做系统上,数据库大小限制在约2.5Gb 空数据库大约占 192Mb 采用 GridFS存储大数据或元数据(不是真正的文件系统)

MongoDB优势: 更高的写负载,MongoDB拥有更高的插入速度。 处理很大的规模的单表,当数据表太大的时候能够很容易的分割表。 高可用性,设置M-S不只方便并且很快,MongoDB还能够快速、安全及自动化的实现节点 (数据中心)故障转移。 快速的查询,MongoDB支持二维空间索引,好比管道,所以能够快速及精确的从指定位置 获取数据。MongoDB在启动后会将数据库中的数据以文件映射的方式加载到内存中。若是内 存资源至关丰富的话,这将极大地提升数据库的查询速度。 非结构化数据的爆发增加,增长列在有些状况下可能锁定整个数据库,或者增长负载从而 致使性能降低,因为MongoDB的弱数据结构模式,添加1个新字段不会对旧表格有任何影响, 整个过程会很是快速。

MongoDB缺点: 不支持事务。 MongoDB占用空间过大 。 MongoDB没有成熟的维护工具。

MongoDB应用场景 适用于实时的插入、更新与查询的需求,并具有应用程序实时数据存储所需的复制及高度伸缩性; 很是适合文档化格式的存储及查询; 高伸缩性的场景:MongoDB 很是适合由数十或者数百台服务器组成的数据库。 对性能的关注超过对功能的要求。

相关文章
相关标签/搜索