《NOSQL数据库技术》课件全套完整版_第1页
《NOSQL数据库技术》课件全套完整版_第2页
《NOSQL数据库技术》课件全套完整版_第3页
《NOSQL数据库技术》课件全套完整版_第4页
《NOSQL数据库技术》课件全套完整版_第5页
已阅读5页,还剩671页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

NoSQL

数据库技术BEDING

UNIVERSITYOFPOSTSANDTELECOMMUNICATIONS1

是NoSQL2

NoSQL种类与特点3

CAP定

理4

ACID与BASE5

最终一致性技术基础6

数据复制与分片7NoSQL数据库与云计算8

NoSQL数据库与物联网9

NoSQL数据库与区块链10

小结目录21.1什么是NoSQL

NitSQL■研究不同特点大数据存储的数据库技术;NoSQL

数据库是非关系型数据存储的广义定义

;它不同于符合ACID

理论的关系型数据库,

数据存储不需要固定的表结构;■

通常也不存在连接操作;NoSQL

数据库不使用传统的关系数据库模型

,而是使用键值模型、列模型、文档模型、

图模型等方式存储数据。31.1什么是NoSQL——NoSQL诞生原因数据库应用需求变化■支撑OLTP型应用:事务处理,RDB

的强项■支撑OLAP型应用:多维分析处理■新需求:支撑面向大数据的存储、处理与应用

新挑战■

one-size

does

not

fit

all■高性能、低成本■

不同类型非结构化数据存储与管理计算机新技术助力NoSQL■

多核、大内存,集群等技术的普及麻省理工MichaelStonebraker现代主流数据库系统架构的

奠基人,2014年获图灵奖。1.1什么是NoSQL——NoSQL诞生原因关系型数据库面临的问题扩展困难:由于存在类似Join

这样多表查询机

制,使得数据库在扩展方面很艰难;读写慢:这种情况主要发生在数据量达到一定

规模时由于关系型数据库系统逻辑复杂,使得

容易发生死锁等并发问题,所以导致大数据库

应用场景中读写速度下滑非常严重;成本高:企业级数据库的License

价格很惊人,

并且随着系统规模越大,成本越高;■有限的支撑容量:现有关系型解决方案还无法

支撑Google

这样海量的数据存储;1.1什么是NoSQL——NoSQL诞生原因大数据库存储与管理新需求呼吁技术创新低延迟的读写速度:应用快速地响应能极大地提

升用户的满意度;支撑海量的数据和流量:对于互联网等企业级大

应用而言,需要高效存储处理PB级的数据和百万

级的并发访问量;大规模集群的管理:系统管理员希望分布式应用

能更简单的部署和管理;尽可能地降低运营成本:IT

经理们希望在硬件成

本、软件成本和人力成本能够有大幅度地降低;1.1什么是NoSQL——典型的共性需求■

假设失效是必然发生的:

需要具有高容错性。NOSQL实现都建立在硬盘、机器和网络都会经常性失效假设之上。■

不能彻底阻止这些失效,需要让系统能够在即使非常极端的条件下也能应付这些失效。对数据进行分区:需要高性能■

分布式存储,将读写操作的负载分布到了不同的机器上

提高数据存储与访问的并发性。■

保存同一数据的多个副本:需要具有高可用性。NOSQL提供数据副本机制,副本个数往往可配置■

查询支持■在这个方面,不同的实现有相当本质的区别。不同实现的一个共性在

于哈希表中的

key/value

匹配。类型Top

3代表特点图数据库(GraphDBMS)Neo4jMicrosoftAzure

CosmosDB(Multi-model)OrientDB(Multi-model)图型数据的最佳存储。相比使用传统关系数据库性能更优,存储模式设计与使用更加灵活、简单。文档数据库(DocumentStores)MongoDBAmazonDynamoDB(Multi-model)CoucHBase文档存储一般用类似JSON(JavaScriptObjectNotation)的格

式存储,存储的内容是文档型的嵌套

结构。可以对某些字段建立索引,实

现类似关系数据库的某些功能。键值数据库

(KV

DBMS)Redis(Multi-model)AmazonDynamoDB(Multi-model)Microsoft

Azure

CosmosDB(Multi-model)可以通过Key快速查询到其Value。一般来说,存储不管Value的格式,照单全收。列族存储Cassandra顾名思义,是按列存储数据的。最(WideHBase大的特点是方便存储结构化和半结构ColumnMicrosoftAzure

Cosmos化数据,对某一列或者某几列的查询Stores)DB(Multi-model)有非常大的性能优势。1.2NoSQL分类与特点https://db-engines.com/en/ranking

截止2019年11月排名如下表类型Top

3代表特点时序数据库(Time

SeriesDBMS)InfluxDBKdb+Prometheus时间序列数据库用于支撑时间序列数据的优化存储,每个条目都有一个相关的时间戳。时间序列数据可以来自传感器、智能电表等,或可以存储一个高频股票交易系统的股票价格波动情况。对象存储(Object

orientedDBMS)InterSystems

Caché(Multi-model)Versant

Object

DBObjectStore通过类似面向对象语言的语法操作数据库,

通过对象的方式存取数据。XML数据库MarkLogicOracleBerkeley

DBVirtuoso可以高效地存储XML数据,并支持XML的内部查询语法,如XQuery、Xpath等。原生类XMLDB有BaseX等。RDF数据库MarkLogic(Multi-model)VirtuosO(Multi-model)Apache

Jena

-TDB资源描述框架存储数据库是一种信息的

描述方法,最初用于描述元数据。目前主要

用于语义网、知识图谱的存储。资源描述框

架存储数据库主要以主语、谓语、宾语三元

组形式表示信息。搜索引擎(SearchEngines)ElasticsearchSplunkSolr搜索引擎是用于数据内容搜索的NoSQL数据库管理系统。除了这种应用的一般优化,专业化数据库通常还支持复杂搜索表达式、全文搜索、源搜索、搜索结果的排序和分组、空间搜索和高扩展性分布式搜索等功能。1.2NoSQL种类与特点1.2

NoSQL种类与特点NoSQLDB的一般共性特点■

1)

不需要预定义模式:不需要事先定义数据模式

,预定义表结构。数据中的每条记录都可能有不同

的属性和格式,当插入数据时,并不需要预先定义

它们的模式;■

2)

无共享架构:相对于将所有数据存储在网络中

的存储区域全共享架构,NoSQL

往往将数据划分

后存储在各个本地服务器上。因为从本地磁盘读取

数据的性能往往好于通过网络传输读取数据的性能

,从而提高系统的性能。1.2

NoSQL种类与特点3)

弹性可扩展:可以在系统运行的时候,动态增加或者删除结点。不需要停机维护,

数据可以自动迁移。4)

分区:相对于将数据存放于同一个节点

,NoSQL

数据库需要将数据进行分区,将记

录分散在多个节点上面。并且通常分区的同

时还要做复制。这样既提高了并行性能,又

能保证没有单点失效的问题;5)分发查询到数据,而非数据到查询;1.2

NoSQL种类与特点6)

异步复制:和RAID存储系统不同的是,NoSQL

中的复制,往往是基于日志的异步复制。这样,数据就可以尽快地写入一个节点

,而不会被网络传输引起迟延。缺点是并不

总是能保证一致性,这样的方式在出现故障的时候,可能会丢失少量的数据;7)

BASE:

相对于事务严格的ACID特性,

NoSQL数据库保证的是BASE特性。1.2

NoSQL种类与特点图数据库:将数据存储在图

(Graph)

结构中。如下

图示是一个简单的有向无环图。GraphRecordsdatainRecordsdata

inRelationshipsorganizeNodeshavehaveProperties1.2

NoSQL种类与特点■

图术语:节点、边、度、路径、最短距离、连通

图、全连通图、子图等等。■

图数据库可以看作是结点与关系的集合,图数据

库就是将数据存储在拥有属性的结点中,并用关

系将这些结点组织起来。■数据存储的重要目的是为了检索。图的查找与搜

索可以通过遍历算法完成。■

解决的查询问题根据算法,从开始结点到与之相

连的结点查询诸如“某个人好友的好友的好友是

哪些人”等问题。■节点与节点间的距离(?)可以反映节点间关系

的紧密程度。1.2

NoSQL种类与特点文档类:MongoDB■数据可以存储为一个树形结构■文档数据库就是大量文档树形结构的集合■数据存储模式重点是树形、森林结构的抽象,文档模式可变根节点

客户分支

分支

客户1………客户n分支

分支

标识

姓名

地址值

分支

分支

112

张三

城市

街道值

北京

0号西土城路1海淀区shard₂mongodmongodmongodconfig

serversCmongodC₂mongodCmongod>Config

Server-存储集群的元数据,如分片信息、数据块映射等。config

服务器保存了两个映射关系,一个是key区间的数据都存放在那些chunk

上的映射关系,另一个是chunk

都存放在哪些分片

节点上的映射关系。>Route

Server

客户端访问路由(统一接入点),查询优化,数据合并、排序、裁剪,请求推送等

。客户端统一访问路由节点mongos,

来进行数据操作。路由节点先访问config服务器获取信息,找到数据真正存放位置,然后再对其进行操作。client>MongoServer-mongod实例,存储实际数据的模块。1.2

NoSQL种类与特点文档类:MongoDBshard₄mongodshard₃mongodmongodmongodmongodmongodmongodmongodmongodshard₂mongo5mongos键值类:Redis■简洁:数据主要采用Key-Value

形式存储,键为唯一标识符。■高速:数据驻留内存,Redis

也支持将内存中的数据持久化到

磁盘中,重启的时候可以再次加载进行使用,同时保障数据的

高性能访问及可靠性。■易扩展:根据系统负载量,灵活添加或删除服务器。■对键可设置失效时间,丰富的配置管理功能可以精准地设定数

据服务级别。键值Key1Value1…………KeyNValueN1.2

NoSQL种类与特点1.2

NoSQL种类与特点列族数据库:HBASE,

大数据技术基础中有学习Cient-

ZookeeperHMaster该类数据库课程重点学习:

CassandraDataNode

DataNodeDataNodeDataNodeDataNode…DFS

Client

…DFSClientStore

MemstoreStoreFileHFileStore

MemStoreStoreFileHFileMemstoreStoreFileHFileMemstoreStoreFileHFileHRegionServer

HRegjionHRegionServer

HRegionStoreStoreFileHFileStoreStoreileHFileHBaseHDFSHLogH9一致性

(Consistency)任何一个读操作总是能读取到之前完成的写操作结果

,也就是在分布式环境中,多点的数据是一致的;■

(Availability)每一个操作总是能够在确定的时间内返回,也就是系

统随时都是可用的。■

分区容忍性

(Partition

Tolerance)在出现网络分区(比如断网)的情况下,分离的系统

也能正常运行。一个分布式系统不能同时满足一致

,可用性和分区容错性这三个需

求,最多只能同时满足两个。1.3CAP定理CAP理

论1.3CAP定理数据库按CAP分类RDBMS

ConsistencyCA

CPCAPTheoremCouchDBCassandraDynamoDB

RiakMongoDB

HBaseRedisPartitionToleranceAvailabilityAP(1)关注一致性和可用性的

(CA)这些数据库对于分区容忍性方面比较弱,主

要采用复制

(Replication)

这种方式来保证

数据的安全性,常见的CA系统有:传统关系型数据库,比如Postgres

和MySQL等

(Relational)■Vertica(Column-oriented)Aster

Data(Relational)Greenplum(Relational)1.3

CAP定理(2)关注一致性和分区容忍性的(CP)■这种系统将数据分布在多个网络分区的节点上,并保证这

些数据的

致性,但是对于可用性的支持方面有问题,比

如当集群出现问题的话,节点有可能因无法确保数据是

致性的而拒绝提供服务,主要的CP

:BigTable(Column-oriented)■Hypertable(Column-oriented)■HBase(Column-oriented)■MongoDB(Document)Terrastore(Document)Redis(Key-value)Scalaris(Key-value)MemcacheDB(Key-value)■

Berkeley

DB(Key-value)1.3

CAP定理(3)关于可用性和分区容忍性的(AP)这类系统主要以实现“最终一致性

(Eventual

Consistency)”来确保可用性和分区容忍性,AP

的系统有:■Dynamo(Key-value)Voldemort(Key-value)TokyoCabinet(Key-value)■KAI(Key-value)■Cassandra(Column-oriented)CouchDB(Document-oriented)SimpleDB(Document-oriented)■Riak(Document-oriented)1.3

CAP定理关系数据库■表都是存储一些格式

化的数据结构■每个元组字段的组成都一样即使不是每个元组都

需要所有的字段,但

数据库会为每个元组

分配所有的字段这样的结构可以便于

表与表之间进行连接等操作■

NoSQL以键值对存储,它

的结构不固定每一个元组可以有

不一样的字段每个元组可以根据

需要增加一些自己

的键值对不会局限于固定的

结构,可以减少一

些时间和空间的开

销1.4ACID与BASE关系数据库VS

NoSQLNoSQL■弱一致性的理论BASEBASE

分别是:Basically

Available

Soft-stateEventualConsistency关系数据库关系型数据库中强调

ACID

是■原子性

(Atomicity)口一

性(Consistency)隔

性(Isolation)持

性(Durability)ACID的目的就是通过事

务支持,保证数据的完

整性和正确性1.4ACID与BASE1.4ACID与BASE基本可用性:分布式系统在出现不可预知故

障的时候,允许损失部分可用性。软状态:允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整

体可用性,即允许系统在不同节点的数据副

本之间进行数据同步的过程存在延时。最终一致性:BASE系统显著的特点是要保

证在短时间内,即使有不同步的风险,也要

允许新数据能够被存储。所有的数据副本,

在经过一段时间的同步后,最终能够达到一

个一致的状态。

261.5最终一致性技术基础NoSQL

分布式集群系统是由多个节点(指服

务器、存储设备等)构成由于网络异常、服务器故障等原因,节点并

不总能保证正常工作,特别是在节点数量很

大的时候,出现异常状况在所难免。为了保证系统的正常运行,分布式系统中对

于数据的存储采用多数据副本来保证高可用

性,这个过程对于用户来说是透明的。■如何保障多副本数据的最终一致性?27■

按照服务保障能力的不同,客户端访问一致性可以

分为以下几个类型。■

严格一致性:语义上相当于只存在一份数据。任何更新

看上去都是即时发生的。“读己之所写”一致性:客户端可立即看到自己所作的

更新,且客户端可在不同请求之间切换服务器,但不能

立即看到其他客户端所作的更新。■

会话一致性:对于客户端在同一会话作用域中发起的请

求,通常绑定到同一台服务器,提供“读己之所写”一

。■

单调读一致性:保证时间上的单调性,保证客户端在未

来的请求中,只会读到比当前更新的数据。■

最终一致性:这是最弱的一种保证。在更新的过程中,

客户端可能看到不一致的视图。1.5.1一致性问题1.5.2

Quorum的NWR

策略Quorom

机制是一种分布式系统中常用的,用来保证

数据冗余和最终一致性的投票算法,其主要数学思

想来源于鸽巢原理。Quorum的NWR策略中N代表总的节点数量,W代表

写的节点数量,R代表读的节点数量。Quorom

机制中分布式系统中的每一份数据拷贝对象

都被赋予一票。每一个操作必须要获得最小的读票

(Vr)或者最小的写票数(Vw)

才能读或者写。291.5.2

Quorum的NWR

策略如果一个系统有V

票(意味着一个数据对象有V

份冗

余拷贝),那么这最小读写票数必须满足:(1)Vr+Vw>V(2)Vw>V/2■第1条规则保证了一个数据不会被同时读写。■第2条规则保证了数据的串行化修改。Quorum

的读写最小票数可以用来作为系统在读、写

性能方面的一个可调节参数。写票数Vw

越大,则读

票数Vr越小,这时候系统写的开销就大。反之,则

写的开销就小。30■

据:■

假设共有N

个数据副本,其中K

个已经更新,N-K

个未更新

,那么任意读取N-K+1个副本数据的时候就必定至少有1

个是属于更新了的K

个里面的,也就是Quorum的交集■

只需比较读取的N-K+1

数据,并将其中版本最高的那个数

据返回给用户就可以得到最新更新的数据。■

据:■

只需要完成写K(大于N/2)个副本的更新后,就可以告诉客

户端操作完成,而不需要全部写入完成;■

当然告诉用户完成操作后,系统内部还是会继续把剩余的

副本更新,这对于用户是透明的。1.5.2

Quorum的NWR

策略31■

Paxos算法是LeslieLamport于1990年提出的,

类似于解决拜占庭将军问题,基于消息传递

解决分布式系统中的一致性问题。一个被Paxos管理的系统实际上谈论的是值状

态和跟踪的问题。Cassandra

、Google的分布式锁服务Chubby等

采用的都是Paxos算法进行一致性管理。Paxos完成一次写操作需要两次交互过程,分别是prepare/promise和propose/accept。1.5.3

PaxoS算法简介321.5.3PaxoS算法简介■

Paxos一致性算法执行过程Replica)Replica)Leader)-

(Replica)

Leader)

Replica)Replica)Replica)prepare

promiseReplica)Replica)Leader)

Replica)

Leader)

Replica)Replica)Replica)proposeaccept331.5.3

Paxos算法简介Paxos

致性算法执行过程■

第一次由提交者

(Leader)

向所有其他服务器发

出Prepare消息请求准备,所有服务器中大多数

如果回复诺言

(promise)

就表示准备好了,可

以接受写入;■第二次提交者向所有服务器发出正式建议Propose,所有服务器中大多数如果回复已经接

(accept)就表示成功。■这里大多数的含义一般指超过半数以上,即至

少N/2+1个节点,N

为节点总数。341.5.3

PaxoS算法简介Paxos一致性算法执行过程■接受的过程可能会发生失败,在回复了诺言消

息以后,在接受到Accept消息之前,如果有足够

多的服务器正好在这个时间段失败,那么执行

接受行为只能是少数服务器;Paxos算法不允许在没有达成共识情况下任何写

操作发生,这种坏的情况在实践中经常通过重

复接受阶段来让大多数节点最终接受;Paxos算法中会维护一个全局唯一的序列号。序

列号是由建议流程产生,它定义了接受流程应

该准备接受带有最新序列号的建议,序列号是算法的关键;

351.5.4

Raft算法简介Raft算法是由斯坦福大学Diego

Ongaro博士在

2014年提出的一种更易于理解的分布式架构

中日志一致性管理算法。■

相比于Paxos,Raft

算法更容易理解,也更容

易应用到实际的系统当中。Raft算法是Zookeeper框架的核心算法,也是区块链中联

盟链采用比较多的共识算法。Raft算法中,分布式系统中的节点有三种角

色。■领导者、候选者、追随者361.5.4

Raft算法简介Raft算法作用示意④①Client②ServerConsensusModuleMachinex:3y:9z:0y-1

y-9

…Logx-3③State371.5.4

Raft算法简介■Raft算法三种节点角色作用■领导者(Leader):

只有一个,负责接收客户端

的请求,将日志复制到其他节点并告知其他节

点何时应用这些日志是安全的。■候选者

(Candidate)

:

通常多个,用于选举

Leader的

一种角色。追随者

(Follower)

:

通常多个,负责响应来自

Leader或

者Candidate的请求。Raft算法思想类似民主选举,领导者由民众投票选举产生,集

群刚开始没有领导者,所有服务器节点都是追随

者;■接下来进行选举,角色转换为候选者参与投票,

每台服务器只能投一票,得票超过半数以上的当

选为领导者,并设定这届领导者的任期

(Term)

,从而选举结束;■其他候选人转换为追随者,并无条件服从领导者

的领导。■Raft把时间切割为任意长度的任期,每个任期都有一个任期号,采用连续的整数。1.5.4

Raft算法简介1.5.4Raft算法简介Raft算法思想三类角色状态转换如图所示超时/新选举接收到大多数选票超时,开始选举Candidate候选者产生领导者开始新任期收到更高任期请求,任期结束启动Follower

追随者Leader领导者401.5.4

Raft算法简介Raft算法从时间角度看任期,如图所示,每次选举

如果成功则由领导者来负责集群中的事务及状态管

理,有时也可能出现选举失败,则需要重新选举直

到选举成功,如图中的t3情

。term

1term2t3term

4termsnoemergingleaderelection

normaloperation411.5.4

Raft算法简介■

基于Leader的方法,Raft

算法可分解成三个子问题■领导者选举(LeaderElection):

原来的领导者挂掉

后,必须选出一个新的领导者,候选者可以自己

。日志复制(LogReplication):

领导者从客户端接收

日志,并向Follower们发出指令,比如进行日志复

制。安全性(Safety):

如果有任意的Server将日志项回放

到状态机中了,那么其他的Server只会回放相同的日

421.5.4

Raft算法简介■

举(LeaderElection):

要开始一次选举过程,Follower会给当前term加1并且转换成Candidate状态,并行地

向集群中的其他服务器节点发送请求投票的消息来给自己投

票。候选人的状态维持直到以下任何一个条件发生。(1)

自己赢得这次选举。给所有其它节点发送这个信息,这样所有节点都会转成Follower。(2)其他的服务器成为领导者。如果Leader的term大于或等

于自身的term,

该Candidate会转成Follower;

否则拒绝该Leader,并继续保持Candidate状态。(3)没有任何一个获选,则增加term,发起新一轮选举。1.5.5向量时钟机制向量时钟(VectorClock)

实际是一组版本号,版本号即逻辑时钟。■

假设数据需要存放3份,需要3台DB存储(用A,B,C表示),那么向量维度就是3,每个DB

有一个版本

号,从0开始,这样就形成了一个向量版本[A:0,B:0,

C:0]。Step

1:

初始状态下,所有机器都是[A:0,B:0,C:0]:DB

A——>[A:0,B:0,C:0]DB

B——>[A:0,B:0,C:0]DB

C——>[A:0,B:0,C:0]441.5.5向量时钟机制Step2:假设应用是一个电商平台,现在录入一个华为P30的价格3888元;客户端随机选择一个DB机器写入。现假设选择了A

。,

数据

大概是这样:{key=HUAWEI-P30_price;value=3888;vclk=[A:1,B:0,C:0]}Step

3:

接下来A会把数据同步给B和C,于是最终同步结果如下:

DB_A——>{key=HUAWEI-P30_price;value=3888;vclk=[A:1,B:0,C:0]}

DB_B——>{key=HUAWEI-P30_price;value=3888;vclk=[A:1,B:0,C:0]}

DB_C——>{key=HUAWEI-P30_price;value=3888;vclk=[A:1,B:0,C:0]}Step4:

过了几分钟,价格出现波动,降价到3688元;于是某个业务员更新价格。这时候系统随机选B作为写入存储,于是结果看起来

是这样:DB_A——>{key=HUAWEI-P30

_price;value=3888;vclk=[A:1,B:0,C:0]}

DB_B——>{key=HUAWEI-P30_price;value=3688;vclk=[A:1,

B:1,C:0]}DB_C——>{key=HUAWEI-P30_price;value=3888;vclk=[A:1,B:0,C:0]}1.5.5向量时钟机制Step5:于

是B

就把更新同步给其他几个存储:DB_A——>{key=HUAWEI-P30_price;value=3688;vclk=[A:1,B:1,C:0]}

DB_B——>{key=HUAWEI-P30_price;value=3688;vclk=[A:1,B:1,C:0]}DB_C——>{key=HUAWEI-P30_price;value=3688;vclk=[A:1,B:1,C:0]}■

到目前为止都是正常同步,下面开始演示一种不正常的情况。Step6:价格再次发生波动,变成4000元,这次选择C

写入:DB_A——>{key=HUAWEI-P30_price;value=3688;vclk=[A:1,B:1,C:0]}

DB_B——>{key=HUAWEI-P30_price;value=3688;vclk=[A:1,B:1,C:0]}DB_C——>{key=HUAWEI-P30_price;value=4000;vclk=[A:1,B:1,C:1]}Step

7:C把更新同步给A

和B,因为某些问题,只同步到A,

结果如下

:DB_A——>{key=HUAWEI-P30_price;value=4000;vclk=[A:1,B:1,C:1]}

DB_B——>{key=HUAWEI-P30_price;value=3688;vclk=[A:1,B:1,C:0]}DB_C——>{key=HUAWEI-P30_price;value=4000;vclk=[A:1,B:1,C:1]}461.5.5向量时钟机制Step8:

价格再次波动,变成3788元,系统选择B写入:DB_A——>{key=HUAWEI-P30_price;value=4000;vclk=[A:1,B:1,C:1]}DB_B——>{key=HUAWEI-P30_price;value=3788;vclk=[A:1,B:2,C:0]}DB_C——>{key=HUAWEI-P30_price;value=4000;vclk=[A:1,B:1,C:1]}Step

9:当B同步更新给A和C的时候就出现问题了,A自己的向量时

钟是[A:1,B:1,C:1],

而收到更新消息携带过来的向量时钟是[A:1,B:2,C:0],B:2比

B:1新,但是C:0却比C1旧。这时候发生不一致冲

突。不一致问题如何解决?向量时钟策略并没有给出解决办法,留给用

户自己去解决,只是告知目前数据存在冲突。加上时间戳是一个方法,具体方法是再加一个维度信息,即数据更

新的时间戳

(Timestamp),如[A:1,B:2,C:4,ts:123434354]。如果发生冲突,再比较一下两个数据的时间戳,大的数值说明比较后更新,

选择它作为最终数据,并对向量时钟进行修正。471.6数据复制与分片NoSQL集群主要通过数据复制和分片

(Sharding)机制保障读取数据的并行性,满足分布容错性的要

求。■

数据复制:

是指将同一份数据拷贝至多个节点。■

数据分片:是指将不同数据存放在不同节点中。■

复制和分片是两项正交的技术,它们既可以选其一

使用,也可以结合使用。■

数据复制的实现方法与集群架构紧密相关,不同类

型的NoSQL数据库管理系统提供了丰富的参数,对数据复制需要达到的能力级别进行选择性配置,

如保持3个副本还是5个副本。481.6数据复制与分片■

客户端在更新或新增数据后,已有数据副本之间如

何保持一致以及新增数据如何传播才能达到数据副

本配置要求,是数据复制架构重点解决的问题。

一般按照集群架构的管理模式分为■

主从复制■

对等复制数据分片机制本质上解决的是负载均衡问题,尽可

能地将数据均匀地分布存储在不同服务器上。■

常用算法有轮循(Round

Robin)算法、哈希(HASH)

法、

最少连接(Least

Connection)算法等。■

一致性哈希(Consistent

Hashing)

是分布式系统负载均衡

的首选算法,也是最为常用的算法。492006年8月9日,Google

首席执行官埃里克·施密特(EricSchmidt)

在搜索引擎大会(SES

San

Jose

2006)

上首次提出“云计算”(Cloud

Computing)的概念■

云计算是利用分布式计算和虚拟资源管理等技术,通过网

络将分散的IT

资源集中起来形成共享的资源池,以动态、

按需和可度量的方式向用户提供服务。■云服务:即将基础设施作为服务

(Infrastructure

as

a

Service

,IaaS)、

将平台作为服务(Platform

as

a

Service,PaaS)

将软件作为服务(Software

as

a

Service,SaaS)

等。■云计算技术与大数据技术是相辅相成、互相促进的关系。1.7

NoSQL数据库与云计算50■

NoSQL

数据库是重要的大数据存储技术■

云计算技术■

一方面为不同类型的NoSQL

数据库架构中的资源管理与

负载均衡调度等机制提供了技术参考和支撑,如Hadoop

生态中的HBase数据库内置了Zookeeper实现集群的协调

一致性资源管理;■

另一方面,云服务供应商提供了不同类型的NoSQL

数据

库服务,用户可以通过购买服务的方式使用NoSQL

数据

库,相比自己购买服务器搭建并维护NoSQL

数据库集群

来讲更加经济便捷。■

国内:BATHJ,……■国外:谷歌、亚马逊、微软,5……1.7

NoSQL数据库与云计算1.8NoSQL数据库与物联网■

互联网、移动互联网、物联网结合5G

通信技术、云

计算、AI

等的发展将进一步促进物理世界、信息世界

、人类社会之间的互联互通与智能互动Virtual

Reality5GPartner-Connectivity

Services

M2M/loTCustomer

Engagement

Business

Model

EnablementAnalyticsPartnerEcosystemIntegration

Framework&APls■

物联网感知大数据的存储离不开NoSQL

技术的支持1.8

NoSQL数据库与物联网物联网是一个基于互联网、传统电信网等的信息承

载体,让所有能够被独立寻址的普通物理对象可以

互联互通。■

物联网技术体系:主要包括整体感知、可靠传输和

智能处理三方面的关键技术。■

物联网感知大数据的智能处理离不开NoSQL

高性

能大数据存储技术的支持,物联网感知数据具有典

型的空间时序特征。NoSQL

数据库中与实时流数据处理技术框架相适

应的时序类型数据库能够很好地匹配物联网感知数

据的存储需求。531.9

NoSQL数据库与区块链■

(Blockchain)是分布式数据存储、点对点(

P2P)

传输、共识机制、加密算法等计算机技术的新

型应用模式。Equity股权Private

Markets

G

私有市场Debt债券Crowdfundingacts

链每

Healthcare健康护理Title

Records权属登记OwnershipRemittance汇款P2P

LendingP2P

借贷-

Microfinance

微金融Derivatives

IntellectualPropertyE-commerceGlobal

PaymentsWagers博彩Escrow托管支付Digital

Rights数字权益BlockchainVotingX要541.9

NoSQL数据库与区块链区块链本质上是一个去中心化的数据库,是一串使

用密码学方法相关联产生的数据块,每一个数据块

中包含了一批网络交易的信息,用于验证其信息的

防伪有效性。区块链系统上的节点,可以是不同组织的、彼此无

须信任;区块链数据由所有节点共同维护,每个参与维护的

节点都能复制获得一份完整记录的拷贝。区块链技术旨在提供天然可信的分布式账本平台,不需要第三方中介机构。■

特点:分布式容错性、不可篡改性、隐私保护性。551.9

NoSQL数据库与区块链区

块链技术是金融领域、征信领域、共享经济、知

识产权保护等领域的研究热点。区块链对等分布式架构中的一致性问题与采用对等

集群架构的某些NoSQL数据库有一定的相似性,核心算法思想可以互相借鉴。■

与NoSQL

数据库相区别的是区块链分布式架构中

每个节点中存储的不仅仅是数据本身,还包含数据

的来源信息,随着区块链节点规模的增加,数据操

作往往会存在较大延迟。■

为了提高事务处理性能,区块链技术架构中也引入

键值数据库、文档数据库等NoSQL

存储技术。56重点掌握NoSQL基本概念、CAP定理熟悉NoSQL种类与特点重点掌握四类:图、文档、键值、列族■

掌握ACID

与BASE

的区别■

掌握最终一致性经典算法思想

Quorum的NWR策略Paxos算法Raft算法向量时钟掌握数据复制与分片机制的作用■

解NoSQL

与云计算、物联网、区块链的关系1.10本章小结NoSQL

数据库技术BEDING

UNIVERSITYOFPOSTSANDTELECOMMUNICATIONS3

属性图模型1

概述62

小结5

图数据库应用4

图数据库查询语言2

图关键数据存储逻辑架构目录592.1图数据库概述■

现实世界中一切事物都处在联系之中,如:■

各个领域人际关系、组织机构关系;■

互联网中电脑网络关系、网页间链接关系等;■

物联网中:人与物关系;物与物的关系等;■

复杂关系图的抽象无处不在。节点及其间关系随着时间不断动态变化。为了挖掘

实时动态大图复杂关系中蕴藏着的潜在知识,涌现

出很多著名的图结构大数据计算框架,如Pregel、Hama

、GraphLab

、Spark

GraphX

、Flink

Gelly等。■

图数据的高性能管理与计算离不开图数据存储技术的协同助力。■

但传统的关系型数据库更加注重刻画实体内部的属

性,实体与实体之间的关系往往需要通过外键来实

现,查询实体关系时需要多级Join操作,非常耗时。■

为了降低图数据运算复杂性,提升图数据处理的性

能,图数据库应运而生。2.1图数据库概述2.1图数据库概述■图数据库是以实体及其关系为主要存储对象

的数据库系统,存储图结构的数据具有突出

。■图数据库中核心数据要素节

(Vertex)

:

指不同应用领域中人、事件、物品、地点、组织等业务实体。如

电信领域中的客户、用户、套餐产品、供

货商、卡号资源等,影视娱乐领域中的演

员、导演、电影、剧场等。2.1图数据库概述■图数据库中核心数据要素(续)

(Edge)

:

指节点之间的关系。■订购关系■朋友关系■道路连通关系■演员与电影之间的参演关系■计算机与计算机之间的网络连接关系■物品与物品之间的构成关系■银行账号之间的转账关系

■等

等图数据库中核心数据要素(续)■属性

(Property):

指描述节点或边特征的信生

的属性

?2.1图数据库概述■图数据库中核心数据要素佥

(

L

a

bel)

:指节点

、天系

的类别。如

;下

上人

T

示不问尖

反大系、参演大系寺,有

的别

,2.1图数据库概述2.1图数据库概述■图灵奖获得者Charles

Bachman—

网状数据库之父早在1970年就提

出网状数据库,模型表达能力很

强,但结构复杂、查询语言不易

掌握和使用,数据操作也较为复

杂,并未普及开来。■

大数据时代图无处不在,图数据

库技术如雨后春笋般高速发展,

用以支持图数据的事务型处理和

分析型处理。网状数据库之父、

图灵奖获得者—

Charles

Bachman□

include

secondary

databasemodels34systems

in

ranking,November

2019RankNov

(

Oct

Nov

201920192018DBMSDatabase

ModelScoreNov

2019Oct

Nov

201920181.

1.1.Neo4j+Graph50.53+1.07+7.412.

2.2.MicrosoftAzureCosmosDB+Multi-model31.98+0.65+9.943.

3.3.OrientDBMulti-model

L5.38

+0.25-0.414.

4.4.ArangoDB+Multi-model

i5.02

+0.14

+0.875.

5.5.Virtuoso+Multi-model2.63

-0.09+0.266.

6.6.JanusGraphGraph1.80

+0.15+0.687.7.个8

.Amazon

NeptuneMulti-model1.60

+0.23

+0.558.

8.个9.GraphDB+Multi-model

C1.13

+0.02

+0.459.

9.个12.Dgraph

+Graph1.04

-0.03+0.5310.个11.个1

4.TigerGraph

+Graph1.01

+0.07

+0.60■DB-Engines

Ranking发布的2019年11月图数据库(Graph

DBMS)排

名https://db-engines.com/en/ranking/graph+dbms2.1图数据库概述■

图数据库按照底层采用的存储技术分为两类。■原生图存储类■采用非关系模型,并针对图数据专门进行了性能优化■一般采用免索引邻接的方式进行图数据存储,数据存储

机制可快速寻址定位到相关连的节点、关系,此种存储

方式性能大大提高,可以很好地支持原生图处理引擎进

行图数据计算,秒级

可遍历百万级节点。此类数据库典

型代表为Neo4j、TigerGraph等。■

非原生图存储类■指底层采用键值数据库、文档数据库、列族数据库或者其他类型通用数据库存储图数据。■通常需要建立全局索引来提高图数据的访问性能。2.1图数据库概述2.1图数据库概述■图数据库面临的挑战主要是大规模图数据的高效存储与复杂的图操作技术。■不同图数据库实现技术与使用方法会有所差异,图数据库包含的共性关键技术主要包含如下方面■点、边、属性等基础数据的CRUD

操作■元数据管理、索引管理■事务管理■查询语言■节点ID

生成策略■大规模数据批量操作■基于路径的图遍历操作■

监控管理、备份与恢复操作等目前排名第一的Neo4j数据库是用Java实现的开源图数据库。曰

2

0

5

Z

0

0

7

及巾1

,

开B

i

D

。力品区版和正业放,社区版八又持平机卟者,能

限。正

业又付土从及制以与刀沟,巴百丁官理

一共寸文十田、独人的

能。床柱土女人INCU4J例刀治日奴佰件个H大天H以o2.1图数据库概述2.2图关键数据存储逻辑架构■从数据存储角度来讲,不同类型的图数据库底层的图数据

存储模型会有所差异。本节主要以Neo4j为例来介绍图数据

库的底层存储模型总体设计思路maptorecords

data

inPathsmapto

Relationships

recordsdatainordermapfrom

organizehave

NodeshavePropertiesGraphDatabase

Traversalmanages

manages

navigates

identifiesexpressesIndexesGraphAlgorithm2.2图关键数据存储逻辑架构■节点之间的关系通常包含一个起始节点、

一个终止节点、

关系类型及0个或多个属性。■关系类型用名称作为唯一标识。■每个关系有且只有一个关系类型。■通过关系可以找到很多关联的数据,比如节点集合、相同

类型的关系集合以及它们的属性集合。A

Relationshiphas

a

has

a

hasacan

haveStart

node

End

node

Relationshiptype

Propertiesuniquelyidentified

byName字符串类型数据。■

属性值可以是字符型、字

符串型、整数类型、实数

类型等基础数据类型的值

,也可以是元素为基础数

据类型的数组。但每个节点和关系的属性

模式又是自由的、不固定

的,每个节点或关系都可

以定义自己特有的描述属

性;

73A

Propertyhasa

has

aValue

Key(can

be

an

array

ofcanbeais

abooleanbyteshortintPrimitive

longfloatdoublecharString2.2图关键数据存储逻辑架构Neo4j属性是由Key-Value键值对组成的,键名称

为2.2

图关键数据存储逻辑架构Neo4j

数据模型中标签是类别的概念,不同的节点与关系可

以具有相同的节点标签与关系类型标签■

标签概念可以理解为关系数据库中表的概念,通过标签可以

找到同类型的节点或关系。标签示例如图所示一个节点可以具有零个或多个类别标签;而一个关系必须有

且只有一个关系类型。previous

relationshipfor

start

nodeend

nodePerson

Node

1)

LIKESNode

2name:"Alice"name:"Bob"|startrelationship

fornodeendnodePersonage:25next742.2

图关键数据存储逻辑架构Neo

4j每条路径由一个起始节点、一个终止节点、从起始节点到终止节点经过的1条或多条边及关联

节点构成。图中任意两个节点间如果是可达的,则

两节点间存在一条或多条路径。A

Pathhas

acan

contain

one

or

morehasanStart

Node

RelationshipEndNodeaccompanied

by

aNode752.2图关键数据存储逻辑架构路径的长度指路径中包含边的数量,如图所示,

节点1到节点2的路径长度为1,节点1到节点7的路

径长度为2。

节点1节点2

节点3

节点4节点5节点6

节点7节点8遍历一张图就是按照一定的查询规则,跟随关系,

访问关联的节点集合。大多数情况下只是部分和图

数据操作相关的子图内容被访问到。■Neo4j提供了遍历的API,可以指定遍历规则,如按

照广度优先还是深度优先遍历图数据2.2

图关键数据存储逻辑架构对于能够抽象成节点及其关系的典型图结构数据而言

,利用图数据模型采用图数据库进行存储的性能优势

。■

关系是最重要的元素,通过关系将节点相互关联起来

,Neo4j

有一个重要的特点是将关系预先保存到关系

列表中的免索引邻接机制,来保证关系查询的性能。

Neo4j数据库中的每个节点都会维护与它相邻节点的

引用。因此每个节点都相当于与它相邻节点的微索引

,查询时间与图的整体规模无关,只与它附近节点的

数量成正比,这比使用全局索引的代价小很多。77■

图数据库作为NoSQL

中重要的一类,灵活的图数据

存储模型是其突出的特点,不强调必须先设计完备

的图数据存储模型再存储数据。但从基于图数据库进行应用系统架构设计角度,仍

需要借助一定的建模方法,对业务需求进行分析,

从业务管理功能、业务流程中梳理出图结构业务数

据并采用一定的形式化方法进行建模表述。■

用简单、清晰的描述方法使得业务人员与技术人员对图数据存储模型达成共识,从而降低项目实施风险

。■

模型可以根据业务需求随时改变。2.3属性图模型78对比角度关系数据模型图数据模型数据结构关系模型:表、字段、主键、外键、关联属性图模型:节点、边、属性、标签数据操作关系代数:并、交、差、

笛卡尔积、选择、投影、连

接等图代数:可达性查询;

最短路径查询;图节点、

边、关系的增、删、改、

查、排序等数据的完

整性约束条件实体完整性、参照完整性、用户自定义完整性条件约束:唯一性约束,如标签为Person的电话号码属性不能重复等2.3属性图模型■图数据模型与关系数据模型差别较大,对比如表所示792.3属性图模型■

Neo4j中

的NorthWind数据集实体关系模型Order

Details7

OrderID

ProductID

UnitPriceQuantityDiscountOrders

订单置OrderIDCustomerIDEmployeeIDOrderDateRequiredDateShippedDateShipViaFreightShipNameShipAddressShipCityShipRegionShipPostalCodeShipCountryShippers

ShipperIDCompanyNamePhoneCategories

CategoryIDCategoryNameDescriptionPicture客户CustomersCustomerIDCompanyNameContactNameContactTiteAddressCityRegionPostalCodeCountryPhoneFaxCustomerCustomerDemo

CustomerID

CustomerTypeIDCustomerDemographicsCustomerTypeIDCustomerDesc产品

Products

ProductID

ProductNameSupplierIDCategoryIDQuantityPerUnitUnitPriceUnitsInStock

UnitsOnOrder

ReorderLevel

DiscontinuedEmployees

EmployeeID

LastNameFirstNameTiteTiteOfCourtesyBirthDateHireDateAddressCityRegionPostalCode

CountryHomePhone

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论