《NOSQL数据库技术》课件第6章-键值类数据库技术.pptx
- 【下载声明】
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类型元素的类型元素的集合,不允
展开阅读全文