ImageVerifierCode 换一换
格式:PPTX , 页数:56 ,大小:1.82MB ,
文档编号:5818420      下载积分:15 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
系统将以此处填写的邮箱或者手机号生成账号和密码,方便再次下载。 如填写123,账号和密码都是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

优惠套餐
 

温馨提示:若手机下载失败,请复制以下地址【https://www.163wenku.com/d-5818420.html】到电脑浏览器->登陆(账号密码均为手机号或邮箱;不要扫码登陆)->重新下载(不再收费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  
下载须知

1: 试题类文档的标题没说有答案,则无答案;主观题也可能无答案。PPT的音视频可能无法播放。 请谨慎下单,一旦售出,概不退换。
2: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
3: 本文为用户(momomo)主动上传,所有收益归该用户。163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

1,本文(《NOSQL数据库技术》课件第8章-列族数据库技术.pptx)为本站会员(momomo)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!

《NOSQL数据库技术》课件第8章-列族数据库技术.pptx

1、目录目录概述概述1列族数据存储逻辑架构列族数据存储逻辑架构2列族数据库集群架构列族数据库集群架构3列族数据库应用列族数据库应用4小结小结518.1 概述概述2 本章学习内容本章学习内容思维导思维导图如下图如下8.1 概述概述 列族类数据库将数据存储在列族中,列族里的行通列族类数据库将数据存储在列族中,列族里的行通过过“行键行键”把相关列数据关联起来把相关列数据关联起来。相关的多个列组织相关的多个列组织在在一起一起形成形成列族,列族内的列数列族,列族内的列数据经常被一起访问据经常被一起访问。列族数据库列族数据库与与RDBRDB最大的区别就是采用纵向分割的最大的区别就是采用纵向分割的集群架构来存储

2、大数据,列可以集群架构来存储大数据,列可以动态灵活扩展。动态灵活扩展。列列族类数据库集群有的支持主从式,有的支持对等族类数据库集群有的支持主从式,有的支持对等式式。列列族数据库为了适应大数据的灵活存储及高性能访族数据库为了适应大数据的灵活存储及高性能访问需求,做了很多专门设计与优化。问需求,做了很多专门设计与优化。38.1 概述概述4n国际知名的数据库排名网站国际知名的数据库排名网站DB-Engines RankingDB-Engines Ranking发布的发布的20202020年年4 4月列族类月列族类数据库数据库(Wide column storesWide column stores)

3、排名排名结果结果 https https:/db- 概述概述著名列族数据库著名列族数据库 CassandraCassandra:最初:最初由由FacebookFacebook的的AvinashAvinash LakshmanLakshman(亚马亚马逊逊DynamoDynamo的作者之一的作者之一)和和Prashant MalikPrashant Malik共同共同开发,早开发,早期用于期用于储存收件箱等简单格式储存收件箱等简单格式数据。数据。CassandraCassandra集集Google Google BigTableBigTable的数据模型与的数据模型与Amazon Amazon

4、DynamoDynamo的对等分布式集群架构的对等分布式集群架构于于一身,一身,FacebookFacebook于于20082008将将 Cassandra Cassandra 开开源。源。最新正式版本最新正式版本3.11.63.11.6 官网:官网:httpshttps:/cassandra.apache.org:/cassandra.apache.org/CassandraCassandra分布式数据库分布式数据库强调强调CAPCAP理论中的理论中的APAP特性特性。数据类型非常丰富。数据类型非常丰富。58.1 概述概述著名列族数据库著名列族数据库 HBASEHBASE:源于源于Googl

5、e 2005Google 2005年的论文年的论文BigtableBigtable HBASEHBASE用用JavaJava编写。编写。HBASEHBASE在在HDFSHDFS之上运行,数据之上运行,数据库集群采用主从模式搭建,库集群采用主从模式搭建,HBaseHBase分布式数据库满足分布式数据库满足CAPCAP理论中的理论中的CPCP特性特性。最新版本最新版本2.2.42.2.4 官网:官网:httphttp:/hbase.apache.org:/hbase.apache.org/目标:目标:very very large tables-billions of rows X million

6、s of large tables-billions of rows X millions of columns columns 相比相比CassandraCassandra,数据类型简单,每个值是一个未经,数据类型简单,每个值是一个未经解释的字符串,解释的字符串,没有细分数据类型没有细分数据类型,用户需要自行,用户需要自行进行数据类型进行数据类型转换和解析。转换和解析。678.1 概述概述著名列族数据库著名列族数据库 Alibaba Cloud Table Alibaba Cloud Table Store:Store:基于阿里云平台提供的大基于阿里云平台提供的大表存储云服务表存储云服务 支

7、持数据分片,负载均衡机制支持数据分片,负载均衡机制 商用,按需付费,租用云服务存储大表数据商用,按需付费,租用云服务存储大表数据8.1 概述概述 列族数据库的一般列族数据库的一般特点特点 支持支持列族类大数据的高性能访问;列族类大数据的高性能访问;高可高可扩展性:可根据业务规模横向扩展,扩大扩展性:可根据业务规模横向扩展,扩大集群规模;集群规模;灵活的数据灵活的数据存储存储模式模式;按时按时间间戳可存储数据的戳可存储数据的多个多个版本;版本;便捷的便捷的数据复制分发机制,保障数据的高可用数据复制分发机制,保障数据的高可用性;性;支持轻量级支持轻量级事务;事务;为不同开发语言提供了丰富的数据访问

8、为不同开发语言提供了丰富的数据访问APIAPI88.1 概述概述 CassandraCassandra相比其他主从式列族数据库的特点及相比其他主从式列族数据库的特点及优点优点 没有没有单点故障单点故障:采用去中心化的环形拓扑存储,节:采用去中心化的环形拓扑存储,节点与节点之间是对等关系,无主从之点与节点之间是对等关系,无主从之分。分。提供提供了丰富的数据类型了丰富的数据类型,也支持用户自定义类型。,也支持用户自定义类型。提供提供灵活的查询语言灵活的查询语言:CassandraCassandra查询语言(查询语言(CQLCQL)支持物化视图:支持物化视图:4.04.0版本后可以在基表上构建版本后

9、可以在基表上构建MVsMVs。快速快速写入写入:CassandraCassandra写入性能非常高,支持负载均写入性能非常高,支持负载均衡策略,它执行快速写入,并可以存储数百衡策略,它执行快速写入,并可以存储数百TBTB的数的数据,而不牺牲读取效率据,而不牺牲读取效率。读写一致性级别可配置读写一致性级别可配置98.1 概述概述 CassandraCassandra支持支持多多数据数据中心(中心(DCDC)部署)部署10 可以调整节点布可以调整节点布局来提高数据中局来提高数据中心整体心整体安全性安全性 一一个数据中心出个数据中心出现问题时,备用现问题时,备用数据中心有每条数据中心有每条记录的完全

10、复制,记录的完全复制,可快速恢复,继可快速恢复,继续提供数据服务。续提供数据服务。目录目录概述概述1列族数据存储逻辑架构列族数据存储逻辑架构2列族数据库集群架构列族数据库集群架构3列族数据库应用列族数据库应用4小结小结5118.2 列列族数据存储逻辑架构族数据存储逻辑架构 CassandraCassandra、HBaseHBase的数据存储模型逻辑架构借鉴了的数据存储模型逻辑架构借鉴了谷歌谷歌 BigTableBigTable 的设计思想的设计思想 HBASE:HBASE:表的索引是行键、列族、列限定符和时间表的索引是行键、列族、列限定符和时间戳戳128.2 列列族数据存储逻辑架构族数据存储逻

11、辑架构 本节主要介绍本节主要介绍CassandraCassandra数据数据存储存储模型模型的的逻辑逻辑架构架构 逻辑模型主要包括以下四逻辑模型主要包括以下四个核心概念个核心概念138.2 列列族数据存储逻辑架构族数据存储逻辑架构 键键空间(空间(KeyspaceKeyspace)相当于相当于关系型数据库模型中的数据库,数据库集关系型数据库模型中的数据库,数据库集群中可以同时存储多个键空间。群中可以同时存储多个键空间。列列族(族(Column FamilyColumn Family,CFCF)相当于相当于关系型数据库中的表,但它比表更稀疏。关系型数据库中的表,但它比表更稀疏。行行(RowRow

12、)表示表示一个数据对象,存在于列族一个数据对象,存在于列族当中,一行数据当中,一行数据具有相同的行键。具有相同的行键。列列(ColumnColumn)相当于相当于属性,是存储的基本单元,可以存储几个属性,是存储的基本单元,可以存储几个不同时间戳的值。不同时间戳的值。148.2 列列族数据存储逻辑架构族数据存储逻辑架构 CassandraCassandra数据库中的数据存储数据库中的数据存储模型模型4 4个个层级:集群层级:集群、键空间、列族、列键空间、列族、列。不同不同术语与术语与RDBRDB中术语的对应中术语的对应关系关系 模型设计思想:本质是模型设计思想:本质是一个一个mapmap中嵌入另

13、一个中嵌入另一个mapmap,外部外部mapmap的的keykey为为row keyrow key,内部,内部mapmap的的keykey为为column column keykey,两个,两个mapmap的的keykey都是有序都是有序的的158.2 列列族数据存储逻辑架构族数据存储逻辑架构 实际应用系统中,存储大数据库必然离不开集群,将数据库实际应用系统中,存储大数据库必然离不开集群,将数据库系统中各个表分布式地存储在集群中各个节点系统中各个表分布式地存储在集群中各个节点上;上;将分区将分区概念(分区键)引入概念(分区键)引入数据库存储逻辑架构中,键空间数据库存储逻辑架构中,键空间存储结构

14、如存储结构如图所示;图所示;168.2 列列族数据存储逻辑架构族数据存储逻辑架构CassandraCassandra大大数据存储数据存储关键术语含义具体关键术语含义具体说明如下:说明如下:1 1键键空间空间:CassandraCassandra中数据的最外层容器,一个集中数据的最外层容器,一个集群可以包含多个键群可以包含多个键空间空间键空间键空间replicationreplication参数参数的两方面关键配置项:的两方面关键配置项:副本放置副本放置策略(策略(classclass):副本:副本放放在在DCDC中中的策略。的策略。简单策略简单策略:在一个数据中心的情况下:在一个数据中心的情况

15、下使用使用 网络拓扑策略网络拓扑策略:该策略用于多个数据中心。在此策略:该策略用于多个数据中心。在此策略中,必须分别为每个数据中心配置复制因子。中,必须分别为每个数据中心配置复制因子。复制因子复制因子(replication_factorreplication_factor):指放置在不同节点上的数据指放置在不同节点上的数据的副本数的副本数。超过超过两个复制因子能够很好地避免单点故障,保障两个复制因子能够很好地避免单点故障,保障数数据的高可用性。据的高可用性。综合综合考虑存储成本复制因子一般设置为考虑存储成本复制因子一般设置为3 3。178.2 列列族数据存储逻辑架构族数据存储逻辑架构 2 2

16、列列族族 列族是一个行集合的容器。每行包含有序列列族是一个行集合的容器。每行包含有序列。列族主要设置项有列族主要设置项有 KeyKey缓存、读修复概率、列的排序方缓存、读修复概率、列的排序方式式等等 通过行键访问各个列数据,每个列包含列名称、值和时通过行键访问各个列数据,每个列包含列名称、值和时间戳间戳188.2 列列族数据存储逻辑架构族数据存储逻辑架构19 2 2列族列族 一个存储用户信息的一个存储用户信息的useruser列列族族示例示例users=users=zhangzhang:/this is a key:/this is a key name:usernamename:userna

17、me,value:value:zhangzhang,timestamp:4342423timestamp:4342423 name:emailname:email,value:,value:,timestamp:4545645 timestamp:4545645 ,name:phonename:phone,value:18023656362,value:18023656362,timestamp:4342443 timestamp:4342443 ,wangwang:/this is a key:/this is a key name:usernamename:username,value:v

18、alue:wangwang,timestamp:4342423 ,timestamp:4342423 ,name:emailname:email,value:,value:,timestamp:4545645 timestamp:4545645 3 3列列 列是列是CassandraCassandra的基本数据结构,具有三个值,即键或列名的基本数据结构,具有三个值,即键或列名称、值和时间称、值和时间戳,构成三元组。戳,构成三元组。V1.1 V1.1 版本后版本后Cassandra Cassandra 列扩展列扩展了了TTLTTL(存活时间(存活时间)新属性。)新属性。列的名称可以是字符串类型,

19、也可以是数值等其他类型列的名称可以是字符串类型,也可以是数值等其他类型 将将一个一个ColumnColumn使用使用JSONJSON的形式表现出来,如下所示。的形式表现出来,如下所示。name:emailname:email,value:,value:,timestamp:4545645 timestamp:4545645 TimestampTimestamp的作用是用来解决数据冲突,根据时间戳判断的作用是用来解决数据冲突,根据时间戳判断哪个是最新的值;哪个是最新的值;208.2 列族数据存储逻辑架构列族数据存储逻辑架构 4 4键键 每一行数据记录是每一行数据记录是以列键以列键值对的形式存储的

20、,值对的形式存储的,其中其中KeyKey是唯一标识,也称为行键是唯一标识,也称为行键。数据数据存储是按行键排序的,可以对行键定义类型,不同存储是按行键排序的,可以对行键定义类型,不同类型的行键排序结果会有差异类型的行键排序结果会有差异。如给如给一个一个CassandraCassandra数据库中某个列数据库中某个列赋值:赋值:区分几个关键概念:区分几个关键概念:主主键、分区键、集群键(键、分区键、集群键(Clustering keyClustering key)218.2 列族数据存储逻辑架构列族数据存储逻辑架构8.2 列列族数据存储逻辑架构族数据存储逻辑架构n主键(主键(primary_ke

21、yprimary_key)n可以可以由一由一个列(个列(Single column Primary KeySingle column Primary Key)或)或多个多个列组成列组成,后者也称,后者也称组合键;组合键;primary_keyprimary_key:=:=partition_keypartition_key ,clustering_columnsclustering_columns n主键主键第一列或者部分称为第一列或者部分称为分区键(分区键(partition keypartition key)n分区键是分区键是主主键的一部分,每键的一部分,每行行数据都需要有;数据都需要有;

22、n作为一致哈希算法的参数,将数据分散到集群的作为一致哈希算法的参数,将数据分散到集群的 不同不同节点上;节点上;n分区键可以由多列构成,用括号括起来即可;分区键可以由多列构成,用括号括起来即可;如:如:PRIMARY PRIMARY KEY(KEY(k_part_onek_part_one,k_part_twok_part_two),),k_clust_onek_clust_one,k_clust_twok_clust_two)n主键其他主键其他列称为列称为Clustering keyClustering key或者或者clustering_columnsclustering_columns

23、决定相同决定相同 Partition Key Partition Key 数据在分区数据在分区内内的顺序,的顺序,默认为升默认为升序序,建表时可设置,建表时可设置排序的方式(排序的方式(DESC DESC 或或 ASCASC)。)。228.2 列列族数据存储逻辑架构族数据存储逻辑架构n5 5、静态列(、静态列(STATICSTATIC)n用于用于存储需要在集群不同节点分区中共享的数据列存储需要在集群不同节点分区中共享的数据列,所有,所有值均为最后一次更改后的值;值均为最后一次更改后的值;n表中定义表中定义列列为为 STATIC STATIC,只需在列最,只需在列最后面加上后面加上 STATIC

24、 STATIC:CREATE CREATE TABLE TABLE iteblog_users_with_status_updatesiteblog_users_with_status_updates(username text,username text,id id timeuuidtimeuuid,email text STATIC,email text STATIC,encrypted_passwordencrypted_password blob STATIC,blob STATIC,body text,body text,PRIMARY KEY(username,id PRIMARY

25、 KEY(username,id););n意味着意味着同一个同一个 username username 两两个静态列内容相同个静态列内容相同n静态静态列不能是主键的组成部分列不能是主键的组成部分 ;23什么时候需要静态列?Cassandra 中是不支持 join 的,静态列相当于把两张表进行了 join 操作;如果两张表关联度很大,而且经常需要同时查询这两张表,那就可以考虑使用静态列了。8.2 列列族数据存储逻辑架构族数据存储逻辑架构 如果表没有定义如果表没有定义 Clustering columnsClustering columns(又称(又称 Clustering keyClusteri

26、ng key),),这种情况是不能添加静态列的。如下:这种情况是不能添加静态列的。如下:cqlsh:iteblog_keyspacecqlsh:iteblog_keyspace CREATE TABLE CREATE TABLE iteblog_users_with_status_updates_invaliditeblog_users_with_status_updates_invalid(.username text,.username text,.id .id timeuuidtimeuuid,.email text STATIC,.email text STATIC,.encrypte

27、d_passwordencrypted_password blob STATIC,blob STATIC,.body text,.body text,.PRIMARY KEY(username)PRIMARY KEY(username).);.);如果没有定义如果没有定义 clustering columnclustering column,相同,相同 PRIMARY KEY PRIMARY KEY 的数的数据在同一个分区里面只存在一行数据,本质上就是静态的,据在同一个分区里面只存在一行数据,本质上就是静态的,所以也没所以也没必要支持静态列。必要支持静态列。24 注意:某个注意:某个CFCF内

28、所有内所有ColumnColumn都是按照它的都是按照它的NameName来来排序,不是按照排序,不是按照valuevalue排序排序。CassandraCassandra表设计时,有时可以将真正的值存为列名表设计时,有时可以将真正的值存为列名称,而将列的值置为空。称,而将列的值置为空。设计设计CassandraCassandra数据库时需要注意的数据库时需要注意的基本原则基本原则:(1(1)适当适当采用反范式设计和冗余数据来提高数据访问的便采用反范式设计和冗余数据来提高数据访问的便捷性;捷性;(2(2)主主键设计时,需考虑让数据尽可能均匀分布在集群的键设计时,需考虑让数据尽可能均匀分布在集群

29、的各个节点中;各个节点中;(3(3)分析分析业务常用操作,适应数据访问操作对模型设计进业务常用操作,适应数据访问操作对模型设计进行优化。行优化。258.2 列族数据存储逻辑架构列族数据存储逻辑架构目录目录概述概述1列族数据存储逻辑架构列族数据存储逻辑架构2列族数据库集群架构列族数据库集群架构3列族数据库应用列族数据库应用4小结小结5268.3 列列族数据库集群架构族数据库集群架构 NoSQLNoSQL数据库一般分两种集群架构数据库一般分两种集群架构 主从式集群主从式集群 节点分主、从节点分主、从 突出问题会出现单点故障问题突出问题会出现单点故障问题 列列族族NoSQLNoSQL数据库典型代表:

30、数据库典型代表:HBASEHBASE 对等对等式式集群集群 节点地位对等节点地位对等 不会出现单点故障问题不会出现单点故障问题 列族列族NoSQLNoSQL数据库数据库:CassandraCassandra278.3 列列族数据库集群架构族数据库集群架构 HbaseHbase 主从集群架构主从集群架构288.3.1 Cassandra对等式集群架构对等式集群架构 CassandraCassandra在后台使用在后台使用GossipGossip协议,允许节协议,允许节点相互通信并检测集点相互通信并检测集群中的任何故障群中的任何故障节点;节点;集群中的节点之间使集群中的节点之间使用数据用数据复制机

31、制,以复制机制,以确保没有单点故障,确保没有单点故障,如右图所示;如右图所示;29 CassandraCassandra架构架构设计基于设计基于Amazon DynamoAmazon Dynamo对等模式,对等模式,采用一致性哈希拓扑划分策略进行读写负载均衡采用一致性哈希拓扑划分策略进行读写负载均衡管理,集群中存储多个副本分布在各个节点管理,集群中存储多个副本分布在各个节点上。上。8.3.1 Cassandra对等式集群架构对等式集群架构 CassandraCassandra集群特点集群特点:节点对等的互连,都节点对等的互连,都扮演相同的角色;扮演相同的角色;集群集群中的每个节点都可以接收读取

32、和写入请求,中的每个节点都可以接收读取和写入请求,无论数据实际位于集群中的何处;无论数据实际位于集群中的何处;当节点关闭时,可以从网络中的其他节点提供读当节点关闭时,可以从网络中的其他节点提供读/写请求。写请求。集群支持多数据中心部署,一个集群支持多数据中心部署,一个DCDC可包含多个机可包含多个机架(架(RackRack),一个机架可包含多个节点。一个机架可包含多个节点。CassandraCassandra集群关键组件集群关键组件 提交日志提交日志 MemTableMemTable30 SSTableSSTable 布隆过滤器布隆过滤器8.3.1 Cassandra对等式集群架构对等式集群架

33、构 1 1)提交)提交日志日志(CommitLogCommitLog):是是CassandraCassandra中的崩溃中的崩溃恢复机制恢复机制。每个每个写操作都会写入提交日志,根据持久化的写操作都会写入提交日志,根据持久化的SSTableSSTable和和CommitLogCommitLog可以重构可以重构内存中内存中MemTableMemTable的的内容;内容;CommitLogCommitLog是是ServerServer级别,每一个节点上的级别,每一个节点上的CommitLogCommitLog都都统一统一管理;管理;每个每个CommitLogCommitLog文件的大小是固定的,称

34、为一个文件的大小是固定的,称为一个CommitLogSegmentCommitLogSegment,一般是,一般是128MB128MB;写操作写完写操作写完CommitLogCommitLog后会再写后会再写MemTableMemTable,当一个文件,当一个文件写满以后,会新建一写满以后,会新建一个个CommitLogCommitLog文件;文件;什么时候清理呢?什么时候清理呢?当当一个一个CommitLogCommitLog文件对应的所有文件对应的所有CFCF的的MemMemT Tableable都刷新到都刷新到磁盘后磁盘后,系统,系统会自动清除此类不再会自动清除此类不再需要的日志文件需要

35、的日志文件。31n2 2)MemTable:MemTable:一种内存结构一种内存结构,每个,每个CFCF对应一个对应一个MemTableMemTablen内容按照内容按照keykey排序排序n缓存写回机制缓存写回机制 :n满足满足一定条件后批量刷新到磁盘上,存储为一定条件后批量刷新到磁盘上,存储为SSTableSSTable;n下一下一次次MemtableMemtable需要刷新到一个新的需要刷新到一个新的SSTableSSTable文件文件中中 ;n优势优势:将随机将随机IOIO写变成顺序写变成顺序IOIO写,降低大量的写操写,降低大量的写操作对于存储系统的作对于存储系统的压力。压力。n可

36、以认为只有顺序写,没有随机写可以认为只有顺序写,没有随机写操作。操作。8.3.1 Cassandra对等式集群架构对等式集群架构n3 3)SStableSStable:存储位置在存储位置在diskdiskn按照按照keykey排序后存储排序后存储key/valuekey/value键值字符串键值字符串 ;nSStableSStable一旦完成写入,就不可变更,只能读取一旦完成写入,就不可变更,只能读取 ;n为了避免大量为了避免大量SSTableSSTable带来的性能影响,定期将带来的性能影响,定期将多个多个SSTableSSTable合并成一个新的合并成一个新的SSTableSSTable

37、,称之为称之为压压紧紧或或压压缩(缩(CompactionCompaction)。)。nCompactionCompactionnMerge keysMerge keysnCombine columnsCombine columnsnSSTableSSTable中的中的keykey都是已经排序好的,因此只都是已经排序好的,因此只需要做一次合并排序就可以完成该任务需要做一次合并排序就可以完成该任务 8.3.1 Cassandra对等式集群架构对等式集群架构SStable 的的data目录目录 nColumn Family Name-Column Family Name-序号序号-Data.dbD

38、ata.db SSTableSSTable数据文件数据文件,按照按照keykey排序后存储排序后存储key/valuekey/value键值键值nColumn Family Name-Column Family Name-序号序号-Filter.dbFilter.db Bloom FilterBloom Filter算法生产的映射文件算法生产的映射文件 ;Bloom FilterBloom Filter算法算法:快速定位待查询的快速定位待查询的keykey所属的所属的SSTableSSTablenColumn Family Name-Column Family Name-序号序号-index.

39、dbindex.db 索引文件,保存的是每个索引文件,保存的是每个keykey在数据文件中的偏移位置在数据文件中的偏移位置8.3.1 Cassandra对等式集群架构对等式集群架构8.3.1 Cassandra对等式集群架构对等式集群架构 集群中的写操作如集群中的写操作如图所示图所示35 首先首先写磁盘上的日志写磁盘上的日志文件文件CommitLogCommitLog 然后然后数据才会写入数据才会写入Column FamilyColumn Family在内存在内存中对应的中对应的MemTableMemTable中,中,MemTableMemTable满足一定条满足一定条件后批量刷新到磁盘件后批

40、量刷新到磁盘上,存储为上,存储为SSTableSSTable。用户用户可以在写完部分可以在写完部分副本而非全部副本而非全部N N个节个节点副本时,就返回写点副本时,就返回写入成功。入成功。写流程写流程n假设假设副本个数:副本个数:n nn写操作从客户端发送写操作从客户端发送给集群中的任何一给集群中的任何一个节点,该个节点,该节点将作为这次写操作的代理(节点将作为这次写操作的代理(CoordinatorCoordinator););n哈希分区器根据键计算对应的哈希分区器根据键计算对应的n n个副本节点;个副本节点;n代理节点会将代理节点会将写写请求发送给这请求发送给这n n个节点;个节点;n根据

41、写根据写操作的操作的ConsistencyLevelConsistencyLevel要求确定要求确定需要等待写需要等待写成功的节点成功的节点个数;个数;n代理代理节点等待这节点等待这n n个节点中的某些节点的写个节点中的某些节点的写响应,响应,当成功数满足一致性级别要求的数量时,则将当成功数满足一致性级别要求的数量时,则将写操写操作成功的作成功的消息返回客户端;消息返回客户端;8.3.1 Cassandra对等式集群架构对等式集群架构写写流程(续)流程(续)n这这n n个节点收到写请求后,做个节点收到写请求后,做2 2个操作:个操作:n追加追加CommitLogCommitLogn更新更新Me

42、mTableMemTablen所以写操作快的原因所以写操作快的原因:n写内存写内存n慢慢的部分仅仅是写日志的部分仅仅是写日志n后台有一些异步的事件可能发生:后台有一些异步的事件可能发生:nMemTableMemTable到阀值后要到阀值后要被被F Flushlush到到SStableSStablen同一同一个个CFCF的的多多个个SStableSStable被合并成一个大被合并成一个大的的SStableSStable8.3.1 Cassandra对等式集群架构对等式集群架构8.3.1 Cassandra对等式集群架构对等式集群架构 读数读数据过程据过程:需要去合并读取:需要去合并读取Colum

43、n FamilyColumn Family所有的所有的SSTableSSTable和和MemtableMemtable;BfBf确定待查确定待查找找K Keyey所在的所在的SStableSStable;IdxIdx确定确定keykey在在SStableSStable中的偏移中的偏移位置;位置;38读流程读流程n假设假设副本个数:副本个数:n nn读请求从客户端发送给一个节点,该节点作为代理,读请求从客户端发送给一个节点,该节点作为代理,根据根据读一致性级别配置,确定满足读一致性需求的节点个数读一致性级别配置,确定满足读一致性需求的节点个数k k,并发送读请求给并发送读请求给这这k k个节点个

44、节点,并返回并返回k k个中最新的数据。个中最新的数据。n对于每一个收到读请求的节点:对于每一个收到读请求的节点:n读取读取memtablememtablen扫描扫描SSTableSSTable nConsistencyLevelConsistencyLevelnONE ONE:返回:返回第一个响应第一个响应的节点上面的数据,不保证的节点上面的数据,不保证数据是数据是最新最新的;但是会做读修复,一致性检查,这样后续的调用能的;但是会做读修复,一致性检查,这样后续的调用能够得到最新的数据(有些延迟够得到最新的数据(有些延迟)。)。nQUORUM QUORUM:查询所有节点,返回至少查询所有节点,

45、返回至少/2+1/2+1 个节点中的最新的数据;也有读个节点中的最新的数据;也有读修复。修复。nALL ALL:查询所有节点,返回所有节点中最新的数据;:查询所有节点,返回所有节点中最新的数据;一个节一个节点失效将导致读点失效将导致读失败。失败。8.3.1 Cassandra对等式集群架构对等式集群架构8.3.1 Cassandra对等式集群架构对等式集群架构 CassandraCassandra集群集群中中R R、WW、N N分别表示读节点数、写节分别表示读节点数、写节点数与总节点数点数与总节点数,一致性级别可,一致性级别可由用户配置。由用户配置。R R、WW为为1 1,可用性最强,一致性最

46、差。,可用性最强,一致性最差。R R、WW为为N N,可用性最差,一致性最强。,可用性最差,一致性最强。在一致性要求高时,推荐在一致性要求高时,推荐R+WNR+WN;实时实时性要求高时,推荐性要求高时,推荐R+WNR+WN;在在实际应用中,经常设置为实际应用中,经常设置为2 2、2 2、3 3;CassandraCassandra对等集群中节点间会定期通过对等集群中节点间会定期通过GossipGossip协议协议向其他节点发送心跳信息,检查节点失效情况向其他节点发送心跳信息,检查节点失效情况。集群集群成员管理引入种子节点(成员管理引入种子节点(SeedNodeSeedNode)机制)机制。种子

47、种子节点作用节点作用就是让其它节点来认识到这个集群在哪里,就是让其它节点来认识到这个集群在哪里,如何与集群连如何与集群连上。上。408.3.2 Cassandra分区策略分区策略 Cassandra Cassandra 集群集群依赖依赖于分区策略将数据切分并分配到于分区策略将数据切分并分配到各个各个节点上,进行负载均衡;节点上,进行负载均衡;集群常用的两种集群常用的两种分区方式分区方式 范围范围分区(分区(Range PartitionRange Partition)哈希哈希分区(分区(Hash PartitionHash Partition)CassandraCassandra主要采用一致性

48、哈主要采用一致性哈希算法进行分区希算法进行分区 哈希空间使用一定位数的整型哈希空间使用一定位数的整型 ID ID(token token)来)来标识每一标识每一个分区。每个节点记录环上前驱个分区。每个节点记录环上前驱 token token 和后继和后继 token token 的位的位置,最大的置,最大的 token token 后面紧跟着最小的后面紧跟着最小的 tokentoken,从而形成了,从而形成了一个一个环;环;每个每个节点被节点被分配存储环分配存储环上的上的一个或多个一个或多个tokentoken;CassandraCassandra一个一个tokentoken是一个是一个646

49、4位整数,用于标识每个分区;位整数,用于标识每个分区;418.3.2 Cassandra分区策略分区策略 KeyKey映射到范围映射到范围是是0 0到到232232的值,形成的值,形成一个环一个环,叫做叫做HashHash空间环空间环,即即HashHash的值的值空间空间.定位数据访问节点方法定位数据访问节点方法:将将数据数据keykey使用相同使用相同的哈希函的哈希函数计算数计算出哈希出哈希值,确定值,确定此此数据在环上的位置,从此数据在环上的位置,从此位置位置沿环顺时针沿环顺时针“行走行走”,第一台遇到的服务器就是第一台遇到的服务器就是其要定位其要定位到的服务器到的服务器42 一致性哈希(

50、一致性哈希(Consistent HashingConsistent Hashing)算法原理简介)算法原理简介8.3.2 Cassandra分区策略分区策略43 如果每次哈希都是如果每次哈希都是顺时针方向游走顺时针方向游走定位环定位环上的第一上的第一个个节点,节点,游走是一个游走是一个计算耗时的过程计算耗时的过程 如何改进?如何改进?事先计算好事先计算好集群中的集群中的节点在整个节点在整个HashHash环负责存储环负责存储的的键空间范围;键空间范围;这样对这样对KeyKey进行进行hashhash后后,可以看它是落在可以看它是落在哪个哪个HashHash键范围上,根据键范围和键范围上,根据

侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|