CN116756253A - 关系型数据库的数据存储、查询方法、装置、设备和介质 - Google Patents

关系型数据库的数据存储、查询方法、装置、设备和介质 Download PDF

Info

Publication number
CN116756253A
CN116756253A CN202311041049.7A CN202311041049A CN116756253A CN 116756253 A CN116756253 A CN 116756253A CN 202311041049 A CN202311041049 A CN 202311041049A CN 116756253 A CN116756253 A CN 116756253A
Authority
CN
China
Prior art keywords
data
stored
combination
relational database
mode
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202311041049.7A
Other languages
English (en)
Other versions
CN116756253B (zh
Inventor
王勇
唐鹏洲
姚延栋
翁岩青
高小明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Siweizongheng Data Technology Co ltd
Original Assignee
Beijing Siweizongheng Data Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Siweizongheng Data Technology Co ltd filed Critical Beijing Siweizongheng Data Technology Co ltd
Priority to CN202311041049.7A priority Critical patent/CN116756253B/zh
Publication of CN116756253A publication Critical patent/CN116756253A/zh
Application granted granted Critical
Publication of CN116756253B publication Critical patent/CN116756253B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

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

Description

关系型数据库的数据存储、查询方法、装置、设备和介质
技术领域
本发明涉及数据库技术领域,特别涉及一种关系型数据库的数据存储、查询方法、装置、设备和介质。
背景技术
关系型数据库在不断吸收新的技术中成长,其性能、适应范围也在不断扩大,它仍然是现在最主要的数据管理范式。受益于数据技术发展快速,数据驱动的业务也不断演进。从数据模式管理方面,关系型数据库有三种有挑战性的问题:一、超宽列无法支持。关系型数据库对每个表包含多少列都有明确限制,支持最好的SQLServer是1024列,而开源PostgreSQL则支持1600列。对于一般场景而言,过多的列会导致性的降低。但有些客户的场景,比如指标采集场景,使用宽表模式更符合用户的使用习惯;二、Sche1maless(无模式)无法支持。mongodb是无模式的典型代表,它将主体数据放在文档中,文档采用Json格式存放。这种不需要事先定义模式的方式更容易应对数据内容不能完全事先确定,需要不断演化的应用场景;三、列族无法支持。NoSQL数据库常用列族来实现数据模式的折衷。数据可以定义多个列族,每个列族使用key来标识一个子数据,这相当于嵌套了一个小表。列族在模式复杂多变的场景适应了模式演化和不同数据子集的情况。
目前还没有关系数据能原生地支持上述三种类型。比如,多种关系型数据库使用json格式来存储半结构化的数据,间接支持宽松的模式定义。但作为一种数据类型,json格式本身的效率不够高,特别是实现列存模式很困难。
发明内容
有鉴于此,本发明实施例提供了一种关系型数据库的数据存储方法,以解决现有技术中关系型数据库无法支持多模式数据存储、灵活性差的技术问题。该方法包括:
设置不同数据模式对应的数据模型,通过数据模型接收对应数据模式的待存储数据;
在数据模型调用存储引擎的接口时,在存储引擎层根据数据模型对应的数据模式,将数据模型接收的待存储数据展成任意长度的字段列表;
将字段列表中的所有字段名按照字母顺序排序后生成一个字符串,并生成字符串的编码,编码和字符串形成一个组合;
根据组合的编码与内存中已缓存编码的重复情况,确定组合唯一的ID;
将组合对应的ID和待存储数据对应存储在关系型数据库的数据文件中。
本发明实施例还提供了一种关系型数据库的数据查询方法,以解决现有技术中关系型数据库无法支持多模式数据查询、灵活性差的技术问题。该装置包括:
接收数据查询请求,数据查询请求包括待查询数据的键;
按照待查询数据的数据模式,根据键获得字段列名;
在内存中根据字段列名获取对应的ID,其中,针对需要存储在关系型数据库的数据文件中的待存储数据,待存储数据被按照数据模式展成任意长度的字段列表,字段列表中所有的字段列名按照字母顺序排序后生成一个字符串,并生成该字符串的编码,该字符串和该编码组成一个组合,并根据组合的编码与内存中已缓存编码的重复情况,确定组合唯一的ID,并将组合对应的ID和待存储数据对应存储在关系型数据库的数据文件中;
根据ID在关系型数据库的数据文件中查询并输出待查询数据。
本发明实施例还提供了一种关系型数据库的数据存储装置,以解决现有技术中关系型数据库无法支持多模式数据存储、灵活性差的技术问题。该装置包括:
数据接收模块,用于设置不同数据模式对应的数据模型,通过数据模型接收对应数据模式的待存储数据;
数据展开模块,用于在数据模型调用存储引擎的接口时,在存储引擎层根据数据模型对应的数据模式,将数据模型接收的待存储数据展成任意长度的字段列表;
编码模块,用于将字段列表中的所有字段名按照字母顺序排序后生成一个字符串,并生成字符串的编码,编码和字符串形成一个组合;
动态模式管理模块,用于根据组合的编码与内存中已缓存编码的重复情况,确定组合唯一的ID;
存储模块,用于将组合对应的ID和待存储数据对应存储在关系型数据库的数据文件中。
本发明实施例还提供了一种关系型数据库的数据存储装置,以解决现有技术中关系型数据库无法支持多模式数据查询、灵活性差的技术问题。该装置包括:
查询请求接收模块,用于接收数据查询请求,所述数据查询请求包括待查询数据的键;
字段获取模块,用于按照所述待查询数据的数据模式,根据所述键获得字段列名;
ID获取模块,用于在内存中根据所述字段列名获取对应的ID,其中,针对需要存储在关系型数据库的数据文件中的待存储数据,所述待存储数据被按照数据模式展成任意长度的字段列表,所述字段列表中所有的字段列名按照字母顺序排序后生成一个字符串,并生成该字符串的编码,该字符串和该编码组成一个组合,并根据所述组合的编码与内存中已缓存编码的重复情况,确定所述组合唯一的ID,并将所述组合对应的ID和所述待存储数据对应存储在所述关系型数据库的数据文件中;
数据查询模块,用于根据所述ID在关系型数据库的数据文件中查询并输出所述待查询数据。
本发明实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述任意的关系型数据库的数据存储方法和/或上述任意的关系型数据库的数据查询方法,以解决现有技术中关系型数据库无法支持多模式数据、灵活性差的技术问题。
本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质存储有执行上述任意的关系型数据库的数据存储方法和/或上述任意的关系型数据库的数据查询方法的计算机程序,以解决现有技术中关系型数据库无法支持多模式数据、灵活性差的技术问题。
与现有技术相比,本说明书实施例采用的上述至少一个技术方案能够达到的有益效果至少包括:
通过设置不同数据模式对应的数据模型来接收不同数据模式的待存储数据,进而使用存储引擎接口,根据数据模型对应的数据模式,将数据模型接收的待存储数据展成任意长度的字段列表,并将字段列表中的所有字段名生成组合通过唯一的ID存储在内存中,并将待存储数据和其组合对应的ID对应存储在关系型数据库的数据文件中,实现了多数据模式、不同数据模式的待存储数据的存储,后续通过ID(该ID间接表征或映射对应待存储数据的数据模式)即可查询对应数据模式的数据,进而实现了关系型数据库支持宽松数据模式的需求,可以支持多种、不同数据模式的数据的存储,有利于提高关系型数据库的数据处理的灵活性,采用上述关系型数据库的数据存储方法,能够突破关系型数据库对列数的限制,达到支持超宽列的目的,还可以支持列族和schemaless(无模式)等数据的存储。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本发明实施例提供的一种关系型数据库的数据存储方法的流程图;
图2是本发明实施例提供的一种关系型数据库的存储引擎的结构图;
图3是本发明实施例提供的将字段列表进行编码的示意图;
图4是本发明实施例提供的数据存储方法中列存储的格式示意图;
图5是本发明实施例提供的一种关系型数据库的数据查询方法的流程图;
图6是本发明实施例提供的一种计算机设备的结构框图;
图7是本发明实施例提供的一种关系型数据库的数据存储装置的结构框图;
图8是本发明实施例提供的一种关系型数据库的数据查询装置的结构框图。
具体实施方式
下面结合附图对本申请实施例进行详细描述。
以下通过特定的具体实例说明本申请的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本申请的其他优点与功效。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。本申请还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本申请的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本发明实施例中,提供了一种关系型数据库的数据存储方法,如图1所示,该方法包括:
步骤S101:设置不同数据模式对应的数据模型,通过数据模型接收对应数据模式的待存储数据;
步骤S102:在数据模型调用存储引擎的接口时,在存储引擎层根据数据模型对应的数据模式,将数据模型接收的待存储数据展成任意长度的字段列表;
步骤S103:将字段列表中的所有字段名按照字母顺序排序后生成一个字符串,并生成字符串的编码,编码和字符串形成一个组合;
步骤S104:根据组合的编码与内存中已缓存编码的重复情况,确定组合唯一的ID;
步骤S105:将组合对应的ID和待存储数据对应存储在关系型数据库的数据文件中。
具体实施时,如图2所示,上述关系型数据库的数据存储方法的实现使得关系型数据库的存储引擎的构建分成三层,其中,核心层为动态数据模式管理,它负责维护各种模型的数据模式识别、高效存储和使用,实现上述步骤102至105。上层为将存储引擎管理的灵活数据模式进行封装,处理为不同数据模式对应的数据模型,对用户呈现不同数据模式的使用方式,例如,超宽列模式对应的数据模型为关系模型,列族模式对应的数据模型为列族模型,无模式对应的数据模型为无模式模型(即Schemaless模型)。下层为数据存储层,动态的不同数据模式的数据支持行存和列存,由于列存支持的变种更多,本发明实施例的动态数据模式管理主要集中于列存的实现。本发明实施例提供的关系型数据库的数据存储方法和关系型数据库的数据查询方法均主要在动态模式管理层执行。
具体实施时,在设置不同数据模式对应的数据模型的过程中,可以将现有的不同数据模式对应的数据模型直接封装或集成在关系型数据库中,本申请对不同数据模式对应的数据模型不做具体限定,可以采用现有的数据模型实现,例如,关系模型原有的约束、检查能力等均可以保留,当一条数据插入时,关系模型的所有流程均不变。
具体实施时,上述不同数据模式对应的数据模型除了包括关系模型、列族模型和Schemaless模型之外,还可以包括其他数据模式对应的数据模型,图2仅仅是给出了数据模型的示例。
具体实施时,为了实现可以通过ID来映射或表征不同的数据模式,提出了通过以下步骤根据数据模型对应的数据模式,将数据模型接收的待存储数据展成任意长度的字段列表,进而基于不同数据模式的字段列表生成上述组合和对应的ID:
当待存储数据的数据模式为文档模式时,将待存储数据的文档的类型名与文档的键拼接作为字段列名,生成字段列表;当待存储数据的数据模式为列族模式,将列族名与列族的键拼接作为字段列名,生成字段列表;当待存储数据的数据模式为关系模式的超宽列模式时,设置一个虚拟列标识,将虚拟列标识与超宽列的列名拼接作为字段列名,生成字段列表。
具体的,传统的关系型数据库的数据模式是由数据的专门的catalog(远程或本地的数据库服务器中的实例或库映射到用户主机的方式)管理来实现的。本发明实施例的数据存储方法并不改动这种方法,而是在现有的关系型数据库的存储引擎层中增加动态数据模式管理层(如图2所示),从而打破了因存储格式导致的列限制(例如PostgreSQL中不超过1600列的限制)。对于不同的需求,动态数据模式管理将分情况进行模式映射。即,使用动态的数据管理模式展开字段列表并将数据存储在内存中单独的文件中。
具体的,当待存储数据的数据模式为文档模式(无模式中的一种)时,则直接使用文档定义的模式。针对一批数据,识别出所有的key(文档的键)和内部的数据类型(即根据实际数据范围确定的实际数据类型),将文档字段名加上key(文档的键)的名字,展开为任意长度的字段列表;当待存储数据的数据模式为列族模式,对记录所有各处列族的数据进行扫描,确定每个列族的key(列族的键)及其内部的数据类型,然后按列族名+key(列族的键)的方式展开为字段列表;当待存储数据的数据模式为关系模式的超宽列模式时,设置一个dummy列(虚拟列),按dummy列(虚拟列)标识+字段名(即超宽列的列名)的方式展开为字段列表。
具体实施时,为了提高存储的效率,减少重复存储,提出了通过以下步骤根据组合的编码与内存中已缓存编码的重复情况,确定组合唯一的ID:
判断组合的编码与内存中已缓存的编码是否重复,若否,则将组合缓存在内存中,并对组合设置唯一的ID;若是,则不将组合缓存在内存中,将内存中与组合的编码重复的已缓存编码所在组合对应的ID确定为组合的ID。
具体的,由于插入数据的数据模式有一定的重复度,为了避免相同数据模式的重复存储,提出了对组合去重存储的方法,组合的编码方式如图3所示,在文件中存储的是组合包括的字段名的原始信息和编码方式,生成组合的ID的过程按照如下步骤实现:首先,将每个字段列表的所有字段名按字母序排序,然后,生成该排序所有字段名整体编码的哈希值,如果当前生成的哈希值与文件已存的哈希值不同,则将当前生成的哈希值和对应字段名按字母序的排序构成一个组合,并在文件中将该组合作为一个新的组合存储,生成对应的存储ID,如果当前生成的哈希值与文件已存的哈希值相同,则将当前生成的哈希值和对应字段名按字母序的排序构成一个组合,但是在文件中不将该组合作为一个新的组合存储,将文件中哈希值重复的、已存的ID作为该组合对应的ID。将组合存储并生成ID的文件可以以图3所示的表形式进行存储数据,该文件会缓存在内存中,而在实际的数据文件中存储数据的同时,只对应存储数据对应的组合的ID即可,后续基于ID即可访问对应的数据。
具体实施时,对待存储数据采用行存储方式进行存储时,可以直接采用关系型数据库现有的行存方式进行存储,但是,针对超宽列采用现有的行存方式存储时代价较高,因此,针对超宽列提出了通过以下步骤将待存储数据存储在关系型数据库的数据文件中:
当采用行存储方式将待存储数据存储在数据文件中时,当待存储数据的数据模式为超宽列的情况下,在数据文件中存储待存储数据的原始存储位置存储ID和数据指针,将待存储数据存储在数据文件之外的文件中,该文件称为异位文件,其中,数据指针指向异位文件。
具体的,若待存储数据的列数较少,可以在一个页面内存放,则按照关系型数据库的原有的行存储方案存储即可。如果待存储数据展开的列数较多,单行超过半个页面,则直接存储的代价较高,则本申请提出采用out-of-line(原生和移位)的存储方案,即在数据文件的原生位置(数据文件中存储数据的原位置)只存储一个数据指针,真实的数据行存储在另外的文件(异位文件)里。例如,当数据模式为超宽列时,仅在原始存储位置上存储ID和colomunfamily(列族)的数据指针,真实数据储存在一个异位文件中,数据指针指向异位文件。按照本发明实施例的数据存储方式,列数则不在成为限制,可通过该数据存储方式打破列数限制,实现超宽列数据的高效存储。
具体实施时,为了实现待存储数据的连续、高效的列存,还提出了通过以下步骤将待存储数据存储在关系型数据库的数据文件中:
当采用列存储方式将待存储数据存储在数据文件中时,将待存储数据划分为多个数据切片;将多个数据切片按列存储在数据文件的数据区,将数据切片的分布信息和meta信息存储在数据文件的元数据区,将数据切片的统计信息存储在数据文件的索引区,其中,数据切片的meta信息包括ID。
具体的,图4给出了数据存储方法中列存储格式的示意图。列存储分为元数据区、索引区和数据区三个部分。本发明的实施例的列存储将一组数据的集合叫做一个slice(区间数据或数据切片),可以将一批待存储数据划分为多个slice,一个数据文件里存储多个slice的数据。图4中cn表示列号,sm表示slice的编号,SliceNumber表示slice的数量。
具体的,元数据区描述了文件级的slice分布情况和meta(元数据)信息。slice分布情况包括但不限于slice(区间数据)的数量,meta(元数据)信息包括但不限于每个slicemeta(元数据区)的offset(偏离量)(例如,(slice的存储位置,slice所属组合对应的ID的指针等等),以及连续存储的多个slicemeta(元数据区间)信息项。每个slicemeta(元数据区间)包括每个列的空值位图和列值的起始位置和length(列的长度)以及列的位图。若某个slice不存在slicemeta(元数据区)时,则访问这一个slice时可跳过此列。
具体的,索引区保存了每个slice的统计信息,可以包括单个列的min/max/count(最小/最大/行数)等信息。统计信息一方面用于作过滤数据,例如,仅在min/max之间的条件值才会命中此slice(区间数据),另一方面,统计信息用于加快基于统计的查询速度。
具体的,数据区按展开的字段列表的每一列数据连续存放。由于同一列的数据是跨slice存储,因此,当按列进行扫描时,可一次性把相邻的所有数据连续读出,从而大大提高磁盘的吞吐率。其中,索引区也可以单独存放在一个文件中,便于使用统一的索引访问机制。另外,针对连续性要求不高的存储类型,比如对象存储,也可以降低连续存储的块数(即将数据划分为少量的slice)。相当于在一个文件里存储了多个slice。
在本发明实施例中,提供了一种关系型数据库的数据查询方法,如图5所示,该方法包括:
步骤S501:接收数据查询请求,数据查询请求包括待查询数据的键;
步骤S502:按照待查询数据的数据模式,根据键获得字段列名;
步骤S503:在内存中根据字段列名获取对应的ID,其中,针对需要存储在关系型数据库的数据文件中的待存储数据,待存储数据被按照数据模式展成任意长度的字段列表,字段列表中所有的字段列名按照字母顺序排序后生成一个字符串,并生成该字符串的编码,该字符串和该编码组成一个组合,并根据组合的编码与内存中已缓存编码的重复情况,确定组合唯一的ID,并将组合对应的ID和待存储数据对应存储在关系型数据库的数据文件中;
步骤S504:根据ID在关系型数据库的数据文件中查询并输出待查询数据。
具体的,关系型数据库的关系模型原有的约束、检查能力等均可以保留。当一条数据插入时,所有流程均不变。当调用了关系型数据库的存储引擎的接口时,则会将超宽列存到一个out-of-line(原生和移位)的位置。数据模式仍然保存在catalog(远程或本地的数据库服务器中的实例或库映射到用户主机的方式)中,同时会在内存中维护。当出现增删列时,只需要维护缺省值等信息即可。由于数据本质上是存成了内部的schema(模式),数据可以保持不变。读出时按需要提供缺省信息即可。如果是删除列,由于bitmap(位图)变置空,则不返回对应的列即可。 针对schemaless模式对应的schemaless模型,在插入数据时,需要根据一批数据建立对应的schema(模式),并根据索引,决定是否创新一个新的组合。在本发明实施例的数据存储方法在Sche1maless(无模式)下通过数据读取时直接把dummy(虚拟)列拼上key(文档的键),即可对数据进行正常的访问。针对列族模式对应的列族模型,数据库仍保存ddl(数据库模式定义语言)文件里定义的模式。但在插入和访问数据时依据展开的字段列表的字段信息进行访问。
在本实施例中,提供了一种计算机设备,如图6所示,包括存储器601、处理器602及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述任意的关系型数据库的数据存储方法和/或关系型数据库的数据查询方法。
具体的,该计算机设备可以是计算机终端、服务器或者类似的运算装置。
在本实施例中,提供了一种计算机可读存储介质,计算机可读存储介质存储有执行上述任意的关系型数据库的数据存储方法和/或关系型数据库的数据查询方法的计算机程序。
具体的,计算机可读存储介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机可读存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读存储介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
基于同一发明构思,本发明实施例中还提供了一种关系型数据库的数据查询装置,如下面的实施例。由于关系型数据库的数据存储装置解决问题的原理与关系型数据库的数据存储方法相似,因此关系型数据库的数据存储装置的实施可以参见关系型数据库的数据存储方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图7是本发明实施例的关系型数据库的数据存储装置的一种结构框图,如图7所示,包括:数据接收模块701、数据展开模块702、编码模块703、动态模式管理模块704和存储模块705,下面对该结构进行说明。
数据接收模块701,用于设置不同数据模式对应的数据模型,通过数据模型接收对应数据模式的待存储数据;
数据展开模块702,用于在数据模型调用存储引擎的接口时,在存储引擎层根据数据模型对应的数据模式,将数据模型接收的待存储数据展成任意长度的字段列表;
编码模块703,用于将字段列表中的所有字段名按照字母顺序排序后生成一个字符串,并生成字符串的编码,编码和字符串形成一个组合;
动态模式管理模块704,用于根据组合的编码与内存中已缓存编码的重复情况,确定组合唯一的ID;
存储模块705,用于将组合对应的ID和待存储数据对应存储在关系型数据库的数据文件中。
在一个实施例中,数据展开模块,包括:
第一字段列表生成单元,用于当待存储数据的数据模式为文档模式时,将待存储数据的文档的类型名与文档的键拼接作为字段列名,生成字段列表;
第二字段列表生成单元,用于当待存储数据的数据模式为列族模式,将列族名与列族的键拼接作为字段列名,生成字段列表;
第三字段列表生成单元,用于当待存储数据的数据模式为关系模式的超宽列模式时,设置一个虚拟列标识,将虚拟列标识与超宽列的列名拼接作为字段列名,生成字段列表。
在一个实施例中,动态模式管理模块,包括:
组合ID第一设定单元,用于判断组合的编码与内存中已缓存的编码是否重复,若否,则将组合缓存在内存中,并对组合设置唯一的ID;
组合ID第二设定单元,用于若是,则不将组合缓存在内存中,将内存中与组合的编码重复的已缓存编码所在组合对应的ID确定为组合的ID。
在一个实施例中,存储模块,包括:
行存储单元,用于当采用行存储方式将待存储数据存储在数据文件中时,当待存储数据的数据模式为超宽列的情况下,在数据文件中存储待存储数据的原始存储位置存储ID和数据指针,将待存储数据存储在数据文件之外的文件中,该文件称为异位文件,其中,数据指针指向异位文件。
在一个实施例中,存储模块,还包括:
存储划分单元,用于当采用列存储方式将待存储数据存储在数据文件中时,将待存储数据划分为多个数据切片;
统计信息存储单元,用于将多个数据切片按列存储在数据文件的数据区,将数据切片的分布信息和meta信息存储在数据文件的元数据区,将数据切片的统计信息存储在数据文件的索引区,其中,数据切片的meta信息包括ID。
图8是本发明实施例的关系型数据库的数据查询装置的一种结构框图,如图8所示,该装置包括:
查询请求接收模块801,用于接收数据查询请求,所述数据查询请求包括待查询数据的键;
字段获取模块802,用于按照所述待查询数据的数据模式,根据所述键获得字段列名;
ID获取模块803,用于在内存中根据所述字段列名获取对应的ID,其中,针对需要存储在关系型数据库的数据文件中的待存储数据,所述待存储数据被按照数据模式展成任意长度的字段列表,所述字段列表中所有的字段列名按照字母顺序排序后生成一个字符串,并生成该字符串的编码,该字符串和该编码组成一个组合,并根据所述组合的编码与内存中已缓存编码的重复情况,确定所述组合唯一的ID,并将所述组合对应的ID和所述待存储数据对应存储在所述关系型数据库的数据文件中;
数据查询模块804,用于根据所述ID在关系型数据库的数据文件中查询并输出所述待查询数据。
本发明实施例实现了如下技术效果:
本发明实施例的数据存储方法使用一种统一的方法支持多种灵活的数据模型,包括行存储方式和列存储方式;使用存储引擎层根据数据模型对应的数据模式,将数据模型接收的待存储数据展成任意长度的字段列表,将字段列表中的所有字段名生成组合唯一的ID,通过ID查询对应的数据,同时,行存储方式为out-of-line的存储方案,只有原生位置存储一个指针和ID,真实的行而紧密地存储在另外的数据文件里,采用上述方法能够突破关系型数据库中对列数的限制(比如数据库软件PostgreSQL支持的1600行);采用提供统一的列存储方式,将列存储分为元数据区、索引区和数据区三个部分进行管理,可以不依赖于具体的数据模型而单独优化,数据模式的引入和管理,使得schemaless(无模式)的数据可以按列来存储和使用,可以提高压缩效率,提高批量查询的效率。
显然,本领域的技术人员应该明白,上述的本发明实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明实施例不限制于任何特定的硬件和软件结合。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种关系型数据库的数据存储方法,其特征在于,包括:
设置不同数据模式对应的数据模型,通过所述数据模型接收对应数据模式的待存储数据;
在所述数据模型调用存储引擎的接口时,在存储引擎层根据所述数据模型对应的数据模式,将所述数据模型接收的待存储数据展成任意长度的字段列表;
将所述字段列表中的所有字段名按照字母顺序排序后生成一个字符串,并生成所述字符串的编码,所述编码和所述字符串形成一个组合;
根据所述组合的编码与内存中已缓存编码的重复情况,确定所述组合唯一的ID;
将所述组合对应的ID和所述待存储数据对应存储在所述关系型数据库的数据文件中。
2.如权利要求1所述的关系型数据库的数据存储方法,其特征在于,根据所述数据模型对应的数据模式,将所述数据模型接收的待存储数据展成任意长度的字段列表,包括:
当所述待存储数据的数据模式为文档模式时,将所述待存储数据的文档的类型名与所述文档的键拼接作为字段列名,生成所述字段列表;
当所述待存储数据的数据模式为列族模式,将列族名与所述列族的键拼接作为字段列名,生成所述字段列表;
当所述待存储数据的数据模式为关系模式的超宽列模式时,设置一个虚拟列标识,将所述虚拟列标识与超宽列的列名拼接作为字段列名,生成所述字段列表。
3.如权利要求1所述的关系型数据库的数据存储方法,其特征在于,根据所述组合的编码与内存中已缓存编码的重复情况,确定所述组合唯一的ID,包括:
判断所述组合的编码与内存中已缓存的编码是否重复,若否,则将所述组合缓存在内存中,并对所述组合设置唯一的ID;若是,则不将所述组合缓存在内存中,将内存中与所述组合的编码重复的已缓存编码所在组合对应的ID确定为所述组合的ID。
4.如权利要求1至3中任一项所述的关系型数据库的数据存储方法,其特征在于,将所述待存储数据存储在所述关系型数据库的数据文件中,包括:
当采用行存储方式将所述待存储数据存储在所述数据文件中时,当所述待存储数据的数据模式为超宽列的情况下,在所述数据文件中存储所述待存储数据的原始存储位置存储所述ID和数据指针,将所述待存储数据存储在所述数据文件之外的文件中,该文件称为异位文件,其中,所述数据指针指向所述异位文件。
5.如权利要求1至3中任一项所述的关系型数据库的数据存储方法,其特征在于,将所述待存储数据存储在所述关系型数据库的数据文件中,包括:
当采用列存储方式将所述待存储数据存储在所述数据文件中时,将所述待存储数据划分为多个数据切片;
将所述多个数据切片按列存储在所述数据文件的数据区,将所述数据切片的分布信息和meta信息存储在所述数据文件的元数据区,将所述数据切片的统计信息存储在所述数据文件的索引区,其中,所述数据切片的meta信息包括所述ID。
6.一种关系型数据库的数据查询方法,其特征在于,包括:
接收数据查询请求,所述数据查询请求包括待查询数据的键;
按照所述待查询数据的数据模式,根据所述键获得字段列名;
在内存中根据所述字段列名获取对应的ID,其中,针对需要存储在关系型数据库的数据文件中的待存储数据,所述待存储数据被按照数据模式展成任意长度的字段列表,所述字段列表中所有的字段列名按照字母顺序排序后生成一个字符串,并生成该字符串的编码,该字符串和该编码组成一个组合,并根据所述组合的编码与内存中已缓存编码的重复情况,确定所述组合唯一的ID,并将所述组合对应的ID和所述待存储数据对应存储在所述关系型数据库的数据文件中;
根据所述ID在关系型数据库的数据文件中查询并输出所述待查询数据。
7.一种关系型数据库的数据存储装置,其特征在于,包括:
数据接收模块,用于设置不同数据模式对应的数据模型,通过所述数据模型接收对应数据模式的待存储数据;
数据展开模块,用于在所述数据模型调用存储引擎的接口时,在存储引擎层根据所述数据模型对应的数据模式,将所述数据模型接收的待存储数据展成任意长度的字段列表;
编码模块,用于将所述字段列表中的所有字段名按照字母顺序排序后生成一个字符串,并生成所述字符串的编码,所述编码和所述字符串形成一个组合;
动态模式管理模块,用于根据所述组合的编码与内存中已缓存编码的重复情况,确定所述组合唯一的ID;
存储模块,用于将所述组合对应的ID和所述待存储数据对应存储在所述关系型数据库的数据文件中。
8.一种关系型数据库的数据查询装置,其特征在于,包括:
查询请求接收模块,用于接收数据查询请求,所述数据查询请求包括待查询数据的键;
字段获取模块,用于按照所述待查询数据的数据模式,根据所述键获得字段列名;
ID获取模块,用于在内存中根据所述字段列名获取对应的ID,其中,针对需要存储在关系型数据库的数据文件中的待存储数据,所述待存储数据被按照数据模式展成任意长度的字段列表,所述字段列表中所有的字段列名按照字母顺序排序后生成一个字符串,并生成该字符串的编码,该字符串和该编码组成一个组合,并根据所述组合的编码与内存中已缓存编码的重复情况,确定所述组合唯一的ID,并将所述组合对应的ID和所述待存储数据对应存储在所述关系型数据库的数据文件中;
数据查询模块,用于根据所述ID在关系型数据库的数据文件中查询并输出所述待查询数据。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5中任一项所述的关系型数据库的数据存储方法和/或权利要求6所述的关系型数据库的数据查询方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1至5中任一项所述的关系型数据库的数据存储方法和/或权利要求6所述的关系型数据库的数据查询方法的计算机程序。
CN202311041049.7A 2023-08-18 2023-08-18 关系型数据库的数据存储、查询方法、装置、设备和介质 Active CN116756253B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311041049.7A CN116756253B (zh) 2023-08-18 2023-08-18 关系型数据库的数据存储、查询方法、装置、设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311041049.7A CN116756253B (zh) 2023-08-18 2023-08-18 关系型数据库的数据存储、查询方法、装置、设备和介质

Publications (2)

Publication Number Publication Date
CN116756253A true CN116756253A (zh) 2023-09-15
CN116756253B CN116756253B (zh) 2023-10-27

Family

ID=87953671

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311041049.7A Active CN116756253B (zh) 2023-08-18 2023-08-18 关系型数据库的数据存储、查询方法、装置、设备和介质

Country Status (1)

Country Link
CN (1) CN116756253B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116955403A (zh) * 2023-09-21 2023-10-27 北京四维纵横数据技术有限公司 无模式数据运算加速方法、装置、计算机设备及介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10684966B1 (en) * 2019-02-21 2020-06-16 Amazon Technologies, Inc. Orchestrating dataflows with inferred data store interactions
CN112000725A (zh) * 2020-08-28 2020-11-27 哈尔滨工业大学 一种面向多源异构资源的本体融合前处理方法
CN113742505A (zh) * 2021-08-30 2021-12-03 武汉数趣信息科技有限公司 一种海量合成孔径雷达干涉测量(InSAR)数据在线可视化方法
CN114064690A (zh) * 2021-11-17 2022-02-18 中国工商银行股份有限公司 数据处理方法及装置
CN114996370A (zh) * 2022-08-03 2022-09-02 杰为软件系统(深圳)有限公司 一种关系型数据库到语义三元组的数据转换和迁移方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10684966B1 (en) * 2019-02-21 2020-06-16 Amazon Technologies, Inc. Orchestrating dataflows with inferred data store interactions
CN112000725A (zh) * 2020-08-28 2020-11-27 哈尔滨工业大学 一种面向多源异构资源的本体融合前处理方法
CN113742505A (zh) * 2021-08-30 2021-12-03 武汉数趣信息科技有限公司 一种海量合成孔径雷达干涉测量(InSAR)数据在线可视化方法
CN114064690A (zh) * 2021-11-17 2022-02-18 中国工商银行股份有限公司 数据处理方法及装置
CN114996370A (zh) * 2022-08-03 2022-09-02 杰为软件系统(深圳)有限公司 一种关系型数据库到语义三元组的数据转换和迁移方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116955403A (zh) * 2023-09-21 2023-10-27 北京四维纵横数据技术有限公司 无模式数据运算加速方法、装置、计算机设备及介质
CN116955403B (zh) * 2023-09-21 2023-12-26 北京四维纵横数据技术有限公司 无模式数据运算加速方法、装置、计算机设备及介质

Also Published As

Publication number Publication date
CN116756253B (zh) 2023-10-27

Similar Documents

Publication Publication Date Title
CN110149803B (zh) 数据存储方法、系统及终端设备
CN107818115B (zh) 一种处理数据表的方法及装置
US9047330B2 (en) Index compression in databases
JP3318834B2 (ja) データファイルシステム及びデータ検索方法
CN104794123A (zh) 一种为半结构化数据构建NoSQL数据库索引的方法及装置
CN105320775A (zh) 数据的存取方法和装置
CN113986873B (zh) 一种海量物联网数据模型化的处理、存储与共享方法
CN116756253B (zh) 关系型数据库的数据存储、查询方法、装置、设备和介质
CN108021717B (zh) 一种轻量级嵌入式文件系统的实现方法
CN103914483B (zh) 文件存储方法、装置及文件读取方法、装置
CN107741947B (zh) 基于hdfs文件系统的随机数密钥的存储与获取方法
CN104834650A (zh) 一种有效查询任务生成方法及系统
CN103077208A (zh) 统一资源定位符匹配处理方法及装置
CN106874329A (zh) 数据库表索引的实现方法和装置
CN112069172B (zh) 一种电网数据处理方法及装置、电子设备及存储介质
CN106649359B (zh) 一种空间点数据的处理方法及装置
CN114840487A (zh) 分布式文件系统的元数据管理方法和装置
CN114416741A (zh) 基于多级索引的kv数据写入读取方法、装置及存储介质
CN103902554A (zh) 数据访问方法与装置
CN113127717A (zh) 一种密钥检索方法和系统
CN111858609A (zh) 区块链模糊查询方法及装置
CN116955363B (zh) 无模式数据创建索引方法、装置、计算机设备及介质
CN111752941B (zh) 一种数据存储、访问方法、装置、服务器及存储介质
CN116010677B (zh) 空间索引方法、装置及其电子设备
CN116975067B (zh) 无模式数据存储方法、装置、计算机设备及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant