书签 分享 收藏 举报 版权申诉 / 58
上传文档赚钱

类型《NOSQL数据库技术》课件第6章-键值类数据库技术.pptx

  • 上传人(卖家):momomo
  • 文档编号:5818427
  • 上传时间:2023-05-11
  • 格式:PPTX
  • 页数:58
  • 大小:1.55MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《《NOSQL数据库技术》课件第6章-键值类数据库技术.pptx》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    NOSQL数据库技术 NOSQL 数据库技术 课件 键值
    资源描述:

    1、目录目录概述概述1键值数据存储逻辑架构键值数据存储逻辑架构2键值数据库管理键值数据库管理基础基础3键值数据库应用键值数据库应用4小结小结512目录目录 本章学习内容本章学习内容思维导思维导图如下图如下6.1 概述概述3n键值类键值类NoSQLNoSQL数据库使用简数据库使用简单键单键值方法来存储值方法来存储数据数据n键对应的值键对应的值可以是从简单对象到复杂复合对象的任可以是从简单对象到复杂复合对象的任何何内容内容n键值键值数据库一般采用数据库一般采用驻留内存的数据存储方式保障驻留内存的数据存储方式保障数据的高性能数据的高性能访问访问n 键键值类值类(Key/Value(Key/Value)数

    2、据库系统可理解为一个针对关数据库系统可理解为一个针对关联数组、字典或联数组、字典或hashhash表提供高吞吐数据存储、读取表提供高吞吐数据存储、读取和管理服务的数据库系统。和管理服务的数据库系统。6.1 概述概述4n国际知名的数据库排名网站国际知名的数据库排名网站DB-Engines RankingDB-Engines Ranking发布的发布的20202020年年3 3月月键值类数据库(键值类数据库(Key-value storesKey-value stores)排名)排名结果结果 httpshttps:/:/db- Dictionary ServerRemote Dictionary

    3、Server的的缩写,缩写,C C语言编写语言编写。n即远程字典即远程字典服务服务n由由Salvatore Salvatore SanfilippoSanfilippo开发开发n官方官方网站网站:http:/redis.io:http:/redis.ion可可基于内存亦可持久化基于内存亦可持久化的键的键值类值类数据库数据库n键值数据库高度可分区,相比其他类型的数据库键值数据库高度可分区,相比其他类型的数据库容易实现更大规模的水平扩展。容易实现更大规模的水平扩展。n很大很大程度上弥补了程度上弥补了MemcachedMemcached这这类基于内存键类基于内存键值存值存储的不足,对关系数据库起到很

    4、好的补充储的不足,对关系数据库起到很好的补充作用作用n广泛应用在各个行业广泛应用在各个行业WebWeb应用系统中应用系统中6.1 概述概述著名键值著名键值数据库数据库56.1 概述概述6n一般键值类一般键值类DBDB及及RedisRedis的综合技术特点的综合技术特点n高性能:高性能:KeyKey与与ValueValue之间之间通过哈希算法关联起来,以通过哈希算法关联起来,以达到快速查询的目的达到快速查询的目的,对应对应一一个个KeyKey,可以在时间复杂,可以在时间复杂度为度为1 1的情况下,找到的情况下,找到ValueValue在哪,并将其读取出来在哪,并将其读取出来。n操作简单:操作简单

    5、:提供提供丰富的丰富的APIAPI支持针对不同类型键值对的支持针对不同类型键值对的增、删、改、查管理增、删、改、查管理操作,操作,支持获取某个范围内的数支持获取某个范围内的数值、求差集、求并集、求交集等操作。值、求差集、求并集、求交集等操作。n支持多种数据结构类型的支持多种数据结构类型的键值键值存储:存储:如如RedisRedis数据库支数据库支持字符串、持字符串、双向列表、双向列表、hashhash表、集合、有序集合等类表、集合、有序集合等类型的存储结构型的存储结构,数据库,数据库中的值可以是二进制块、文本中的值可以是二进制块、文本、JSONJSON、XMLXML等内容等内容。n支持支持Ke

    6、yKey过期等管理特性过期等管理特性。6.1 概述概述7n一般键值一般键值类类DBDB及及RedisRedis的的综合技术综合技术特点特点(续续)n支持支持持久化操作持久化操作,如,如RedisRedis可以将内存中的键值数据持久化可以将内存中的键值数据持久化到磁盘,从而进行数据备份或数据恢复等操作,防止出现到磁盘,从而进行数据备份或数据恢复等操作,防止出现断电或系统崩溃后数据丢失的问题。断电或系统崩溃后数据丢失的问题。n支持支持事务管理事务管理,RedisRedis的所有操作都是原子性的,意思就是的所有操作都是原子性的,意思就是要么成功执行,要么失败完全不执行。单个操作是原子性要么成功执行,

    7、要么失败完全不执行。单个操作是原子性的,也提供包含多个操作的,也提供包含多个操作的批量执行命令的批量执行命令。n可可扩展性扩展性,很多键值数据库都采用分片技术,按照键进行,很多键值数据库都采用分片技术,按照键进行多种方式分片存储。多种方式分片存储。n高可用性高可用性,通过,通过主从集群复制机制主从集群复制机制,可以实时进行数据的,可以实时进行数据的同步复制,支持多级复制和增量复制,主从机制是同步复制,支持多级复制和增量复制,主从机制是RedisRedis进进行高行高可用性可用性保障的重要手段。保障的重要手段。n并并提供多种语言的提供多种语言的APIAPI6.1 概述概述8nRedisRedis

    8、采用主从集群、读写分离、哨兵机制、采用主从集群、读写分离、哨兵机制、主从主从复制等机制来保障键值类大数据存储的高可用性复制等机制来保障键值类大数据存储的高可用性6.1 概述概述9nhttps:/ Amazon DynamoDBDynamoDB 在大规模云存储集群上提供在大规模云存储集群上提供可靠的可靠的性能保障。性能保障。它是一种完全托管的多区域、多主表数据库它是一种完全托管的多区域、多主表数据库,可实现不到,可实现不到 10 10 毫秒的一致延迟,并提供内置的安全性毫秒的一致延迟,并提供内置的安全性、备份和还原以及内存中的缓存、备份和还原以及内存中的缓存。n在在 DynamoDBDynamo

    9、DB 中,项目包括一个主键或复合键,以及数中,项目包括一个主键或复合键,以及数量不限的属性。与单个项目相关联的属性数量没有明确量不限的属性。与单个项目相关联的属性数量没有明确限制,但项目的总大小(包括所有属性名称和属性值)限制,但项目的总大小(包括所有属性名称和属性值)不得超过不得超过 400KB400KB。表是数据项的集合,就好比关系数据表是数据项的集合,就好比关系数据库中的表是行的集合。每个表具有无限数量的数据项。库中的表是行的集合。每个表具有无限数量的数据项。目录目录概述概述1键值数据存储逻辑架构键值数据存储逻辑架构2键值数据库管理键值数据库管理基础基础3键值数据库应用键值数据库应用4小

    10、结小结5106.2 键值数据存储逻辑架构键值数据存储逻辑架构11n键键值数据库系统通过唯一标识记录的键(值数据库系统通过唯一标识记录的键(KeyKey)来)来迅速存储和读取单行记录中的数据,实现对关联数迅速存储和读取单行记录中的数据,实现对关联数组的高并发读写服务组的高并发读写服务。n键键值值数据库键数据库键值操作主要有以下三值操作主要有以下三类类nsetset(key,valuekey,value):将值存储到:将值存储到keykey对应的内存空间对应的内存空间中,然后就可以通过键访问到该值。如果键已有中,然后就可以通过键访问到该值。如果键已有数据,旧的数据将被替换。数据,旧的数据将被替换。

    11、ngetget(keykey):读取:读取keykey对应的数据,如果键不对应的数据,如果键不存在存在则报则报错。错。ndeldel(keykey):删除:删除keykey对应的键值数据对应的键值数据。nsetset、getget、deldel在不同的数据库中对应的命令名称在不同的数据库中对应的命令名称有差异有差异nRedisRedis中的键中的键n按照字符串对象类型存储按照字符串对象类型存储n具有唯一性,是具有唯一性,是KVKV数据分区的依据数据分区的依据n键命名可以用冒号间隔分段,表示不同键的关键命名可以用冒号间隔分段,表示不同键的关联性,如表名称:主键记录标识:字段名称联性,如表名称:主

    12、键记录标识:字段名称n可以设置有效期(可以设置有效期(Time to liveTime to live,TTLTTL)nRedisRedis可配置最大允许占用的内存空间,将超限可配置最大允许占用的内存空间,将超限或者键到期时,将涉及键的清除策略或者键到期时,将涉及键的清除策略n惰性惰性删除、定期删除删除、定期删除6.2 键值数据存储逻辑架构键值数据存储逻辑架构nRedisRedis 数据库细化了键值存储结构,主要提供了以下六数据库细化了键值存储结构,主要提供了以下六种数据结构种数据结构类型(简称数据类型)类型(简称数据类型)nRedisRedis数据存储结构针对需要解决的问题设计数据存储结构针

    13、对需要解决的问题设计nStringString:字符串类型字符串类型nList:List:列列表类型表类型nSet:Set:集合类型集合类型nHash:Hash:哈希类型哈希类型nZSetZSet:有序有序集合类型集合类型nStreamStream 流类型(流类型(5.05.0版本新增)版本新增)6.2 键值数据存储逻辑架构键值数据存储逻辑架构6.2 键值数据存储逻辑架构键值数据存储逻辑架构141 1StringString(字符串)(字符串)nString String 是是 RedisRedis 最基本的数据存储结构类型,与最基本的数据存储结构类型,与MemcachedMemcached键

    14、值数据库提供的字符串类型相同键值数据库提供的字符串类型相同。n一一个键对应一个值个键对应一个值。nString String 类型是二进制安全的,也就是说类型是二进制安全的,也就是说String String 可以是任可以是任何数据,如何数据,如jpgjpg格式图片、音频、视频等其他类型序列格式图片、音频、视频等其他类型序列化的对象,并不局限于通常意义上的字符序列数据,化的对象,并不局限于通常意义上的字符序列数据,确切地说是字符串数据对象确切地说是字符串数据对象。nString String 类型的值最大能存储类型的值最大能存储 512MB512MB。nStringString数据结构常用于常

    15、规的数据结构常用于常规的Key-valueKey-value缓存应用缓存应用及计数及计数等应用等应用场景,如存储微博数、粉丝数、销量等场景,如存储微博数、粉丝数、销量等6.2 键值数据存储逻辑架构键值数据存储逻辑架构151 1StringString(字符串)(字符串)nRedisRedis使用使用sdshdrsdshdr结构来表示字符串对象(结构来表示字符串对象(SDSSDS)structstruct sdshdrsdshdr intint lenlen;intint free;free;char char bufbuf;nfreefree属性:未使用的字节数量属性:未使用的字节数量。nSD

    16、SSDS实现了空间预分配和惰性空间释放两种策略,从而减少实现了空间预分配和惰性空间释放两种策略,从而减少由于字符串的修改导致内存重分配的次数由于字符串的修改导致内存重分配的次数。nRedisRedis也是采用也是采用StringString来存储数值类型值的,前提是字符串是来存储数值类型值的,前提是字符串是能够转换成合法的数值数据能够转换成合法的数值数据6.2 键值数据存储逻辑架构键值数据存储逻辑架构161 1StringString(字符串)(字符串)n一个用于存储当前用户访问量及当前用户数量最多的一个用于存储当前用户访问量及当前用户数量最多的城市的城市的KVKV数据结构如数据结构如图所示图

    17、所示n使用使用SETSET、GET GET 命令操作字符串类型命令操作字符串类型KVKV示例示例 redisredis 127.0.0.1:6379 SET name BUPT127.0.0.1:6379 SET name BUPT OKOK redisredis 127.0.0.1:6379 GET name127.0.0.1:6379 GET name BUPTBUPT6.2 键值数据存储逻辑架构键值数据存储逻辑架构172 2ListList(列表(列表)nRedisRedis 列表是简单的双向字符串列表,按照插入顺列表是简单的双向字符串列表,按照插入顺序排序序排序。n基本基本操做:操做:

    18、n添加添加一个元素到列表的头部(左边)或者尾部一个元素到列表的头部(左边)或者尾部(右边(右边)n从从列表左边或者右边取出列表列表左边或者右边取出列表元素元素n可用作队列(操作?)、栈式结构(操作?)可用作队列(操作?)、栈式结构(操作?)n列表列表最多可存储最多可存储 2 23232-1 -1 个个元素元素nListList可应用于存储并获取最新的评论列表、最后登可应用于存储并获取最新的评论列表、最后登录的录的N N个用户,获取最近个用户,获取最近N N天的活跃用户数等。天的活跃用户数等。6.2 键值数据存储逻辑架构键值数据存储逻辑架构182 2ListList(列表(列表)n一个用于存储最

    19、近访问用户标识的列表一个用于存储最近访问用户标识的列表KVKV数据结数据结构如构如图所示图所示redisredis lpushlpush latest10 u1 latest10 u1 (integer)1 (integer)1 redisredis lpushlpush latest10 u2 latest10 u2 (integer)2 (integer)2 redisredis lpushlpush latest10 u3 latest10 u3 (integer)(integer)3 3 redisredis lrangelrange latest10 0 3 latest10 0 3

    20、1)u31)u32)u22)u23)u13)u1lpushlpush执行从左边插入三个值,执行从左边插入三个值,lrangelrange执行按照一定下标范围获执行按照一定下标范围获取列表中的值,下标从取列表中的值,下标从0 0开始,开始,但执行结果从但执行结果从1 1开始列表开始列表显示。显示。6.2 键值数据存储逻辑架构键值数据存储逻辑架构193 3SetSet(集合(集合)nSetSet是是StringString类型的无序类型的无序集合集合n集合集合是通过哈希表实现的,所以添加、删除、查找是通过哈希表实现的,所以添加、删除、查找的复杂度都是的复杂度都是O(1O(1)n集合集合最多可存储最

    21、多可存储 2 23232 1 1个个元素元素n集合内元素具有唯一性,第二次插入的内容被忽略集合内元素具有唯一性,第二次插入的内容被忽略n通过通过saddsadd 命令命令添加元素添加元素n如果如果成功则返回成功则返回1 1n如果如果元素已经在集合中则返回元素已经在集合中则返回0 0nsmemberssmembers命令可查看集合中的所有命令可查看集合中的所有元素元素6.2 键值数据存储逻辑架构键值数据存储逻辑架构203 3SetSet(集合)(集合)n两个用于存储不同用户粉丝的集合结构键值数据如两个用于存储不同用户粉丝的集合结构键值数据如图所示图所示 redisredis saddsadd t

    22、settset 23 23 (integer)1 (integer)1 redisredis saddsadd tsettset 56 56 (integer)1 (integer)1 redisredis saddsadd tsettset 88 88 (integer)1 (integer)1 redisredis saddsadd tsettset 88 88 (integer)0 (integer)0 redisredis smemberssmembers tsettset 1)23 1)23 2)56 2)56 3)88 3)886.2 键值数据存储逻辑架构键值数据存储逻辑架构214

    23、 4HashHash(哈希(哈希)nHashHash数据结构类型的值是一个键值对集合数据结构类型的值是一个键值对集合。nHashHash是一个是一个 stringstring类型的类型的fieldfield和和value value 的映射的映射表表nValueValue是一个是一个MapMap。这个。这个MapMap的的KeyKey是属性是属性名,名,ValueValue是属性值,这样对数据的修改和存取都可以直接通是属性值,这样对数据的修改和存取都可以直接通过其内部过其内部MapMap的的KeyKey,RedisRedis也称其内部也称其内部MapMap的的KeyKey为为fieldfiel

    24、d,也就是,也就是通过哈希通过哈希KeyKey结合结合fieldfield操作对应属性值操作对应属性值nHashHash特别适合用于存储对象。特别适合用于存储对象。n每个每个 Hash Hash 可以存储可以存储 2 23232-1-1个键值对个键值对n基本操作基本操作nHMSETHMSET、HGET HGET设置、设置、读取读取哈希键的值哈希键的值n6.2 键值数据存储逻辑架构键值数据存储逻辑架构224 4HashHash(哈希)(哈希)n使用使用哈希数据结构存储用户信息的情景如哈希数据结构存储用户信息的情景如图所示图所示redisredis HMSET HMSET userInfouser

    25、Info name“tian”age 23 name“tian”age 23 birthday“1101”birthday“1101”OKOKredisredis HGET HGET userInfouserInfo name name“tian“tian redisredis HvalsHvals userInfouserInfo 1)tian1)tian2)232)233)11013)11016.2 键值数据存储逻辑架构键值数据存储逻辑架构23 5 5ZSetZSet(有序集合有序集合)nZSETZSET和和SetSet一样也是一样也是StringString类型元素的类型元素的集合,不允

    26、许集合,不允许有重复的成员有重复的成员n与与setset不同的是每个元素都会关联一个不同的是每个元素都会关联一个DoubleDouble类型的类型的数值数值(score)(score)nRedisRedis可以依据可以依据scorescore数值对集合中的成员进行排序数值对集合中的成员进行排序nZSetZSet的成员虽然要求唯一,但对应的排序数值可以的成员虽然要求唯一,但对应的排序数值可以重复重复n有序集合结构键值可应用于销量排名、积分排名等有序集合结构键值可应用于销量排名、积分排名等场景。场景。n操作:操作:ZADDZADD、ZRANGEBYSCOREZRANGEBYSCORE、6.2 键值

    27、数据存储逻辑架构键值数据存储逻辑架构24 5 5ZSetZSet(有序集合有序集合)n一个存储产品推荐排行榜的有序集合数据结构如一个存储产品推荐排行榜的有序集合数据结构如图图所示所示redisredis zaddzadd tzsettzset 0 red 0 redredisredis zaddzadd tzsettzset 0 blue 0 blueredisredis zaddzadd tzsettzset 1 1 yellowyellowredisredis zaddzadd tzsettzset 2 white 2 whiteredisredis ZRANGEBYSCORE ZRANG

    28、EBYSCORE tzsettzset 0 0 0 01)blue1)blue2)red2)redredisredis ZRANGEBYSCORE ZRANGEBYSCORE tzsettzset 0 0 2 21)blue1)blue2)red2)red3)yellow3)yellow4)white4)whiteZADDZADD语法语法:zaddzadd key score key score membermember其中其中scorescore为元素的排序数值,元为元素的排序数值,元素在集合中如果已存在,则更新素在集合中如果已存在,则更新对应的对应的scorescore6.2 键值数据存储

    29、逻辑架构键值数据存储逻辑架构25 6 6StreamStream(流(流)nRedisRedis Stream Stream是是5.05.0版本的重要改进,引入版本的重要改进,引入的一种新数的一种新数据结构据结构类型类型n是一个新是一个新的支持的支持多播多播的消息队列机制的消息队列机制n是是一一个消息链表,将个消息链表,将所有加入的消息都串所有加入的消息都串起来,每个消息都有起来,每个消息都有一个唯一的一个唯一的IDID和对和对应的应的内容内容n消息队列是消息队列是持久化的持久化的,RedisRedis重启后内容重启后内容还在还在6.2 键值数据存储逻辑架构键值数据存储逻辑架构26 6 6St

    30、reamStream(流(流):):流的创建与应用流的创建与应用n首先使用首先使用XADDXADD添加流元素,即创建添加流元素,即创建StreamStream,添加流元素时可指,添加流元素时可指定消息数量最大保存范围。定消息数量最大保存范围。n然后通过然后通过XGROUPXGROUP创建消费者组。创建消费者组。n消费者使用消费者使用XREADGROUPXREADGROUP指令进行消费。指令进行消费。n客户端消费完毕后使用客户端消费完毕后使用XACKXACK命令确认消息已消费成功命令确认消息已消费成功6.2 键值数据存储逻辑架构键值数据存储逻辑架构27 6 6StreamStream(流(流)n

    31、StreamStream允许允许消费者等待生产者发送的新消费者等待生产者发送的新数据数据n引入的消费者引入的消费者组概念,组之间数据是相同的,组内组概念,组之间数据是相同的,组内的消费者不会拿到相同数据,不同的消费者分别负的消费者不会拿到相同数据,不同的消费者分别负责部分数据的处理责部分数据的处理。n这种概念参考了这种概念参考了KafkaKafka,在,在某些特定场景可以使用某些特定场景可以使用RedisRedis的的StreamStream代替代替KafkaKafka等消息队列,减少系统的复等消息队列,减少系统的复杂性,增强系统的稳定性杂性,增强系统的稳定性。nstreamstream本质上

    32、是个时序本质上是个时序数据结构数据结构n每条记录是结构化、可扩展每条记录是结构化、可扩展的值对;的值对;n每条记录在日志中有唯一标识,标识中包含了时间戳信每条记录在日志中有唯一标识,标识中包含了时间戳信息,单调息,单调递增;递增;目录目录概述概述1键值数据存储逻辑架构键值数据存储逻辑架构2键值数据库管理键值数据库管理基础基础3键值数据库应用键值数据库应用4小结小结5286.3.1 持久持久化管理化管理29n键键值数据库的读写值数据库的读写方式一般分为方式一般分为面向内存的读写方式面向内存的读写方式和面向磁盘的读写方式和面向磁盘的读写方式两种两种nRedisRedis数据库在将数据保存在内存中保

    33、障数据高性能访数据库在将数据保存在内存中保障数据高性能访问的同时,也支持数据库持久化机制问的同时,也支持数据库持久化机制。nRedisRedis使用了两种文件格式分别存储全量数据和增量请使用了两种文件格式分别存储全量数据和增量请求数据求数据。n全全量数据格式量数据格式文件:把文件:把内存中的数据写入磁盘,便内存中的数据写入磁盘,便于下次读取文件进行加载于下次读取文件进行加载;n增量增量请求数据请求数据文件:把文件:把内存中的数据序列化为操作内存中的数据序列化为操作请求,用于读取文件进行重新请求,用于读取文件进行重新请求得到请求得到数据数据。1 1).RDB).RDB持久化持久化:该:该机制是指

    34、在机制是指在指定的时间间隔内将内存中的指定的时间间隔内将内存中的数据集快照写入磁盘数据集快照写入磁盘。优点:优点:1.1.只有一份只有一份rdbrdb文件,可随时备份文件,可随时备份 2.2.比比AOFAOF文件小,加载效率高文件小,加载效率高 3.3.提供提供forkfork子进程,不阻塞主进程,子进程,不阻塞主进程,IOIO操作比较少操作比较少 2 2).AOF).AOF持久持久化化:该该机制将以日志的形式记录服务器所处理的机制将以日志的形式记录服务器所处理的每一个写操作每一个写操作,在,在RedisRedis服务器启动之初会读取该文件来重新构服务器启动之初会读取该文件来重新构建数据库,以

    35、保证启动后数据库中的数据是完整的建数据库,以保证启动后数据库中的数据是完整的。优点:优点:1.1.每次改动同步数据,安全性好每次改动同步数据,安全性好 2.APPEND 2.APPEND方式追加日志,不会对旧日志文件产生影响方式追加日志,不会对旧日志文件产生影响 3 3).).无持久化无持久化:通过:通过配置的方式禁用配置的方式禁用RedisRedis服务器的持久化功能,服务器的持久化功能,这样可以这样可以将将RedisRedis视为一个功能加强版的视为一个功能加强版的memcachedmemcached了。了。4 4).).同时应用同时应用AOFAOF和和RDBRDB。6.3.1 6.3.1

    36、 持久化管理持久化管理 RedisRedis持久持久化方案化方案nRDBRDB手工触发手工触发nsavesave触发方式:触发方式:该命令会阻塞当前该命令会阻塞当前RedisRedis服务器,执行服务器,执行savesave命令期间,命令期间,RedisRedis不能处理其他命令,直到不能处理其他命令,直到RDBRDB过程过程完成完成为止为止n进行进行数据持久数据持久化过程化过程中中,先,先将数据将数据写入一写入一个临时文件个临时文件中,执行完后将新中,执行完后将新RDBRDB文件将替代旧的文件文件将替代旧的文件6.3.1 6.3.1 持久化管理持久化管理 RedisRedis持久持久化方案化

    37、方案nRDBRDB手工触发手工触发nbgsavebgsave触发触发方式(非阻塞):方式(非阻塞):执行该命令时,执行该命令时,RedisRedis会在后台异步进行快照会在后台异步进行快照操作操作n父父进程将不受快照操作的阻塞进程将不受快照操作的阻塞,实现依赖底层操作系,实现依赖底层操作系统的统的COWCOW(Copy On WriteCopy On Write)机制机制6.3.1 6.3.1 持久化管理持久化管理 RedisRedis持久持久化方案化方案6.3.1 持久持久化管理化管理33nRedisRedis数据存储涉及内存存储、磁盘存储和日志文件数据存储涉及内存存储、磁盘存储和日志文件三

    38、部分,三部分,配置文件(配置文件(redis.confredis.conf)中)中主要有三个参数主要有三个参数对其持久对其持久化机制及化机制及自动持久化的触发自动持久化的触发条件进行配置条件进行配置(1(1)save save seconds updatesseconds updates:指出:指出在多长时间内,有多少次在多长时间内,有多少次更新操作更新操作,就,就将数据同步到数据文件。将数据同步到数据文件。可以多个条件可以多个条件配合,默认配置文件中设置了以下三个条件。配合,默认配置文件中设置了以下三个条件。nsave save 900 1 900 1:服务器在:服务器在900s900s之内

    39、,对数据库进行了至少之内,对数据库进行了至少1 1次次修改。修改。nsave save 300 10300 10:服务器在:服务器在300s300s之内,对数据库进行了至少之内,对数据库进行了至少1010次修改。次修改。nsave save 60 1000060 10000:服务器在:服务器在60s60s之内,对数据库进行了至少之内,对数据库进行了至少1000010000次修改。次修改。6.3.1 持久持久化管理化管理34(2(2)appendonlyappendonly yes/no yes/no:即:即是否开启是否开启AOFAOF持久化存储方式持久化存储方式。如果如果不开启,可能会导致在断

    40、电时一段时间内的数据丢失。不开启,可能会导致在断电时一段时间内的数据丢失。RedisRedis默认值为默认值为nono,RedisRedis本身同步数据文件按本身同步数据文件按savesave配置条件同步配置条件同步,有的数据会在一段时间内只存在于内存中,有的数据会在一段时间内只存在于内存中。(3(3)appendfsyncappendfsync no/always/no/always/everyseceverysec:AOFAOF持久持久化三种配置化三种配置nalwaysalways:表示每次收到更新操作写命令后就立即写入磁盘:表示每次收到更新操作写命令后就立即写入磁盘,效率最差,效果最好,

    41、从安全性来说,故障只会丢失一,效率最差,效果最好,从安全性来说,故障只会丢失一个命令数据。个命令数据。neveryseceverysec:表示每秒同步写入磁盘一次,效率与效果居中:表示每秒同步写入磁盘一次,效率与效果居中,从安全性来说,故障只会丢失一秒的命令数据。,从安全性来说,故障只会丢失一秒的命令数据。nnono:从:从安全性来说,故障时会丢失上次同步安全性来说,故障时会丢失上次同步AOFAOF文件之后文件之后的所有写命令数据。的所有写命令数据。6.3.1 持久持久化管理化管理35nRDB RDB 的优势和劣势的优势和劣势、优势、优势(1 1)RDBRDB文件紧凑,全量备份,非常适合用于进

    42、行备份和灾难文件紧凑,全量备份,非常适合用于进行备份和灾难恢复恢复。(2 2)生成)生成RDBRDB文件的时候,文件的时候,redisredis主进程会主进程会fork()fork()一个子进程来一个子进程来处理所有保存工作,主进程不需要进行任何磁盘处理所有保存工作,主进程不需要进行任何磁盘IOIO操作操作。(3 3)RDB RDB 在恢复大数据集时的速度比在恢复大数据集时的速度比 AOF AOF 的恢复速度要快。的恢复速度要快。、劣势劣势n当当进行快照持久化时,会开启一个子进程专门负责快照持久进行快照持久化时,会开启一个子进程专门负责快照持久化,子进程会拥有父进程的内存数据,父进程修改内存子

    43、进化,子进程会拥有父进程的内存数据,父进程修改内存子进程不会反应出来,所以在快照持久化期间修改的数据不会被程不会反应出来,所以在快照持久化期间修改的数据不会被保存,可能丢失数据。保存,可能丢失数据。6.3.1 持久持久化管理化管理36nAOFAOF机制机制nRDBRDB全全量量备份持久化耗时相对长,备份持久化耗时相对长,AOFAOF工作机制比较简单工作机制比较简单,redisredis会将每一个收到的写命令都通过会将每一个收到的写命令都通过writewrite函数追加到文函数追加到文件中件中。6.3.1 持久持久化管理化管理37nAOFAOF机制机制nAOFAOF方式带来的问题,持久方式带来的

    44、问题,持久化文件会变的越来越大。为了化文件会变的越来越大。为了压缩压缩aofaof的持久化文件。的持久化文件。redisredis提供了提供了bgrewriteaofbgrewriteaof命令。将内命令。将内存中的数据以命令的方式保存到临时文件中,同时会存中的数据以命令的方式保存到临时文件中,同时会forkfork出一条新进程来将文件重写出一条新进程来将文件重写。n注意注意不会读取旧的不会读取旧的aofaof文件文件6.3.2 分区分区机制机制38n分区分区(分片分片)是是指如何合理分割大数据集到多个数据指如何合理分割大数据集到多个数据库实例的处理过程,每个数据库实例只保存全局键库实例的处理

    45、过程,每个数据库实例只保存全局键值数据库中值数据库中KeyKey的一个子集的一个子集。n分区分区优点优点n可以构建更大的数据库可以构建更大的数据库n充分利用多台服务器计算、存储、网络带宽能力进行负充分利用多台服务器计算、存储、网络带宽能力进行负载均衡载均衡n分区问题分区问题n当当应用分区的时候,应用分区的时候,数据处理复杂,比如需要数据处理复杂,比如需要处理多处理多个个RDB/AOFRDB/AOF文件,将分布在不同实例的文件聚集到一起文件,将分布在不同实例的文件聚集到一起n添加和删除服务器,涉及重新分区数据迁移过程复杂添加和删除服务器,涉及重新分区数据迁移过程复杂nDynamoDBDynamo

    46、DB数据库支持在建表时指定属性作为分区数据库支持在建表时指定属性作为分区键(键(Partition KeyPartition Key)。)。6.3.2 分区分区机制机制39nRedisRedis键键值类数据库的分区值类数据库的分区机制机制n范围范围分区(分区(range partitioning range partitioning):映射一定范围映射一定范围id id的对象到特定的的对象到特定的RedisRedis数据库实例。这种方式的不数据库实例。这种方式的不足就是需要有一个键区间范围到数据库实例的映足就是需要有一个键区间范围到数据库实例的映射表。这个表需要维护管理。射表。这个表需要维护管

    47、理。n哈希哈希分区(分区(hash partitioninghash partitioning):使用一个使用一个HashHash函函数将数将KeyKey转换为一个数字,比如使用转换为一个数字,比如使用crc32 hashcrc32 hash函函数,对键数,对键foobarfoobar执行执行crc32(crc32(foobarfoobar)会输出一个类似会输出一个类似9302492293024922的整数。如果有的整数。如果有4 4个数据库实例,则对这个数据库实例,则对这个整数按个整数按4 4取模,将其转化为取模,将其转化为0 0到到3 3之间的数字,就之间的数字,就可以将这个整数映射到可以

    48、将这个整数映射到4 4个个RedisRedis实例中的一个。实例中的一个。6.3.2 分区分区机制机制40n在键值数据库系统中执行分区任务的角色主要分为以在键值数据库系统中执行分区任务的角色主要分为以下三类。下三类。n1 1)客户端分区)客户端分区:即客户端按照分区算法计算得到数据会被:即客户端按照分区算法计算得到数据会被存储到哪个数据库节点或者从哪个数据库节点读取存储到哪个数据库节点或者从哪个数据库节点读取数据。数据。n2 2)代理分区)代理分区:意味着客户端将请求发送给代理,然后代理:意味着客户端将请求发送给代理,然后代理决定去哪个节点写数据或者读数据。代理根据分区规则决定决定去哪个节点写

    49、数据或者读数据。代理根据分区规则决定请求哪些数据库实例,然后将数据库节点的响应结果返回给请求哪些数据库实例,然后将数据库节点的响应结果返回给客户端。客户端。RedisRedis和和MemcachedMemcached的一种代理实现就是的一种代理实现就是TwemproxyTwemproxy。n3 3)查询路由)查询路由:指客户端随机:指客户端随机地将请求发送给任意地将请求发送给任意一个数据一个数据库实例,库实例,然后该数据库会将然后该数据库会将请求转发给正确的数据库节点。请求转发给正确的数据库节点。nRedisRedis Cluster Cluster实现的是一种查询路由与客户端分区混合实现的是

    50、一种查询路由与客户端分区混合的方式的方式6.3.3 集群监控集群监控41n键值类大数据存储与管理集群架构下服务器状态监控是键值类大数据存储与管理集群架构下服务器状态监控是数据库系统的关键数据库系统的关键任务任务nRedisRedis数据库主从架构数据库主从架构中采用哨兵中采用哨兵(SentinelSentinel)监控管理)监控管理机制机制nRedisRedis哨兵是一个分布式系统,可以在一个架构中运行哨兵是一个分布式系统,可以在一个架构中运行多个哨兵多个哨兵进程进程nRedisRedis主从集群架构主从集群架构n读写分离读写分离n从节点也可以有从节点从节点也可以有从节点n主、从节点均部署主、

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:《NOSQL数据库技术》课件第6章-键值类数据库技术.pptx
    链接地址:https://www.163wenku.com/p-5818427.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


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

    163文库