关系型数据库的数据存储、查询方法、装置、设备和介质制造方法及图纸

技术编号:38833277 阅读:18 留言:0更新日期:2023-09-17 09:51
本发明专利技术提供了一种关系型数据库的数据存储、查询方法、装置、设备和介质,涉及数据库技术领域,其中,该方法包括以下步骤:设置不同数据模式对应的数据模型,通过数据模型接收对应数据模式的待存储数据;在数据模型调用存储引擎的接口时,在存储引擎层根据数据模型对应的数据模式,将数据模型接收的待存储数据展成任意长度的字段列表;将字段列表中的所有字段名按照字母顺序排序后生成一个字符串,并生成字符串的编码,编码和字符串形成一个组合;根据组合的编码与内存中已缓存编码的重复情况,确定组合唯一的ID。该方案通过动态模式管理,解决了关系型数据库中无法灵活支持超宽列、列族模式、无模式的技术问题。无模式的技术问题。无模式的技术问题。

【技术实现步骤摘要】
关系型数据库的数据存储、查询方法、装置、设备和介质


[0001]本专利技术涉及数据库
,特别涉及一种关系型数据库的数据存储、查询方法、装置、设备和介质。

技术介绍

[0002]关系型数据库在不断吸收新的技术中成长,其性能、适应范围也在不断扩大,它仍然是现在最主要的数据管理范式。受益于数据技术发展快速,数据驱动的业务也不断演进。从数据模式管理方面,关系型数据库有三种有挑战性的问题:一、超宽列无法支持。关系型数据库对每个表包含多少列都有明确限制,支持最好的SQLServer是1024列,而开源PostgreSQL则支持1600列。对于一般场景而言,过多的列会导致性的降低。但有些客户的场景,比如指标采集场景,使用宽表模式更符合用户的使用习惯;二、Sche1maless(无模式)无法支持。mongodb是无模式的典型代表,它将主体数据放在文档中,文档采用Json格式存放。这种不需要事先定义模式的方式更容易应对数据内容不能完全事先确定,需要不断演化的应用场景;三、列族无法支持。NoSQL数据库常用列族来实现数据模式的折衷。数据可以定义多个列族,每个列族使用key来标识一个子数据,这相当于嵌套了一个小表。列族在模式复杂多变的场景适应了模式演化和不同数据子集的情况。
[0003]目前还没有关系数据能原生地支持上述三种类型。比如,多种关系型数据库使用json格式来存储半结构化的数据,间接支持宽松的模式定义。但作为一种数据类型,json格式本身的效率不够高,特别是实现列存模式很困难。

技术实现思路

[0004]有鉴于此,本专利技术实施例提供了一种关系型数据库的数据存储方法,以解决现有技术中关系型数据库无法支持多模式数据存储、灵活性差的技术问题。该方法包括:设置不同数据模式对应的数据模型,通过数据模型接收对应数据模式的待存储数据;在数据模型调用存储引擎的接口时,在存储引擎层根据数据模型对应的数据模式,将数据模型接收的待存储数据展成任意长度的字段列表;将字段列表中的所有字段名按照字母顺序排序后生成一个字符串,并生成字符串的编码,编码和字符串形成一个组合;根据组合的编码与内存中已缓存编码的重复情况,确定组合唯一的ID;将组合对应的ID和待存储数据对应存储在关系型数据库的数据文件中。
[0005]本专利技术实施例还提供了一种关系型数据库的数据查询方法,以解决现有技术中关系型数据库无法支持多模式数据查询、灵活性差的技术问题。该装置包括:接收数据查询请求,数据查询请求包括待查询数据的键;按照待查询数据的数据模式,根据键获得字段列名;在内存中根据字段列名获取对应的ID,其中,针对需要存储在关系型数据库的数
据文件中的待存储数据,待存储数据被按照数据模式展成任意长度的字段列表,字段列表中所有的字段列名按照字母顺序排序后生成一个字符串,并生成该字符串的编码,该字符串和该编码组成一个组合,并根据组合的编码与内存中已缓存编码的重复情况,确定组合唯一的ID,并将组合对应的ID和待存储数据对应存储在关系型数据库的数据文件中;根据ID在关系型数据库的数据文件中查询并输出待查询数据。
[0006]本专利技术实施例还提供了一种关系型数据库的数据存储装置,以解决现有技术中关系型数据库无法支持多模式数据存储、灵活性差的技术问题。该装置包括:数据接收模块,用于设置不同数据模式对应的数据模型,通过数据模型接收对应数据模式的待存储数据;数据展开模块,用于在数据模型调用存储引擎的接口时,在存储引擎层根据数据模型对应的数据模式,将数据模型接收的待存储数据展成任意长度的字段列表;编码模块,用于将字段列表中的所有字段名按照字母顺序排序后生成一个字符串,并生成字符串的编码,编码和字符串形成一个组合;动态模式管理模块,用于根据组合的编码与内存中已缓存编码的重复情况,确定组合唯一的ID;存储模块,用于将组合对应的ID和待存储数据对应存储在关系型数据库的数据文件中。
[0007]本专利技术实施例还提供了一种关系型数据库的数据存储装置,以解决现有技术中关系型数据库无法支持多模式数据查询、灵活性差的技术问题。该装置包括:查询请求接收模块,用于接收数据查询请求,所述数据查询请求包括待查询数据的键;字段获取模块,用于按照所述待查询数据的数据模式,根据所述键获得字段列名;ID获取模块,用于在内存中根据所述字段列名获取对应的ID,其中,针对需要存储在关系型数据库的数据文件中的待存储数据,所述待存储数据被按照数据模式展成任意长度的字段列表,所述字段列表中所有的字段列名按照字母顺序排序后生成一个字符串,并生成该字符串的编码,该字符串和该编码组成一个组合,并根据所述组合的编码与内存中已缓存编码的重复情况,确定所述组合唯一的ID,并将所述组合对应的ID和所述待存储数据对应存储在所述关系型数据库的数据文件中;数据查询模块,用于根据所述ID在关系型数据库的数据文件中查询并输出所述待查询数据。
[0008]本专利技术实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述任意的关系型数据库的数据存储方法和/或上述任意的关系型数据库的数据查询方法,以解决现有技术中关系型数据库无法支持多模式数据、灵活性差的技术问题。
[0009]本专利技术实施例还提供了一种计算机可读存储介质,计算机可读存储介质存储有执行上述任意的关系型数据库的数据存储方法和/或上述任意的关系型数据库的数据查询方法的计算机程序,以解决现有技术中关系型数据库无法支持多模式数据、灵活性差的技术问题。
[0010]与现有技术相比,本说明书实施例采用的上述至少一个技术方案能够达到的有益
效果至少包括:通过设置不同数据模式对应的数据模型来接收不同数据模式的待存储数据,进而使用存储引擎接口,根据数据模型对应的数据模式,将数据模型接收的待存储数据展成任意长度的字段列表,并将字段列表中的所有字段名生成组合通过唯一的ID存储在内存中,并将待存储数据和其组合对应的ID对应存储在关系型数据库的数据文件中,实现了多数据模式、不同数据模式的待存储数据的存储,后续通过ID(该ID间接表征或映射对应待存储数据的数据模式)即可查询对应数据模式的数据,进而实现了关系型数据库支持宽松数据模式的需求,可以支持多种、不同数据模式的数据的存储,有利于提高关系型数据库的数据处理的灵活性,采用上述关系型数据库的数据存储方法,能够突破关系型数据库对列数的限制,达到支持超宽列的目的,还可以支持列族和schemaless(无模式)等数据的存储。
附图说明
[0011]为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
[0012]图1是本专利技术实施例提供的一种关系型数据库的数据存储方法的流程图;图2是本专利技术实施例提供的一种关系型数据库的存储引擎的结构图;图3是本专利技术实施例提供的将字段列表进行编码的示意图;本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种关系型数据库的数据存储方法,其特征在于,包括:设置不同数据模式对应的数据模型,通过所述数据模型接收对应数据模式的待存储数据;在所述数据模型调用存储引擎的接口时,在存储引擎层根据所述数据模型对应的数据模式,将所述数据模型接收的待存储数据展成任意长度的字段列表;将所述字段列表中的所有字段名按照字母顺序排序后生成一个字符串,并生成所述字符串的编码,所述编码和所述字符串形成一个组合;根据所述组合的编码与内存中已缓存编码的重复情况,确定所述组合唯一的ID;将所述组合对应的ID和所述待存储数据对应存储在所述关系型数据库的数据文件中。2.如权利要求1所述的关系型数据库的数据存储方法,其特征在于,根据所述数据模型对应的数据模式,将所述数据模型接收的待存储数据展成任意长度的字段列表,包括:当所述待存储数据的数据模式为文档模式时,将所述待存储数据的文档的类型名与所述文档的键拼接作为字段列名,生成所述字段列表;当所述待存储数据的数据模式为列族模式,将列族名与所述列族的键拼接作为字段列名,生成所述字段列表;当所述待存储数据的数据模式为关系模式的超宽列模式时,设置一个虚拟列标识,将所述虚拟列标识与超宽列的列名拼接作为字段列名,生成所述字段列表。3.如权利要求1所述的关系型数据库的数据存储方法,其特征在于,根据所述组合的编码与内存中已缓存编码的重复情况,确定所述组合唯一的ID,包括:判断所述组合的编码与内存中已缓存的编码是否重复,若否,则将所述组合缓存在内存中,并对所述组合设置唯一的ID;若是,则不将所述组合缓存在内存中,将内存中与所述组合的编码重复的已缓存编码所在组合对应的ID确定为所述组合的ID。4.如权利要求1至3中任一项所述的关系型数据库的数据存储方法,其特征在于,将所述待存储数据存储在所述关系型数据库的数据文件中,包括:当采用行存储方式将所述待存储数据存储在所述数据文件中时,当所述待存储数据的数据模式为超宽列的情况下,在所述数据文件中存储所述待存储数据的原始存储位置存储所述ID和数据指针,将所述待存储数据存储在所述数据文件之外的文件中,该文件称为异位文件,其中,所述数据指针指向所述异位文件。5.如权利要求1至3中任一项所述的关系型数据库的数据存储方法,其特征在于,将所述待存储数据存储在所述关系型数据库的数据文件中,包括:当采用列存储方式将所述待存储数据存储在所述数据文件中时,将所述待存储数据划分为多个数据切片;将所述多个数据切片按列存储在所述数据文件的数据区,将所述数据切片的分布信息和meta信息存储在所述数据文件的元数据区,将所述数据切片的统计信息存储在所述数据文件的索引区,其中,所述数据切片的meta信息包括所述ID。6.一种关系型数据库的数据查询方法,其特征在于,包括:接收数据查询请求,所述数据查询请求包...

【专利技术属性】
技术研发人员:王勇唐鹏洲姚延栋翁岩青高小明
申请(专利权)人:北京四维纵横数据技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1