logo好方法网

数据处理方法及装置


技术摘要:
本说明书提供数据处理方法及装置,其中所述数据处理方法包括:接收待查询数据的读请求,其中,所述读请求包括读请求序列号和所述待查询数据的主键;在内存表中查询所述主键;在所述内存表中未查询到所述主键且所述读请求序列号满足第一预设条件的情况下,在行缓存中查  全部
背景技术:
日志结构合并树(Log-Structured  Merge-Tree,Lsm-Tree)存储引擎是很多现代 数据库的底层索引结构,该索引结构的基本思想是把数据的变更操作首先保存在内存中, 当内存中的数据规模到达一个阈值之后,将内存中的数据批量、有序地写入磁盘,并通过一 定的分层整理算法将新落盘的数据与老的数据做滚动合并。其中,在LSM-tree索引结构中, 数据是按照键值(Key-Value)对的方式进行存储的。每一个键(Key)中存储有对应的值 (Value),通过键名可以查找到相应的数据值(也称为数据项),进而可以对数据项进行一定 的操作。 在传统的Lsm-Tree系统中相同key的不同数据通常以多版本的形式区分,使用递 增的版本号来标识,内存表刷盘后,持久化层的数据依旧存在多版本的情况,在查询数据 时,根据写入顺序从新到旧一层一层查找,直到找到想要的数据,这个过程可能需要不止一 次I/O,严重影响数据查询的速度,进而极大地影响用户体验。 现有技术中查询数据时需要大量的时间,进而需要更简单更便捷的方法进行数据 的处理。
技术实现要素:
有鉴于此,本说明书实施例提供了一种数据处理方法。本说明书同时涉及一种数 据处理装置,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的技术 缺陷。 根据本说明书实施例的第一方面,提供了一种数据处理方法,包括: 接收待查询数据的读请求,其中,所述读请求包括读请求序列号和所述待查询数 据的主键; 在内存表中查询所述主键; 在所述内存表中未查询到所述主键且所述读请求序列号满足第一预设条件的情 况下,在行缓存中查询所述主键; 在所述行缓存中查询到所述主键的情况下,确定并返回所述主键对应的键值。 可选的,所述方法还包括: 在所述内存表中未查询到所述主键且所述读请求序列号未满足第一预设条件的 情况下,在块缓存中查询所述主键; 在所述块缓存中查询到所述主键的情况下,确定并返回所述主键对应的键值。 可选的,所述方法还包括: 在所述块缓存中未查询到所述主键的情况下,在持久化层中查询所述主键; 5 CN 111723092 A 说 明 书 2/14 页 在所述持久化层中查询到所述主键的情况下,确定并返回所述主键对应的键值; 在所述持久化层中未查询到所述主键的情况下,返回未查询成功消息。 可选的,所述方法还包括: 在所述行缓存中未查询到所述主键的情况下,在块缓存中查询所述主键; 在所述块缓存中查询到所述主键的情况下,确定并返回所述主键对应的键值。 可选的,所述方法还包括: 在所述块缓存中未查询到所述主键的情况下,在持久化层中查询所述主键; 在所述持久化层中查询到所述主键的情况下,确定并返回所述主键对应的键值; 在所述持久化层中未查询到所述主键的情况下,返回未查询成功消息。 可选的,所述第一预设条件包括:所述读请求序列号大于等于存储引擎的序列号 范围的最小值。 可选的,在确定并返回所述主键对应的键值之后,还包括: 在所述读请求序列号满足第二预设条件的情况下,将所述主键和所述键值写入到 所述行缓存。 可选的,所述第二预设条件包括:所述读请求序列号大于所述序列号范围的最大 值。 可选的,所述内存表包括活跃内存表和冻结内存表; 所述序列号范围通过下述步骤确定: 在所述活跃内存表转换为所述冻结内存表或根据所述冻结内存表中的数据冲刷 持久化层的情况下,获取所述冻结内存表中最大的序列号作为第一序列号,获取持久化层 中最大的序列号作为第二序列号; 根据所述第一序列号和所述第二序列号确定序列号范围,其中,所述第一序列号 为所述序列号范围的最大值,所述第二序列号为所述序列号范围的最小值。 可选的,根据所述冻结内存表中的数据冲刷持久化层,包括: 依次获取所述冻结内存表中每条数据的主键; 在所述行缓存和持久化层中删除所述主键对应数据。 可选的,在行缓存中查询所述主键,包括: 根据预设的哈希函数将所述主键转换为对应的主键哈希值; 根据所述主键哈希值在所述行缓存中确定所述主键对应的目标哈希桶; 在所述目标哈希桶中查询所述主键。 可选的,将所述主键和所述键值写入到所述行缓存,包括: 根据预设的哈希函数将所述主键转换为对应的主键哈希值; 根据所述主键哈希值在所述行缓存中确定所述主键哈希值对应的目标哈希桶; 将所述主键和所述键值对应写入到所述目标哈希桶。 可选的,所述内存表包括活跃内存表和冻结内存表; 在内存表中查询所述主键,包括: 在所述活跃内存表中查询所述主键; 在所述活跃内存表中查询到所述主键的情况下,确定并返回所述主键对应的键 值; 6 CN 111723092 A 说 明 书 3/14 页 在所述活跃内存表中未查询到所述主键的情况下,在所述冻结内存表中查询所述 主键; 在所述冻结内存表中查询到所述主键的情况下,确定并返回所述主键对应的键 值; 在所述冻结内存表中未查询到所述主键的情况下,确定在所述内存表中未查询到 所述主键。 根据本说明书实施例的第二方面,提供了一种数据处理装置,包括: 接收模块,被配置为接收待查询数据的读请求,其中,所述读请求包括读请求序列 号和所述待查询数据的主键; 内存查询模块,被配置为在内存表中查询所述主键; 行缓存查询模块,被配置为在所述内存表中未查询到所述主键且所述读请求序列 号满足第一预设条件的情况下,在行缓存中查询所述主键; 行缓存返回模块,被配置为在所述行缓存中查询到所述主键的情况下,确定并返 回所述主键对应的键值。 根据本说明书实施例的第三方面,提供了一种数据处理系统,包括: 行缓存查询模块,被配置为接收待查询数据的读请求,其中,所述读请求包括读请 求序列号和所述待查询数据的主键,在内存表中未查询到所述主键且所述读请求序列号满 足第一预设条件的情况下,在行缓存中查询所述主键,在所述行缓存中查询到所述主键的 情况下,执行返回模块; 块缓存查询模块,被配置为在所述行缓存中未查询到所述主键或所述读请求序列 号未满足第一预设条件的情况下,在块缓存中查询所述主键,在所述块缓存中查询到所述 主键的情况下,执行返回模块; 持久化层查询模块,被配置为在所述块缓存中未查询到所述主键的情况下,在持 久化层中查询所述主键,在所述持久化层中查询到所述主键的情况下,执行返回模块,在所 述持久化层中未查询到所述主键的情况下,返回未查询成功消息; 写入模块,被配置为在所述块缓存或所述持久化层中查询到所述主键且所述读请 求序列号满足第二预设条件的情况下,将所述主键和所述主键对应的键值写入到所述行缓 存; 返回模块,被配置为确定并返回所述主键对应的键值。 根据本说明书实施例的第四方面,提供了一种计算设备,包括: 存储器和处理器; 所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行 指令: 接收待查询数据的读请求,其中,所述读请求包括读请求序列号和所述待查询数 据的主键; 在内存表中查询所述主键; 在所述内存表中未查询到所述主键且所述读请求序列号满足第一预设条件的情 况下,在行缓存中查询所述主键; 在所述行缓存中查询到所述主键的情况下,确定并返回所述主键对应的键值。 7 CN 111723092 A 说 明 书 4/14 页 根据本说明书实施例的第五方面,提供了一种计算机可读存储介质,其存储有计 算机可执行指令,该指令被处理器执行时实现任意所述数据处理方法的步骤。 本说明书提供的数据处理方法,接收待查询数据的读请求,其中,所述读请求包括 读请求序列号和所述待查询数据的主键;在内存表中查询所述主键;在所述内存表中未查 询到所述主键且所述读请求序列号满足第一预设条件的情况下,在行缓存中查询所述主 键;在所述行缓存中查询到所述主键的情况下,确定并返回所述主键对应的键值。 本说明书提供的数据处理方法,应用于Lsm-Tree架构的存储引擎中,通过设置行 缓存,通过判断读请求与存储引擎维护的序列号范围的关系,在行缓存中查询待查询数据 的key对应的value,并将value作为查询结果返回,有效地缩短了查询路径,极大地提高了 查询性能,通过维护更新序列号范围,确保行缓存中只保存最新版本的数据,实现了全局的 行缓存,对于指定的key可以直接从行缓存中查询对应的value,有效缩短读请求的读取路 径,提升查询性能。 附图说明 图1是本说明书一实施例提供的一种数据处理方法的流程图; 图2是本说明书一实施例提供的一种数据处理方法的架构示意图; 图3是本说明书另一实施例提供的数据处理方法的流程示意图; 图4是本说明书一实施例提供的一种数据处理装置的结构示意图; 图5是本说明书一实施例提供的一种数据处理系统架构图; 图6是本说明书一实施例提供的一种计算设备的结构框图。
分享到:
收藏