《NOSQL数据库技术》课件第8章-列族数据库技术.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《NOSQL数据库技术》课件第8章-列族数据库技术.pptx》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- NOSQL数据库技术 NOSQL 数据库技术 课件
- 资源描述:
-
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
展开阅读全文