NoSQL

NoSQL,第1张

目前大家基本认同将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存储大数据或元数据(不是真正的文件系统)

[](()2.MongoDB优点
  1. 更高的写负载,MongoDB拥有更高的插入速度。

  2. 处理很大的规模的单表,当数据表太大的时候可以很容易的分割表。

  3. 高可用性,设置M-S不仅方便而且很快,MongoDB还可以快速、安全及自动化的实现节点 (数据中心)故障转移。

  4. 快速的查询,MongoDB支持二维空间索引,比如管道,因此可以快速及精确的从指定位置 获取数据。MongoDB在启动后会将数据库中的数据以文件映射的方式加载到内存中。如果内 存资源相当丰富的话,这将极大地提高数据库的查询速度。

  5. 非结构化数据的爆发增长,增加列在有些情况下可能锁定整个数据库,或者增加负载从而 导致性能下降,由于MongoDB的弱数据结构模式,添加1个新字段不会对旧表格有任何影响, 整个过程会非常快速。

[](()3.MongoDB缺点:
  1. 不支持事务。

  2. MongoDB占用空间过大 。

  3. MongoDB没有成熟的维护工具。

[](()4.MongoDB应用场景
  1. 适用于实时的插入、更新与查询的需求,并具备应用程序实时数据存储所需的复制及高度伸缩性;

  2. 非常适合文档化格式的存储及查询;

  3. 高伸缩性的场景:MongoDB 非常适合由数十或者数百台服务器组成的数据库。

  4. 对性能的关注超过对功能的要求。

[](()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的随机访问性能

[](()2. HBase 优点
  1. 存储容量大,一个表可以容纳上亿行,上百万列;

  2. 可通过版本进行检索,能搜到所需的历史版本数据;

  3. 负载高时,可通过简单的添加机器来实现水平切分扩展,跟Hadoop的无缝集成保障了其数据可靠性(HDFS)和海量数据分析的高性能(MapReduce);

  4. 在第3点的基础上可有效避免单点故障的发生。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/870190.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存