目前大家基本认同将NoSQL数据库分为四大类:键值存储数据库,文档型数据库,列存储数据库和图形数据库,其中每一种类型的数据库都能够解决关系型数据不能解决的问题。在实际应用中,NoSQL数据库的分类界限其实没有那么明显,往往会是多种类型的组合体。
| 数据库类型 | 说明 | 代表 |
| — | :-- | :-- |
| 键值存储数据 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 | 这一类数据库主要会使用到一个哈希表,
这个表中有一个特定的键和一个指针指向特定的数据 | redis |
| 文档型数据库 | 文档型数据库可 以看作是键值数据库的升级版,
允许之间嵌套键值。
而且文档型数据库比键值数据库的查询效率更高 | MongoDb |
| 列存储数据库 | 用来应对分布式存储的海量数据。键仍然存在,
但是它们的特点是指向了多个列 | HBase |
| 图形数据库 | 图形结构的数据库同其他行列以及刚性结构的SQL
数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上 | Neo4J, InfoGrid,
Infinite Graph. |
[](()MongoDB
MongoDB 是一个高性能,开源,无模式的文档型数据库,开发语言是C++。它在许多场景下可用于替代统的关系型数据库或键/值存储方式.
[](()1.MongoDB特点-
所用语言:C++
-
特点:保留了SQL一些友好的特性(查询,索引)。
-
使用许可: AGPL(发起者: Apache)
-
协议: Custom, binary( BSON)
-
Master/slave复制(支持自动错误恢复,使用 sets 复制)
-
内建分片机制
-
支持 javascript表达式查询
-
可在服务器端执行任意的 javascript函数
-
update-in-place支持比CouchDB更好
-
在数据存储时采用内存到文件映射
-
对性能的关注超过对功能的要求
-
建议最好打开日志功能(参数 --journal)
-
在32位 *** 作系统上,数据库大小限制在约2.5Gb
-
空数据库大约占 192Mb
-
采用 GridFS存储大数据或元数据(不是真正的文件系统)
-
更高的写负载,MongoDB拥有更高的插入速度。
-
处理很大的规模的单表,当数据表太大的时候可以很容易的分割表。
-
高可用性,设置M-S不仅方便而且很快,MongoDB还可以快速、安全及自动化的实现节点 (数据中心)故障转移。
-
快速的查询,MongoDB支持二维空间索引,比如管道,因此可以快速及精确的从指定位置 获取数据。MongoDB在启动后会将数据库中的数据以文件映射的方式加载到内存中。如果内 存资源相当丰富的话,这将极大地提高数据库的查询速度。
-
非结构化数据的爆发增长,增加列在有些情况下可能锁定整个数据库,或者增加负载从而 导致性能下降,由于MongoDB的弱数据结构模式,添加1个新字段不会对旧表格有任何影响, 整个过程会非常快速。
-
不支持事务。
-
MongoDB占用空间过大 。
-
MongoDB没有成熟的维护工具。
-
适用于实时的插入、更新与查询的需求,并具备应用程序实时数据存储所需的复制及高度伸缩性;
-
非常适合文档化格式的存储及查询;
-
高伸缩性的场景:MongoDB 非常适合由数十或者数百台服务器组成的数据库。
-
对性能的关注超过对功能的要求。
[](()HBase
HBase 是 Apache Hadoop 中的一个子项目,属于 bigtable 的开源版本,所实现的语言为Java(故依赖 Java SDK)。HBase 依托于 Hadoop 的 HDFS(分布式文件系统)作为最基本存储基础单元。
[](()1.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的随机访问性能
-
存储容量大,一个表可以容纳上亿行,上百万列;
-
可通过版本进行检索,能搜到所需的历史版本数据;
-
负载高时,可通过简单的添加机器来实现水平切分扩展,跟Hadoop的无缝集成保障了其数据可靠性(HDFS)和海量数据分析的高性能(MapReduce);
-
在第3点的基础上可有效避免单点故障的发生。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)