一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

分布式数据查询方法、装置和设备与流程

2022-06-01 05:30:09 来源:中国专利 TAG:


1.本发明涉及通信及云计算技术领域,尤其涉及一种分布式数据查询方法、装置和设备。


背景技术:

2.hbase是一种具有良好扩展性,面向列的分布式数据库,在数据存储检索方面占据着重要的地位。
3.hbase的中等对象(medium object,mob)存储特性引入对于中等大小的文档、图像等文件的存储,可降低读取延迟和写入访问时间,通过分离文件的输入输出(input output,io)路径和mob文件对象,对文件采用不同的压缩策略,从而减少由于hbase压缩造成的写放大问题。若一个表的mob文件存储在mob区域中,则意味着该区域中将存在大量的mob文件。
4.然而,使用hbase mob特性存储海量文件时存在一个很明显的问题,就是对于大文件甚至超大文件不能友好支持,而业务系统经常面对的是杂乱无章、大小不等的各种文件,现有大数据存储系统不能很好的支持这种数据的存储和查询。


技术实现要素:

5.有鉴于此,本发明提供一种分布式数据查询方法、装置和设备,用于解决大数据系统不能很好支持海量大小不一的文件的存储和查询的技术问题。
6.基于本发明实施例的一方面,本发明提供了一种分布式数据查询方法,该方法包括:
7.接收文件查询请求,从所述文件查询请求中获取文件信息,使用所述文件信息基于预设的行键值组合规则构造用于查询的行键值;
8.使用构造的行键值在分布式列数据库的查询表中进行行键值匹配;
9.当在查询表中匹配到记录时,基于所述预设的行键值组合规则解析匹配的记录的行键值,判断匹配的记录的行键值中的标识符是否指示文件尺寸小于预设阈值;
10.当文件尺寸小于所述预设阈值时,直接从匹配的记录的数据字段的键值value字段中读取查询到的文件内容;
11.当文件尺寸不小于所述预设阈值时,直接从匹配的记录的数据字段的路径path字段获取文件的存储路径,根据所述存储路径从分布式文件系统中读取查询到的文件内容。
12.进一步地,所述预设的行键值组合规则至少包括文件名、文件时间和标识符,所述标识符用于指示文件尺寸是否小于预设阈值;所述文件查询请求中的文件信息至少包括文件名称或“文件名称 文件时间”。
13.进一步地,所述当文件尺寸小于所述预设阈值时,直接从匹配的记录的数据字段的键值value字段中读取查询到的文件内容后还包括:
14.对读取的键值value字段的内容进行了解压缩和反序列化的处理从而还原出原始
文件内容。
15.进一步地,所述的分布式列数据库为hbase或cassandra,所述分布式文件系统为hdfs或amazon s3。
16.基于本发明实施例的另一方面,本发明还提供了一种分布式数据查询装置,该装置包括:
17.请求接收模块,用于接收文件查询请求,从所述文件查询请求中获取文件信息,使用所述文件信息基于预设的行键值组合规则构造用于查询的行键值;
18.匹配判断模块,用于使用构造的行键值在分布式列数据库的查询表中进行行键值匹配;当在查询表中匹配到记录时,基于所述预设的行键值组合规则解析匹配的记录的行键值,判断匹配的记录的行键值中的标识符是否指示文件尺寸小于预设阈值;
19.第一获取模块,用于当文件尺寸小于所述预设阈值时,直接从匹配的记录的数据字段的键值value字段中读取查询到的文件内容;
20.第二获取模块,用于当文件尺寸不小于所述预设阈值时,直接从匹配的记录的数据字段的路径path字段获取文件的存储路径,根据所述存储路径从分布式文件系统中读取查询到的文件内容。
21.进一步地,所述预设的行键值组合规则至少包括文件名、文件时间和标识符,所述标识符用于指示文件尺寸是否小于预设阈值;所述文件查询请求中的文件信息至少包括文件名称或“文件名称 文件时间”。
22.进一步地,所述第一获取模块还用于对读取的键值value字段的内容进行了解压缩和反序列化的处理从而还原出原始文件内容。
23.基于本发明实施例,本发明还提供一种电子设备,包括处理器、通信接口、存储介质和通信总线,其中,处理器、通信接口、存储介质通过通信总线完成相互间的通信;
24.存储介质,用于存放计算机程序;
25.处理器,用于执行存储介质上所存放的计算机程序时,实施本发明提供的分布式数据查询方法的各个步骤。
26.本发明在创建索引文件时,根据预设的文件大小阈值来决策文件数据内容是存储在分布式列数据库的键值value字段还是存储在分布式文件系统指定目录中,并在分布式列数据库行键中增加标识符来指示文件数据的存储位置。在进行数据查询时,根据行键中的标识符来分别从分布式列数据库或分布式文件系统中读取查询到的文件。本发明综合利用了分布式文件系统存储大文件的优势以及分布式列数据库存储小文件的优势,提高了系统整体对各种尺寸海量文件数据的存储和查询性能。
附图说明
27.为了更加清楚地说明本发明实施例或者现有技术中的技术方案,下面将对本发明实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本发明实施例的这些附图获得其他的附图。
28.图1为本发明一实施例提供的一种分布式数据查询方法实现原理示意图;
29.图2a-图2b为本发明一实施例提供的查询表的表结构示意图;
30.图3为本发明一实施例提供的分布式数据查询方法的步骤流程示意图;
31.图4为本发明一实施例提供的用于实现本发明实施例提供的分布式数据查询方法的电子设备结构示意图。
具体实施方式
32.在本发明实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本发明实施例。本发明实施例中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。本发明中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
33.应当理解,尽管在本发明实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
34.本发明目的是提出一种分布式数据查询方法和装置及实现方法的设备,以实现各种尺寸海量文件数据的高效地存储和查询,不仅支持中小文件的存储和检索还支持大文件甚至超大文件的存储和检索,同时提供较高的存储性能
35.本发明的基本思想是:在创建索引文件时,根据预设的文件大小阈值来决策文件数据内容是存储在分布式列数据库的键值value字段还是存储在分布式文件系统指定目录中,并在分布式列数据库行键rowkey中增加标识符来指示文件数据的存储位置。在进行数据查询时,根据行键中的标识符来获知数据存储位置。本发明技术方案巧妙利用分布式文件系统(例如hdfs、amazon s3等)存储大文件的优势以及分布式列数据库(例如hbase、cassandra等)存储小文件的优势,综合了两种存储方式的优势,提高系统整体对各种尺寸海量文件数据的存储和查询性能。
36.基于本发明的基本思想,以下结合附图和具体实施例来描述本发明的具体实现过程。
37.图1为本发明一实施例提供的一种分布式数据查询方法实现原理示意图。基于本发明基本思路,在海量的文件入库之前需要经过文件大小尺寸的阈值判断,对于超过阈值的大文件,实际文件数据内容会存储在分布式文件系统(例如hdfs)中,同时会在分布式列数据库(例如hbase)中的查询表中记录文件的行键rowkey以及文件存储路径;对于未超过阈值的小文件,文件数据内容会直接存储在分布式列数据库中的查询表中的键值value字段中。在需要读取文件内容时,可通过文件名或文件名 文件创建时间在匹配查询表中的行键字段从而定位到文件,再基于行键中的文件位置标识符(简称标识符)来判定文件存储位置,进而从查询表或分布式文件系统中读取文件内容。
38.图2a-图2b为本发明一实施例提供的查询表的表结构示意图。原始入库的文件可以是各种格式的数据文件,文件大小不一,在数据入库前,首先对数据文件进行扫描,结合分布式列数据库hbase的表键值value字段存储空间上限选择一个适合的值作为控制文件数据内容存储位置的阈值,文件尺寸大于等于阈值的文件直接存储在hdfs(hadoop distributed file system,hadoop分布式文件系统)中,同时在hbase中的查询表新增一条
文件记录,文件记录的行键rowkey的结构可设计如下:
39.散列值 分隔符 文件名称 分隔符 文件日期 分隔符 标识符
40.示例:0110|filename1|20220101182221|n
41.其中,散列值(例如“0110”)为分布式列数据库用来控制文件均衡分布的哈希值,可为分布式列数据库表生成查询表记录时由数据库系统自动添加。分隔符(例如“|”)可选择任意适合做分隔符的字符,本发明不做限定。文件名称(例如“filename1”)及文件日期(例如“20220101182221”)用于唯一定位文件。文件日期可以是标识文件最新版本的日期,例如文件修改日期,可规整为统一的时间格式,例如:格式yyyymmddhhmmss代表由年月日时分秒组成的时间。一条文件记录的行键rowkey值亦可称为主键值,hbase支持根据主键值前缀匹配。
42.类型标识用来标识该文件尺寸是否超过阈值,可用来判断文件的存储位置,例如“y”代表在value字段中存储文件内容,“n”代表在hdfs文件系统中存储文件内容。文件尺寸超过阈值的文件数据内容存储在hdfs中,同时在键值value列中存储文件在hdfs上的完整存储路径,如图2a所示。文件尺寸没有超过阈值的文件,可先对文件进行压缩,以二进制流的形式存储到查询表的value列中,如图2b所示。
43.基于图2a和图2b的示例,以下以对指定业务目录下的文件数据入库为例描述文件入库的过程。
44.步骤301.扫描指定业务目录下是否有时间目录,如果有时间目录判定时间目录下是否有待入库文件,如果有待入库文件,则执行步骤302。
45.步骤302.扫描时间目录下的每一个文件,判断文件大小是否超过预配置的阈值(根据hbase mob特性的实现原理,建议设置阈值为10mb),如果小于该阈值,则执行步骤303,否则执行步骤304。
46.步骤303.在hbase的查询表中新增一条记录记为记录1,记录1的主键值由当前文件的文件名称、文件时间以及分隔符和标识符按预设的行键值组合规则组合而成,记录1的数据data字段的键值value为文件内容压缩转换后的二进制流数据;
47.假设文件名“微服务架构文件1”,文件时间为“20200512183020”,标识符为“y”用于标识文件小于阈值,记录1的示例如下:
48.rowkey:0000|微服务架构文件1|20200512183020|y
49.data:value:0x700x610x630x6b0x610x670x65
50.步骤304.将当前文件上传至hdfs指定目录下,在hbase的查询表中新增一条记录记为记录2,记录2的主键值由当前文件的文件名称、文件时间以及分隔符和标识符按预设的行键值组合规则组合而成,记录2的数据data字段中的存储路径字段值为当前文件在hdfs中的存储路径;
51.假设文件名“微服务架构2”,文件时间为“20200512183020”,标识符为“n”用于标识文件不小于阈值,文件在hdfs上的存储路径为“/eagle/202005/微服务架构2”,记录2的示例如下:
52.rowkey:0100|微服务架构2|20200512183020|n
53.data:path:/eagle/202005/微服务架构2
54.至此,执行上述步骤后,指定业务目录下的文件完成入库操作。
55.图3为本发明实施例提供的分布式数据查询方法的步骤流程示意图,该方法包括:
56.步骤310.接收文件查询请求,基于文件查询请求中携带的信息构造用于查询的文件行键rowkey值并在hbase查询表中进行匹配;其中,文件查询请求可包括文件名称或“文件名称 文件时间”;
57.文件行键rowkey用于在hbase的查询表中匹配行键字段值,扫描对应的hbase表,若匹配到记录则说明查询到所要的文件,若未匹配到记录则返回查询失败的结果。
58.步骤311.当在查询表中匹配到记录时,基于行键的组合规则解析匹配的记录的行键值,判断行键值中的标识符是否指示文件尺寸小于预设阈值,若是则执行步骤312,否则执行步骤313;
59.步骤312.当文件尺寸没有超过阈值时,直接从匹配的记录的数据data字段的键值字段中读取查询到的文件内容;
60.若文件内容存储键值value字段时进行了序列化和压缩,在读出value值后进行相应的解压缩和反序列化的处理,从而还原出原始文件内容。
61.参考hbase mob特性对存储在hbase中文件的支持情况,理想的二进制文件对象大小应该在100bk-10mb之间,超过10mb的文件hbase也能过进行存储但是效率相对较低。因此,建议的阈值为10mb,较大的文件建议直接存储在hdfs上,充分发挥hdfs文件存储的能力优势。
62.步骤313.当文件尺寸超过阈值时,从匹配的记录的数据data字段的路径path字段获取文件的存储路径,根据存储路径从hdfs中读取查询到的文件内容。
63.通过该实施例,可以很好的发挥分布式文件系统hdfs及hbase针对大小文件的存储性能优势,从而回避hbase对大文件处理性能的不足,以及hdfs在存储小文件是资源消耗过大的不足,通过hbase的索引机制,可以迅速查找到文件的位置,解决hdfs不支持文件检索能力的技术问题,发挥hdfs存储大文件的高容量、高可靠性、高并发的优势,能较好的支撑业务系统对文件查询的业务需求。
64.图4为本发明一实施例提供的用于实现本发明实施例提供的分布式数据查询方法的电子设备结构示意图,该设备400包括:诸如中央处理单元(cpu)的处理器410、通信总线420、通信接口440以及存储介质430。其中,处理器410与存储介质430可以通过通信总线420相互通信。存储介质430内存储有计算机程序,当该计算机程序被处理器410执行时即可实现本发明提供的分布式数据查询方法的各步骤的功能。
65.其中,存储介质可以包括随机存取存储器(random access memory,ram),也可以包括非易失性存储器(non-volatile memory,nvm),例如至少一个磁盘存储器。另外,存储介质还可以是至少一个位于远离前述处理器的存储装置。处理器可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processing,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
66.应当认识到,本发明的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术,包括配置有计算机程序的非暂时性存储介质在计算机程序中实现,其中如此配置的存储介质
使得计算机以特定和预定义的方式操作。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。此外,可按任何合适的顺序来执行本发明描述的过程的操作,除非本发明另外指示或以其他方式明显地与上下文矛盾。本发明描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。
67.进一步,所述方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本发明的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、ram、rom等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本发明所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本发明所述的方法和技术编程时,本发明还包括计算机本身。
68.以上所述仅为本发明的实施例而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献