为您推荐:
精华内容
最热下载
问答
  • 5星
    199KB m0_52957036 2020-10-29 08:29:00
  • 5星
    1.09MB m0_52957036 2020-03-16 21:05:01
  • 62KB m0_52957036 2020-05-27 12:08:59
  • 4星
    78.36MB li53133 2017-12-22 01:19:45
  • 129KB ttczz 2019-12-30 19:29:03
  • 大数据技术原理与应用——NoSQL数据库 5.1 NoSQL 简介 特点 1.灵活的可扩展性 传统的关系型数据库由于自身设计机理的原因,通常很难实现“横向扩展”,在面对数据库负载大规模增加时,往往需要通过升级硬件来实现...

    大数据技术原理与应用——NoSQL数据库

    在这里插入图片描述

    5.1 NoSQL 简介

    特点

    1.灵活的可扩展性
    传统的关系型数据库由于自身设计机理的原因,通常很难实现“横向扩展”,在面对数据库负载大规模增加时,往往需要通过升级硬件来实现“纵向扩展”。但是,当前的计算机硬件制造工艺已经达到一个限度,性能提升的速度开始趋缓,已经远远赶不上数据库系统负载的增加速度,而且配置高端的高性能服务器价格不菲,因此寄希望于通过“纵向扩展”满足实际业务需求,已经变得越来越不现实。相反,“横向扩展”仅需要非常普通廉价的标准化刀片服务器,不仅具有较高的性价比,也提供了理论上近乎无限的扩展空间。NoSQL 数据库在设计之初就是为了满足“横向扩展”的需求,因此天生具备良好的水平扩展能力。
    2.灵活的数据模型
    关系模型是关系数据库的基石,它以完备的关系代数理论为基础,具有规范的定义,遵守各种严格的约束条件。这种做法虽然保证了业务系统对数据一致性的需求,但是过于死板的数据模型,也意味着无法满足各种新兴的业务需求。相反,NoSQL 数据库天生就旨在摆脱关系数据库的各种束缚条件,摈弃了流行多年的关系数据模型,转而采用键/值、列族等非关系模型,允许在一个数据元素里存储不同类型的数据。
    3.与云计算紧密融合
    云计算具有很好的水平扩展能力,可以根据资源使用情况进行自由伸缩,各种资源可以动态加入或退出,NoSQL 数据库可以凭借自身良好的横向扩展能力,充分自由利用云计算基础设施,很好地融入到云计算环境中,构建基于 NoSQL 的云数据库服务。

    5.2 NoSQL 兴起的原因

    在这里插入图片描述

    5.2.1 关系数据库无法满足 Web 2.0 的需求

    在这里插入图片描述

    传统的关系数据库性能上缺陷

    无法满足海量数据的管理需求
    到了 Web 2.0 时代以后,数据的产生速度非常快
    在这里插入图片描述
    无法满足高并发的需求
    在 Web 1.0 时代,通常采用动态页面静态化的技术,事先访问数据库生成静态页面供浏览者访问,从而保证在大规模用户访问时,也能够获得较好的实时响应性能。但是,在 Web 2.0 时代,各种用户都在不断地发生更新,购物记录、搜索记录、微博粉丝数等信息都需要实时更新,动态页面静态化技术基本没有用武之地,所有信息都需要动态实时生成,这就会导致高并发的数据库访问,可能产生每秒上万次的读写请求,对于很多关系数据库而言,这都是“难以承受之重”。
    在这里插入图片描述
    无法满足高扩展性和高可用性的需求
    在 Web 2.0 时代,不知名的网站可能一夜爆红,用户迅速增加,已经广为人知的网站也可能因为发布了热门吸引眼球的信息,引来大量用户在短时间内围绕该信息大量交流互动,这些都会导致对数据库读写负荷的急剧增加,需要数据库能够在短时间内迅速提升性能应对突发需求。但是,遗憾的是,关系数据库通常是难以水平扩展的,没有办法像网页服务器和应用服务器那样简单地通过添加更多的硬件和服务节点来扩展性能和负载能力。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    5.2.2 关系数据库的关键特性在 Web 2.0 时代成为“鸡肋”

    在这里插入图片描述
    在这里插入图片描述

    5.3 NoSQL 与关系数据库的比较

    一、在数据库原理方面

    在这里插入图片描述

    二、在数据规模方面

    在这里插入图片描述

    三、在数据库模式方面

    在这里插入图片描述

    四、在查询效率方面

    在这里插入图片描述

    五、在事务一致性方面

    在这里插入图片描述

    六、在数据完整性方面

    在这里插入图片描述

    七、在可扩展性方面

    在这里插入图片描述

    八、在可用性方面

    在这里插入图片描述

    九、在标准化方面

    在这里插入图片描述

    十、在技术支持方面

    在这里插入图片描述

    十一、在可维护方面

    在这里插入图片描述

    关系数据库的优势

    1.具有非常完备的关系代数理论作为基础
    2.有严格的标准
    3.支持事务一致性
    4.可以借助索引机制实现非常高效的查询

    关系数据库的劣势

    1.可扩展性非常差
    2.不具备水平可扩展性,无法较好支持海量数据存储
    3.数据模型定义严格,无法较好满足新型 Web 2.0 应用需求

    NoSQL 数据库的优势

    1.支持超大规模的数据存储
    2.数据模型非常灵活

    NoSQL 数据库的劣势

    1.缺乏底层基础理论做支撑
    2.很多 NoSQL 数据库都不支持事务的强一致性

    两种数据库的应用场景

    在这里插入图片描述
    实际上,在企业应用当中,有些企业都市采用混合应用架构,一个企业中可以同时用两种不同类型的数据库产品,如亚马逊公司,其内部就使用不同的数据库去支持电子商务的应用,比如,对购物篮,临时性的数据一般采用键值存储,键值存储对简单的数据模型效率是非常高的;而对于产品订单信息,一般会把它放在关系数据库当中,因为这属于企业的关键业务应用,是绝对不能丢失的;而当企业需要做分析时,它会把很多历史的订单信息放到现在比较流行的叫文档数据库 MongoDB 中。
    对于一个企业来讲,实际上都是成混合型架构,在这么多的产品当中选择一些能够满足他们不同需求的产品,形成组合型应用。
    在这里插入图片描述

    5.4 NoSQL 的四大类型

    在这里插入图片描述
    在这里插入图片描述

    5.4.1 键值数据库

    在这里插入图片描述
    键值数据库成为理想的缓冲层解决方案
    我们很多基于外部的开发,外面浏览器去访问我们底层的网页的时候,网页需要去访问底层数据库,你若这样一次又一次地去查询,直接去访问底层的磁盘数据库的时候,性能是很低的,所以,一般企业在应用的时候,都会在底层的数据库之上构建一个缓冲层,缓冲层一般是用键值数据库去做缓冲的。
    在这里插入图片描述

    5.4.2 列族数据库

    在这里插入图片描述

    5.4.3 文档数据库

    是最像关系数据库的,是介于关系数据库和 NoSQL 数据库之间的一种数据库,一般也会把它归到 NoSQL 数据库。

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    5.4.4 图数据库

    在这里插入图片描述
    在这里插入图片描述

    5.5 NoSQL 的三大基石

    5.5.1 CAP

    在这里插入图片描述
    一个分布式系统不可能同时满足一致性、可用性和分区容忍性这三个需求,最多只能同时满足其中两个,正所谓“鱼和熊掌不可兼得”
    在这里插入图片描述
    下面给出牺牲一致性来换取可用性的实例。假设分布式环境下存在两个节点 M1 和 M2 ,一个数据 V 的两个副本 V1 和 V2 分别保存在 M1 和 M2 上,两个副本的值都是 val0,现在假设有两个进程 P1 和 P2 分别对两个副本进行操作,进程 P1 向节点 M1 中的副本 V1 写入新值 val1,进程 P2 从节点 M2 中读取 V 的副本 V2 的值。
    当整个过程完全正常执行时,会按照以下过程进行。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    (1)进程 P1 向节点 M1 的副本 V1 写入新值 val1。
    (2)节点 M1 向节点 M2 发送消息 MSG 以更新副本 V2 值,把副本 V2 值更新为 val1。
    (3)进程 P2 在节点 M2 中读取副本 V2 的新值 val1。
    但是当网络发生故障时,可能导致节点 M1 中的消息 MSG 无法发送到节点 M2,这时,进程 P2 在节点 M2 中读取到的副本 V2 的值仍然是旧值 val0。因此产生了不一致性的问题。
    从这个实例可以看出,当我们希望两个进程 P1 和 P2 都实现高可用性,也就是能够快速访问到需要的数据时,就会牺牲数据一致性。

    在面对 CAP 问题有以下几种选择
    在这里插入图片描述
    在这里插入图片描述
    (1)CA。也就是强调一致性(C)和可用性(A),放弃分区容忍性(P),最简单的做法是把所有与事务相关地内容放到同一台机器上。很显然,这种做法会严重影响系统的可扩展性。传统的关系数据库(MySQL、SQL Server 和 PostgreSQL)都采用了这种设计原则,因此可扩展性都比较差。
    (2)CP。也就是强调一致性(C)和分区容忍性(P),放弃可用性(A),当出现网络分区的情况时,受影响的服务器需要等待数据一致,因此在等待期间就无法对外提供服务。Neo4J、BigTable 和 HBase 等 NoSQL 数据库都采用了 CP 设计原则。
    (3)AP。也就是强调可用性(A)和分区容忍性(P),放弃一致性(C),允许系统返回不一致的数据。这对于许多 Web 2.0 网站而言是可行的,这些网站的用户首先关注的是网站服务是否可用,当用户需要发布一条微博时,必须能够立即发布,否则,用户就会放弃使用,但是这条微博发布后什么时候能够被其他用户读取到,则不是非常重要的问题,不会影响到用户体验。因此,对于 Web 2.0 网站而言,可用性与分区容忍性优先级要高于数据一致性,网站一般会尽量朝着 AP 的方向设计。当然,在采用 AP 设计时,也可以不完全放弃一致性,转而采用最终一致性。Dynamo、Riak、CouchDB、Cassandrd 等 NoSQL 数据库就采用了 AP 设计原则。

    5.5.2 BASE

    在这里插入图片描述
    在这里插入图片描述

    5.5.3 最终一致性

    根据更新数据后各进程访问到数据的时间和方式的不同,可以区分为
    在这里插入图片描述
    在这里插入图片描述
    如何实现各种类型的一致性
    假设有一个分布式系统
    为了实现它的可靠性,要对数据进行冗余存储
    在这里插入图片描述
    在这里插入图片描述
    N=2:一主一从,一个数据有一模一样的两份复制
    W=2:表示同步复制,当数据写到主服务器中,只有它被更新到从服务器,写才能成功返回(必须要写入这两个副本,才能成功返回)
    R=1:只要读取其中一个就能马上返回
    在这里插入图片描述
    R=1 指从其中任何一个读完就走,这时就可能会出现不一致,因为在写操作时,写完主服务器就走掉了,如果这个时候更新没有传到从服务器,马上去读从服务器,读到的数据肯定是旧的,就不一致了。
    在这里插入图片描述
    对于 HBase 数据库来讲
    HBase 是借助底层的 HDFS 来实现其数据冗余备份
    HDFS 采用强一致性,在数据未完全同步到 N 个节点前,写操作不会成功返回也就是说当 W=N,而读操作只需要读到一个值即可也就是说 R=1

    5.6 从 NoSQL 到 NewSQL 数据库

    数据库的发展
    在这里插入图片描述
    应用场景
    在这里插入图片描述
    NewSQL 数据库
    NewSQL 同时具备 OldSQL 数据库和 NoSQL 数据库各自的优点
    在这里插入图片描述
    在这里插入图片描述

    文档数据库 MongoDB

    MongoDB 简介
    在这里插入图片描述
    在这里插入图片描述
    MongoDB特点
    在这里插入图片描述
    MongoDB 的概念解析——概念术语
    在这里插入图片描述
    实例
    在这里插入图片描述
    关系型数据库设计实例
    在这里插入图片描述
    实例
    关系数据库其中一条记录在文档数据库 MongoDB 中存储方式如下
    在这里插入图片描述
    数据库
    在这里插入图片描述
    文档
    在这里插入图片描述
    一个简单的文档例子如下
    在这里插入图片描述
    RDBMS 与 MongoDB 对应的术语
    在这里插入图片描述
    在这里插入图片描述
    集合
    在这里插入图片描述
    安装 MongoDB
    在这里插入图片描述
    使用 MongoDB shell 访问 MongoDB
    在这里插入图片描述
    使用 Java 程序访问 MongoDB
    (1)环境配置
    在这里插入图片描述
    (2)连接数据库
    在这里插入图片描述
    (3)创建集合
    在这里插入图片描述
    (4)插入文档
    在这里插入图片描述

    展开全文
    linjiayina 2020-04-13 18:18:55
  • NoSQL=Not Only SQL NoSQL数据库类型: 从NoSQL到NewSQL

    NoSQL=Not Only SQL

    NoSQL数据库类型:

    从NoSQL到NewSQL

     

    展开全文
    skyejy 2019-05-18 11:35:39
  • NoSql 数据库NoSql 简介NoSql 兴起的原因关系数据库无法满足 Web 2.0 的需求关系数据库的关键特性在 Web 2.0 时代优势不再明显Nosql 关系数据库的比较NoSql 的四大类型键值数据库列族数据库文档数据库数据库...

    NoSql 简介

    NoSql 是一种不同于关系数据库的数据库管理系统设计方式,是对非关系型数据库的统称。它所采用的数据模型并非关系数据库的关系模型,而是类似键/值、列族、文档等非关系模型。

    当应用场合需要简单的数据模型、灵活性的 IT 系统、较高的数据库性能和较低的数据库一致性时,NoSql 数据库是一个很好的选择。NoSql 数据库通常有以下3个特点:

    1. 灵活的可扩展性。传统的关系型数据库由于自身设计机理的原因,通常很难实现“横向扩展”,在面对数据库负载大规模增加时,往往只能选择开销很大的“纵向扩展”。但是,对于 NoSql 数据库,“横向扩展”仅需要非常廉价的标准化刀片服务器,具有很高的性价比。NoSql 数据库在设计之初就是为了满足“横向扩展”的需求,因此天生具备良好的水平扩展能力。
    2. 灵活的数据模型。NoSql 数据库天生就旨在摆脱关系数据库的各种束缚条件,摒弃了流行多年的关系数据模型,转而采用键/值、列族等非关系模型,允许在一个数据元素中存储不同类型的数据。
    3. 与云计算紧密融合。云计算具有很好的水平扩展能力,可以根据资源使用情况进行自由伸缩,各种资源可以动态加入或退出,NoSql 数据库可以凭借自身良好的横向扩展能力,充分自由利用云计算基础设施,很好地融入到云计算环境中,构建基于 NoSql 的云数据库服务。

    NoSql 兴起的原因

    关系数据库无法满足 Web 2.0 的需求

    1. 无法满足海量数据的管理需求
    2. 无法满足数据高并发的需求。Web 2.0 时代,各种用户都在不断地发生更新,购物记录、搜索记录、微博粉丝等信息都需要实时更新,动态页面静态化技术基本没有用武之地,所有信息都需要动态实时生成,这就会导致高并发的数据库访问,每秒产生大量的读写请求,对于很多关系数据库而言,难以承受其重。
    3. 无法满足高可扩展性和高可用性的需求

    关系数据库的关键特性在 Web 2.0 时代优势不再明显

    1. Web 2.0 网站系统通常不要求严格的数据库事务
    2. Web 2.0 并不要求严格的读写实时性
    3. Web 2.0 通常不包含大量复杂的 SQL 查询

    Nosql 与关系数据库的比较

    比较标准关系数据库NoSql备注
    数据库原理完全支持部分支持关系数据库有关系代数理论作为基础,但是 NoSql 没有统一的理论基础
    数据规模超大关系数据库很难实现横向扩展,NoSql 可以很容易通过添加更多设备支持更大规模的数据
    数据库模型固定灵活关系数据库需要定义数据库模式,严格遵守数据定义和相关约束条件;NoSql 不存在数据库模式,可以灵活定义并存储各种不同类型的数据
    查询效率实现高效的简单查询,但是复杂查询的效率不尽人意关系数据库借助索引机制可以实现快速查询;很多 NoSql 数据库没有面向复杂查询的索引,及时使用 MapReduce 加速查询,性能方面仍不如关系数据库
    一致性强一致性弱一致性关系数据库严格遵守事务 ACID 模型,保证事务的强一致性;很多 NoSql 数据库放松了对 ACID 四性的要求
    数据完整性容易实现很难实现任何一个数据库都可以实现数据完整性(包括实体完整性、参照完整性和自定义完整性),但是 NoSql 数据库无法实现
    扩展性一般关系数据库很难实现横向扩展,纵向扩展的控制键也比较有限;NoSql 很容易实现横向扩展
    可用性很好\
    标准化关系数据库已经标准化(SQL);NoSql 还没有行业标准
    技术支持关系数据库已经非常成熟,很多厂商可以提供很好的技术支持;NoSql 在技术支持方面还在起步阶段
    可维护性复杂复杂关系数据库需要专门的数据库管理员维护;NoSql 数据库虽然没有关系数据库复杂,但也难以维护

    通过上述比较,可以看出两者都有各自的目标用户群体和市场空间,不存在一个完全取代另一个的问题。

    NoSql 的四大类型

    NoSql 数据库虽然数量众多,但是归结起来,典型的 NoSql 数据库通常包括简直数据库、列族数据库、文档数据库和图数数据库。

    键值数据库

    键值数据库会使用一个哈希表,这个表中有一个特定的 Key 和一个指针指向特定的 Value。key 可以用来定位 value,即存储和检索具体的 Value。Value 对数据库而言是透明不可见的,不能对 Value 进行索引和查询,只能通过 Key 进行查询。Value 可以用来存储任意类型的数据。

    键值数据库可以进一步划分为 内存键值数据库持久化键值数据库 。前者吧数据保存在内存中,后者吧数据保存在磁盘。

    项目描述
    相关产品Redis、Riak、SimpleDB、Chordless、Scalaris、Memcached
    数据模型键/值对
    典型应用内容缓存,如会话、配置文件、参数、购物车等
    优点扩展性好、灵活性好、大量写操作时性能高
    缺点无法存储结构化信息、条件查询效率较低
    使用者GitHub(Riak)、Twitter(Redis 和 Memcached)、StackOverFlow(Redis)

    列族数据库

    列族数据库一般采用列族数据模型,数据库由多个行构成,每行数据包含多个列族,不同的行可以有不同的列族,属于同一列族的数据会被存放在一起。每行数据通过行键进行定位。

    项目描述
    相关产品BigTable、HBase、Cassandra、HadoopDB、GreenPlum、PUNTS
    数据模型列族
    典型应用分布式数据库存储于管理
    优点查找速度快、可扩展行强、容易进行分布式扩展、复杂性低
    缺点功能较少,大都不支持强事务一致性
    使用者NASA(Cassandra)、Twitter(Cassandra and HBase)、Facebook(HBase)、Yaho!(HBase)

    文档数据库

    文档数据库中,文档是数据库的最小单位。虽然每一种文档数据库的部署都有所不同,但是大都假定文档以某种标准化格式封装并对数据进行加密,同时用多种格式进行解码。文芳数据库通过键来定位一个文档,可以看成键值数据库的衍生品,但是前者要比后者的查询效率高。

    文档数据库既可以根据键(Key)来构建索引,也可以基于文档内容来构建索引(这是文档数据库不同于键值数据库的地方)。

    项目描述
    相关产品CouchDB、MongoDB、Terrastore、ThruDB、RavenDB、SisoDB、RaptorDB、CloudKit、Perservere、Jackrabbit
    数据模型版本化的文档
    典型应用存储、检索并管理面向文档的数据或者类似的半结构化数据
    优点性能好、灵活性高、复杂性低、数据结构灵活
    缺点缺乏统一的查询语法
    使用者百度云数据库(MongoDB)、SAP(MongoDB)、Codecademy(MongoDB)、NBC News(RavenDB)

    图数据库

    图数据库以图论为基础,一个图是一个数学概念,用来表示一个对象集合,包括顶点以及连接顶点的边。图数据库使用图作为数据模型来存储数据,可以高效地存储不同顶点之间的关系。

    图数据库专门用于处理具有高度相互关联关系的数据,可以高效地处理实体之间的关系,比较适合于社交网络、模式识别、依赖分析、推荐系统以及罗静寸照等问题。

    项目描述
    相关产品Neo4J、OrientDB、InfoGrid、Infinite Graph、GraphDB
    数据模型图结构
    典型应用应用于大量复杂、互连接、低结构化的图数据结构场合
    优点灵活性高、支持复杂的图算法、可用于构建复杂的关系图谱
    缺点复杂性高、只能支持一定的数据规模
    使用者Adobe(Neo4J)、Cisco(Neo4J)、T-Mobile(Neo4J)

    NoSQL 的三大基石

    CAP

    所谓 CAP 指的是:

    • C(Consistency):一致性。它是指任何一个读操作总是能够读到之前完成的写操作的结果,也就是在分布式环境中,多点的数据是一致的。
    • A(Availability):可用性。它是指快速获取数据,可以在确定的数据内返回操作结果。
    • P(Tolerance of Network Partition):分区容忍性。它是指当出现网络分区的情况时(即系统中的一部分节点无法和其他节点进行通信),分离的系统也能够正常运行。

    在这里插入图片描述

    从上图可以看出,一个分布式系统不可能同时满足三个需求,最多只能同时满足其中 2 个。

    在处理 CAP 的问题时,可以有以下几个明显的选择:
    在这里插入图片描述

    1. CA。强调一致性和可用性,放弃分区容忍性,最简单的做法是吧所有与事务有关的内容都放到同一台机器上。这种做法会严重过影响系统的可扩展性。
    2. CP。强调一致性和分区容忍性,放弃可用性。当出现网络分区的情况时,手影响的服务需要等待数据一致,因此在等待期间就无法对外提供服务。
    3. AP。强调可用性和分区容忍性,放弃一致性。允许系统返回不一致的数据。在采用 AP 设计时,也可以不完全放弃一致性,转而采用最终一致性。

    BASE

    首先先来回顾一下关系数据库的 ACID:

    • A(Atomicity):原子性
    • C(Consistency):一致性
    • I(Isolation):隔离性
    • D(Durability):持久性

    关系数据库系统设计了复杂的事务管理机制来保证事务在执行过程中严格满足 ACID 四性要求。但是,NoSql 数据库通常应用于 Web 2.0 网站等场景中,对数据一致性的要求并不是很高,强调系统的高可用性,适当牺牲了一致性或分区容忍性。BASE 的基本思想就是在这个基础上发展起来的,它牺牲了高一致性,从而获得可用性或可靠性。

    BASE 的基本含义是 基本可用软状态最终一致性

    1. 基本可用

    基本可用是指一个分布式系统的一部分发生问题变得不可用时,其他部分仍然可以正常使用,也就是允许分区失败的情形出现。

    2. 软状态

    “软状态”是与“硬状态”相对应的一种提法。数据库保存的数据是“硬状态”时,可以保证数据一致性,即保证数据一直是正确的。“软状态”是指状态可以有一段时间不同步,具有一定的滞后性。

    3. 最终一致性

    一致性的类型包括强一致性和弱一致性,二者的主要区别在于宝并发的数据访问操作下,后续操作是否能够获取最新的数据。

    对于强一致性而言,当执行完一次更新操作后,后续的其他读写操作就可以保证读到更新后的最新数据;
    反之,如果不能保证后续访问读到的都是更新后的最新数据,那么就是弱一致性。

    最终一致性时弱一致性的一种特例,允许后续访问操作可以暂时读不到更新后的数据,但是经过一段时间后,必须最终读到更细后的数据。

    最终一致性

    讨论一致性,需要从客户端和服务端两个角度来考虑。从服务端来看,一致性是指更新如果复制分布到整个系统,以保证数据最终一致。从客户端来看,一致性主要指的是高并发的数据访问操作下,后续操作是否能够获取到最新的数据。

    最终一致性,只要经过一段时间后能够访问到更新后的数据即可。也就是说,如果一个操作 OP 往分布式存储系统中写入一个值,遵循最终一致性的系统可以保证:如果后续访问发生之前没有其他写操作去更新这个值的话,最终所有后续的访问都可以读取到操作 OP 写入的最新值。

    从 OP 操作完成到后续访问可以最终读取到 OP 写入的最新值,这之间的时间间隔称为“不一致性窗口”

    从 NoSQL 到 NewSQL 数据库

    NoSQL 数据库提供了良好的扩展性和灵活性,很好地弥补了传统关系数据库的缺陷,但是它也存在自己的不足之处,不具备高度结构化查询等特性,查询效率尤其是复杂查询方面不如关系数据库,而且不支持事务 ACID 四性。

    在这个背景下,NewSQL 数据库开始逐渐升温。NewSQL 是对各种新的可扩展、高性能数据库的简称,这列数据库不仅具有 NoSQL 对海量数据的存储管理能力,还保持了传统数据库支持 ACID 和 SQL 等特性。不同的 NewSQL 数据库的内部结构差异很大,但是它们有两个显著的共同特点:都支持关系数据模型都使用 SQL 作为其主要的接口

    展开全文
    weixin_43912972 2020-03-26 19:43:35
  • NoSQL数据库原理与应用 1. 绪论 1.1 数据库系统 数据库技术是研究数据库的结构、存储、设计、管理和使用的一门科学。 数据库系统的组成: 数据库根据不同逻辑模型(一种数据模型)可分为:层次型(一对多)、...

    NoSQL数据库原理与应用

    1. 绪论

    1.1 数据库系统

    • 数据库技术是研究数据库的结构、存储、设计、管理和使用的一门科学。
    • 数据库系统的组成

    请添加图片描述

    1. 数据库根据不同逻辑模型(一种数据模型)可分为:层次型(一对多)、网状型(多对多)、关系型(二维表)。
    2. 数据库管理系统(DBMS)
    • 是一种操纵和管理数据库的大型软件,如Oracle、MySQL都是 DBMS。
    • 是数据库系统的核心
    • 主要功能有:数据定义 DDL,数据操纵 DML,数据库的运行管理,数据组织、存储与管理,数据库的维护,通信。
    1. 数据库应用程序将用户的操作交给 DBMS,再由 DBMS 将其转化为数据库能识别的 DDL(数据定义语言)。

    1.2 关系型数据库

    • 关系型数据库以行和列的形式存储数据,这一系列的行和列被称为

    • 结构化查询语言 SQL

      • 关系型数据库的核心
      • 是一种高度非过程化的语言。
      • 组成:
      SQL的组成功能描述
      数据定义语言 DDL对表的创建 CREATE、删除 DROP和修改ALTER。
      数据查询语言 DQL数据查询 SELECT
      数据操纵语言 DML对表中数据的插入 INSERT、更新 UPDATE、删除 DELETE。
      数据控制语言 DCL对数据的访问权进行控制
    • 关系型数据库的优点

      1. 容易理解:采用二维表的形式进行存储。

      2. 使用方便:使用通用的 SQL 语言进行数据操纵。

      3. 易于维护:具有完整性和一致性的特点

        ​ 完整性:实体完整性、参照完整性、用户自定义完整性

        ​ 提供对事务的支持,事物的重要特性:原子性要么全完 成,要么全部完成,–> 回滚,保证了数据的一致性。

    • 关系型数据库的缺点

      1. 高并发读写能力差
      2. 对海量数据的读写效率低
      3. 扩展性差(纵向扩展)
    • 由于关系型数据库具有数据模型、完整性约束和事务的强一致性等特点,导致其难以实现高效率的、易横向扩展的分布式架构。

    1.3 NoSQL数据库

    • NoSQL是非关系型数据库的统称。

    请添加图片描述

    • NoSQL从诞生之初就是分布式、横向扩展的。

    • 特点:

      1. 具有灵活的数据模型:可以快速容纳新的数据类型而无需修改表。
      2. 可伸缩性强:是分布式、横向扩展的,当数据库服务器无法满足数据存储和数据访问的需求时,只需要增加多台服务器,将用户请求分散到多台服务器上,即可减少单台服务器的性能瓶颈出现的可能性。
      3. 自动分片:横向扩展,即增加服务器而不是扩展单台服务器的处理能力。关系型数据库存储的是结构化的数据,采用的是纵向扩展,需要单台服务器持有整个数据库来确保可靠性和数据的持续可用性。
      4. 自动复制:服务器会自动对数据进行备份,即将一份数据复制存储在多台服务器上。
    • 关系型数据库和非关系型数据库的区别

      关系型数据库非关系型数据库
      存储方式表(行、列)数据集(键值对、图、文档)
      存储结构结构化,不易更改动态结构
      存储规范采用最小关系表存储,避免了数据重复单个数据库单独存储,极少分割
      扩展方式纵向,即提高自身性能横向,添加更多服务器
      查询方式SQL(CRUD)UnQL(非结构化查询语言),以数据集为单位来进行管理和操作

    1.4 分布式数据库的数据管理

    • 分布式系统的核心理念是让多台服务器协同工作,完成单台服务器无法处理的任务,尤其是高并发或者大数据量的任务。
    • 与传统的关系型数据库相比:
      • 放松事务一致性的要求。
      • 改变固有的表结构。
      • 去除事务、关联等复杂操作。
    • 分布式数据库的特征:
      • **高扩展性:**分布式数据库必须具有高可扩展性,能够动态地增添存储节点以实现存储容量的线性扩展。
      • **高并发性:**分布式数据库必须及时响应大规模用户的读/写请求,能对海量数据进行随机读写。
      • **高可用性:**分布式数据库必须提供容错机制,能够实现对数据的冗余备份,保证数据和服务的高度可靠性。
    • 数据处理方式:集中式 VS 分布式
      • 集中式数据库是指数据库中的数据集中存储在一台计算机上,数据的处理也集中在一台机器上完成。
      • 分布式数据库是指利用高速计算机网络将物理上分散的多个数据存储单元连接起来组成一个逻辑上统一的数据库。
    • 技术管理和主要策略
      • 数据分片/数据分块 --> 多表联合查询性能较差
      • 数据多副本
      • 一次写入多次读取 WORM --> 顺序存储结构,速度较快
      • 分布式系统的可伸缩性
        • 集群状态维护
        • 数据平衡
        • 高可用性

    ▷ 扩展:数据处理过程

    • 数据采集
    • 数据存储(以xx形式,如二维表,键值,列族,文档,图形)
    • 数据处理和管理
    • 数据可视化

    1.5 分布式数据库的理论

    1.5.1 CAP理论

    • 一致性(Consistency)、可用性(Availability)和分区容错性(Partition Tolerance)三者无法在分布式系统中被同时满足,并且最多只能满足其中两个。

      1. C : 一致性(consistency)(强一致性)

        它是指任何一个读操作总是能够读到之前完成的写操作的结果。所有节点在同一时间具有相同的数据。

      2. A : 可用性(Availability)(高可用性)

        每个请求都能在确定时间内返回一个响应,无论请求是成功或失败。

      3. P : 分区容忍性(Partition Tolerance)

        它是指分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。可视为在系统中采用多副本策略。

    • 当处理CAP的问题时,可以有几个明显的选择:

      1. CA 也就是强调一致性(C)和可用性(A),放弃分区容忍性(P),最简单的做法是把所有与事务相关的内容都放到同一台机器上。
      2. CP 也就是强调一致性(C)和分区容忍性(P),放弃可用性(A),当出现网络分区的情况时,受影响的服务需要等待数据一致,因此在等待期间就无法对外提供服务。
      3. **AP ** 也就是强调可用性(A)和分区容忍性(P),放弃一致性(C),允许系统返回不一致的数据。

    请添加图片描述

    • 重新理解:三者之间不是非此即彼,应看做连续互相影响,因此可以采用如下策略:绝大多数未分区的情况下,尽可能保证CA,当发生网络分区时,系统应能识别P状况,降低CA并进行相应处理。

    1.5.2 BASE理论

    1. ACID
      • **事务:**是一个一致和可靠计算的基本单元,由作为原子单元执行的一系列数据库操作组成。数据库一般在启动时会提供事务机制,包括事务启动、停止、取消或回滚等。
      • ACID 是对 CAP 中的强一致性(C)和可用性(A)进行权衡的结果。
      • ACID 指数据库事务正确执行的四个基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。
        1. **原子性:**一个事务的所有系列操作步骤被看成是一个动作,所有 的步骤要么全部完成要么都不会完成。
        2. **一致性:**事务执行前后,数据库的状态都满足所有的完整性约 束。不能发生表与表之间存在外键约束,但是有数据却违背这种约束性。
        3. 隔离性:并发执行的事务是隔离的,保证多个事务互不影响,隔离能够确保并发执行的事务能够顺序一个接一个执行,通过隔离,一个未完成事务不会影响另外一个未完成事务。
        4. **持久性:**一个事务一旦提交,它对数据库中数据的改变就应该是永久性的,不会因为和其他操作冲突而取消这个事务。
    2. BASE
      • BASE 是对 CAP 中的弱一致性(C)和可用性(A)进行权衡的结果。
      • **核心思想:**无法做到强一致性,但每个应用都可以根据自身的特点,采用适当方式达到最终一致性。
      • BASE原则 = 基本可用性(Basically Available) + 软状态(Soft state) + 最终一致性(Eventuallyconsistent)
        1. **基本可用性:**分布式系统在出现故障的时候,允许损失部分可用性,即保证核心功能或者当前最重要功能可用,但是其他功能会被削弱。
        2. **软状态:**允许系统数据存在中间状态,但不会影响到系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据同步时存在延时(暂时不一致)。
        3. **最终一致性(核心):**要求系统数据副本最终能够一致,而不需要实时保证数据副本一致。*最终一致性是弱一致性的一种特殊情况。
    • BASE理论和ACID理论的区别
    区别BASE理论ACID理论
    一致性弱一致性强一致性
    可用性可用性优先可用性不作要求
    灵活性变化速度快、灵活难以变化

    1.5.3 最终一致性

    • 最终一致性是 BASE 原理的核心,也是 NoSQL 数据库的主要特点,通过弱化一致性,提高系统的可伸缩性、可靠性和可用性。
    • 牺牲一致性换取高可用性是多数分布式数据库产品的方向。
    • 五个变种:

    请添加图片描述

    • 实现一致性的策略 --> NRW策略

      三个关键字N、R、W。

      ​ N — 数据复制的份数

      ​ W — 更新数据时需要保证写完成的节点数

      ​ R — 读取数据时需要保证读完成的节点数

      如果W+R>N,写的节点和读的节点重叠,则是强一致性。

      如果W+R<=N,不能保证读写有重叠,则是弱一致性

      不同的N,W,R组合,是在可用性和一致性之间取一个平衡

    总体上看,一致性和可用性成负相关。

    1.6 NoSQL 数据库分类

    • NoSQL 是基于存储的数据结构进行分类的。
    分类举例典型应用场景数据模型优点缺点
    键值数据库Redis, Voldemort, Oracle BDB内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等。Key 指向 Value 的键值对,通常用hash table来实现查找速度快数据无结构化,通常只被当作字符串或者二进制数据
    列族数据库Cassandra, HBase, Riak分布式的文件系统以列簇式存储,将同一列族数据存在一起吞吐量大,可扩展性强,更容易进行分布式扩展功能相对局限
    文档型数据库CouchDB, MongoDBWeb应用(与Key-Value类似,Value是结构化的,不同的是数据库能够了解Value的内容)Key-Value对应的键值对,Value为 JSON结构的文档数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构查询性能不高,而且缺乏统一的查询语法。
    图形数据库Neo4J, InfoGrid, Infinite Graph社交网络,推荐系统等。专注于构建关系图谱图结构利用图结构相关算法。比如最短路径寻址,N度关系查找等很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案。

    2. HBase

    2.1 HBase简介

    • HBase 是一个分布式非关系型数据库。
    • 既可以存储结构化数据,也可以存储非结构化数据或半结构化数据。
    • 使用 Java 语言实现,底层基于Hadoop 的 HDFS 来存储数据,在此基础上运行 MapReduce 进行分布式的批量处理数据,为 Hadoop 提供海量数据管理的服务。
    • 是 Apache 基金会的 Hadoop 项目的一部分;是对 Google 的 Bigtable 的开源实现。
    • HBase 特性:
      1. 容量巨大
      2. 列存储
      3. 稀疏性
      4. 扩展型强
      5. 高可靠性

    HBase 和 Hadoop

    请添加图片描述

    2.2 HBase 的组件及其功能

    请添加图片描述

    • HBase 的系统架构包括客户端、ZooKeeper 服务器、HMaster 主服务器和RegionServer。
    1. 客户端

      • HBase系统的入口 --> 操作HBase
      • 通信功能(RPC机制):与HMaster进行管理类通信,与Regionserver进行数据读写操作。
      • 支持多种形式:HBase shell、Java、Thrift等
    2. ZooKeeper

      • ZooKeeper 是一个高性能、集中化、分布式应用程序协调服务,主要是用来解决分布式应用中用户经常遇到的一些数据管理问题。
      • ZooKeeper 是串联 HBase 集群和 Client 的关键。
      • 负责协调的任务:
        1. HMaster选举(最典型的应用场景)
          • HBase集群中有多个 HMaster 并存,通过竞争选举机制保证同一时刻只有一个 HMaster 处于活跃状态。
          • 类似于 HDFS 的 HA 机制:只有一个 NameNode 处于活跃状态
        2. 系统容错
        3. 维护元数据,记录HMaster节点地址
        4. Region状态管理
    3. HMaster

      • HMaster是 HBase 集群中的主服务器,负责监控集群中的所有RegionServer,并且是所有元数据更改的接口.

      • HMaster 服务器通常运行在 HDFS 的 NameNode 上,HMaster 通过Zookeeper 来避免单点故障

      • HMaster主要负责表和region的管理工作:

        (1)管理用户对表的增、删、改、查操作

        (2)管理RegionServer的负载均衡,调整region的分布。

        (3)Region的分配和移除

        (4)处理RegionServer的故障转移。

    • HMaster故障不影响当前客户端对数据的访问,因为客户端直接与 RegionServer交互。但需尽快恢复,避免后续操作的正确性。
    1. RegionServer

      • RegionServer主要负责响应用户的请求,向HDFS中读写数据。

      • 一般在分布式集群当中,RegionServer运行在DataNode服务器上,实现数据的本地性。

      • RegionServer 是 HBase 中最核心的模块,其内部管理了一系列 Region 对象,每个 Region 由多个 HStore 组成,每个Hstore 对应表中的一个列族的存储。

      • RegionServer 的功能:

        (1)处理客户端读写请求。

        (2)处理分批给它的region。

        (3)刷新缓存到HDFS中。

        (4)处理region的合并和分片。

    2.3 HBase数据模型

    2.4 HBase Shell

    展开全文
    weixin_49990067 2021-09-19 09:26:44
  • weixin_44318830 2019-12-21 11:26:02
  • weixin_40953930 2020-04-18 12:09:46
  • u010395024 2019-10-29 15:32:10
  • weixin_43398418 2019-02-25 17:24:06
  • 5星
    6.79MB haifeng926 2017-05-23 15:19:38
  • u013213157 2017-07-05 16:17:32
  • 78.46MB nzs197910 2019-06-18 19:09:10
  • weixin_44722787 2019-05-24 20:39:49
  • qq_44641830 2021-05-25 17:41:38
  • weixin_55862251 2021-12-13 17:01:02
  • uniquewonderq 2020-09-28 10:22:14
  • 40KB chengdegong 2014-07-21 23:24:20
  • 1.49MB poiunet 2017-11-09 15:48:23
  • 208KB weixin_38661008 2021-03-04 08:20:47
  • qq_46649692 2020-12-23 09:55:51
  • bcbobo21cn 2016-05-03 12:00:47
  • 1.97MB molidiyi 2018-01-05 15:59:35

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 64,461
精华内容 25,784
关键字:

nosql数据库技术与应用