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 4.x后支持。
- MongoDB占用空间过大 。
- MongoDB没有成熟的维护工具。
MongoDB应用场景:
- 适用于实时的插入、更新与查询的需求,并具备应用程序实时数据存储所需的复制及高度伸缩性;
- 非常适合文档化格式的存储及查询;
- 高伸缩性的场景:MongoDB 非常适合由数十或者数百台服务器组成的数据库。
- 适用于对性能的关注超过对功能的要求的场景。
2、 HBase
HBase 是 Apache Hadoop 中的一个子项目,属于 bigtable 的开源版本,所实现的语言为Java(故依赖Java SDK)。HBase 依托于 Hadoop 的 HDFS(分布式文件系统)作为最基本存储基础单元。
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的随机访问性能
HBase 优点:
- 存储容量大,一个表可以容纳上亿行,上百万列;
- 可通过版本进行检索,能搜到所需的历史版本数据;
- 负载高时,可通过简单的添加机器来实现水平切分扩展,跟Hadoop的无缝集成保障了其数据可靠性(HDFS)和海量数据分析的高性能(MapReduce);
- 在第3点的基础上可有效避免单点故障的发生。
HBase 缺点:
- 基于Java语言实现及Hadoop架构意味着其API更适用于Java项目;
- node开发环境下所需依赖项较多、配置麻烦(或不知如何配置,如持久化配置),缺乏文档;
- 占用内存很大,且鉴于建立在为批量分析而优化的HDFS上,导致读取性能不高;
- API相比其它 NoSql 的相对笨拙。
HBase 适用场景:
- bigtable类型的数据存储;
- 对数据有版本查询需求;
- 应对超大数据量要求扩展简单的需求。
3、Redis
Redis 是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。目前由VMware主持开发工作。