CN113742332A - 数据存储方法、装置、设备及存储介质 - Google Patents
数据存储方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN113742332A CN113742332A CN202010477537.2A CN202010477537A CN113742332A CN 113742332 A CN113742332 A CN 113742332A CN 202010477537 A CN202010477537 A CN 202010477537A CN 113742332 A CN113742332 A CN 113742332A
- Authority
- CN
- China
- Prior art keywords
- data
- attribute data
- length
- variable
- length attribute
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/221—Column-oriented storage; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据存储方法、装置、设备及存储介质,该方法包括:获取待存储的行数据,确定所述行数据的数据属性,根据所述数据属性对应的存储规则对所述行数据进行存储,其中,不同的数据属性对应不同的存储规则。通过上述方法,针对行数据内不同的数据属性,采用不同的存储规则对行数据进行存储,这样可以有效地减少数据占用的空间,避免存储空间的浪费。
Description
技术领域
本发明涉及计算机技术领域,更具体地,涉及一种数据存储方法、一种数据存储装置、一种数据存储设备以及一种计算机存储介质。
背景技术
随着计算机技术的不断发展,数据量也在逐渐增多,存储数据的空间也变得越来越大。
目前,运行应用程序所产生的数据通常会被存储到数据库内。
现有技术中,数据存储到数据库的过程通常是将要存储的数据***到数据库的行内,具体的,就是按照行内各个属性字段将要存储的数据分类,将分类后的数据***到对应的属性字段内。
但是,现有技术中还是存在很大的存储空间浪费,不足以满足现在的数据库存储需求,因此,需要提供一种更加节省存储空间的数据存储方式。
发明内容
本发明的一个目的是提供一种用于数据存储的新技术方案。
根据本发明的第一方面,提供了一种数据存储方法,包括:
获取待存储的行数据;
确定所述行数据的数据属性;
根据所述数据属性对应的存储规则对所述行数据进行存储,其中,不同的数据属性对应不同的存储规则。
可选的,其中,确定所述行数据的数据属性,包括:
确定所述行数据内包括的定长属性数据;
根据所述数据属性对应的存储规则对所述行数据进行存储,包括:
将未超过预设字节长度的定长属性数据合并;
将合并后的定长属性数据和其他定长属性数据共同存储到定长属性字段内。
可选的,其中,确定所述行数据的数据属性,还包括:
确定所述行数据内包括的空值属性数据;
根据所述数据属性对应的存储规则对所述行数据进行存储,包括:
建立所述空值属性数据的标识;
将所述空值属性数据的标识添加到空值属性字段内的任意一个空白存储单元内。
可选的,其中,所述方法还包括:
根据合并后的定长属性数据、其他定长属性数据和所述空值属性数据,生成第一压缩位图,其中,所述第一压缩位图中每个存储单元内的数据对应至少两个定长属性数据和/或至少两个空值属性数据;
将所述第一压缩位图存储到压缩控制位图字段内。
可选的,其中,根据合并后的定长属性数据、其他定长属性数据和所述空值属性数据,生成第一压缩位图,包括:
根据合并后的定长属性数据、其他定长属性数据和所述空值属性数据,得到一级压缩位图;
根据所述一级压缩位图,得到二级压缩位图;
其中,所述第一压缩位图包括所述一级压缩位图和所述二级压缩位图。
可选的,其中,确定所述行数据的数据属性还包括:
确定所述行数据内包括的变长属性数据;
根据所述数据属性对应的存储规则对所述行数据进行存储包括:
针对每个所述变长属性数据,生成该变长属性数据对应的第二压缩位图,并获取所述第二压缩位图的长度;
确定该变长属性数据内的指定类型的字节;
去除全部所述指定类型的字节;
将所述第二压缩位图长度和所述压缩位图放置在去除字节后的变长属性数据前,得到该变长属性数据对应的变长属性数据块;
按照预设的存储顺序,将每个变长属性数据对应的变长属性数据块存储到变长属性字段内。
可选的,其中,确定所述行数据的数据属性还包括:
确定所述行数据内包括的变长属性数据;
根据所述数据属性对应的存储规则对所述行数据进行存储包括:
针对每个所述变长属性数据,确定该变长属性数据尾部内指定类型的字节及其数量;
去除全部所述指定类型的字节;
将所述指定类型的字节的数量放置在去除字节后的变长属性数据前,得到该变长属性数据对应的变长属性数据块;
按照预设的存储顺序,将每个变长属性数据对应的变长属性数据块存储到变长属性字段内。
可选的,其中,所述方法还包括:
获取每个去除字节后的变长属性数据的字节长度;
根据每个去除字节后的变长属性数据的字节长度,确定每个变长属性数据的偏移长度;
统计所述偏移长度超过预设长度的变长属性数据的数量;
将所述偏移长度存储到第一字段内;
将所统计出的数量存储到第二字段内。
根据本发明的第二方面,提供了一种数据存储装置,包括:
获取模块,用于获取待存储的行数据;
确定模块,用于确定所述行数据的数据属性;
存储模块,用于根据所述数据属性对应的存储规则对所述行数据进行存储,其中,不同的数据属性对应不同的存储规则。
根据本发明的第三方面,提供了一种数据存储设备,包括数据存储装置;或者,
所述设备包括:处理器和存储器;
所述存储器用于存储可执行的指令,所述指令用于控制所述处理器执行根据第一方面中所述的数据存储方法。
根据本发明的第四方面,提供了一种计算机存储介质,所述存储介质存储有计算机指令,当所述存储介质中的计算机指令由处理器执行时,实现如第一方面中所述的数据存储方法。
在本实施例中,针对行数据内不同的数据属性,采用不同的存储规则对行数据进行存储,这样可以有效地减少数据占用的空间,避免存储空间的浪费。
通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。
附图说明
被结合在说明书中并构成说明书的一部分的附图示出了本发明的实施例,并且连同其说明一起用于解释本发明的原理。
图1是本发明实施例提供的一种数据存储设备的硬件配置的框图;
图2是本发明实施例提供的一种数据存储方法的流程图;
图3是本发明实施例提供的一种数据存储结构的示意图;
图4是本发明实施例提供的一种数据存储装置的结构示意图;
图5是本发明实施例提供的一种数据存储设备的结构示意图。
具体实施方式
现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
<硬件配置>
图1是本发明实施例提供的一种数据存储设备的硬件配置的框图。
数据存储设备1000可以为虚拟机或物理机。数据存储设备1000可以包括处理器1100、存储器1200、接口装置1300、通信装置1400、显示装置1500、输入装置1600、扬声器1700、麦克风1800,等等。其中,处理器1100可以是中央处理器CPU、微处理器MCU等。存储器1200例如包括ROM(只读存储器)、RAM(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置1300例如包括USB接口、耳机接口等。通信装置1400例如能够进行有线或无线通信。显示装置1500例如是液晶显示屏、触摸显示屏等。输入装置1600例如可以包括触摸屏、键盘等。用户可以通过扬声器1700和麦克风1800输入/输出语音信息。
应用于本实施例中,存储器1200用于存储计算机程序指令,该指令用于控制处理器1100进行操作以执行根据本发明任意实施例的存储方法。技术人员可以根据本发明所公开方案设计该指令。该指令如何控制处理器1100进行操作,这是本领域公知,故在此不再详细描述。
尽管在图1中对数据存储设备1000均示出了多个装置,但是,本发明可以仅涉及其中的部分装置,例如,数据存储设备1000只涉及存储器1200和处理器1100。
在上述描述中,技术人员可以根据本发明所公开方案设计指令。指令如何控制处理器进行操作,这是本领域公知,故在此不再详细描述。
<方法实施例>
本发明实施例提供一种数据存储方法,如图2所示,包括如下:
S201:获取待存储的行数据。
在实际应用中,运行应用程序所产生的数据通常会被存储到数据库内。
进一步的,本说明书实施例在存储数据的过程中,首先需要获取待存储的行数据。
在此需要说明的是,本说明书实施例所记载的行数据内包括互不相同的数据属性。
S202:确定所述行数据的数据属性。
进一步的,由于本发明是针对行数据内不同的数据属性,采用不同的存储规则对行数据进行存储,因此,本发明实施例在获取到待存储的行数据后,需要确定行数据的数据属性。
在此需要说明的是,行数据的数据属性可包含一个数据属性,也可包含多个不同的数据属性,数据属性的数量可根据预设的划分规则来确定。
在本发明实施例中,划分规则可以如下:
行数据的数据属性可按照数据类型来划分不同的数据属性,也可以按照数据的存储特性来划分不同的数据属性,如,按照数据的字节类型来划分不同的数据属性。
S203:根据所述数据属性对应的存储规则对所述行数据进行存储。
进一步的,本发明实施例在确定出所述行数据的数据属性后,根据每个数据属性对应的存储规则,对行数据进行存储。
在此需要说明的是,每个数据属性均对应一个的存储规则,数据属性不同,则存储规则也不同。
在对行数据进行存储的过程中,每个数据属性按照各自对应的存储规则,对数据属性对应的数据进行存储。
通过上述方法,针对行数据内不同的数据属性,采用不同的存储规则对行数据进行存储,这样可以有效地减少数据占用的空间,避免存储空间的浪费。
进一步的,由于在实际应用中,有的属性数据在存储到数据库内所占的存储空间(即,字节数)是固定的,也即,定长属性数据,如,数值型数据,无论什么样的数值,数值是多少,每个数据值数据占用的字节数都是固定且相同的,因此,在本说明书实施例中,针对上述定长属性数据可以每次都按照特定的方式来减少数据占用的空间,也就是说,假设在第一次存储行数据时使用方法A,在第二次存储行数据时依然使用该方法A。
基于此,在本说明书实施例中,在获取到待存储的行数据之后,确定所述行数据的数据属性可以是,确定行数据内包括的定长属性数据。
进一步的,由于有的定长属性所占的字节数并不是整数个字节数,也就是说,有的定长属性所占的字节数存在半个字节的情况,如,属性值为60所占用的字节数为半个字节,这样的属性在现有技术中是存储在一个字节内,半个字节存储了属性值60,另一半字节对应的所有位均用0表示,从中可以看出属性值60所占用的存储空间整体上来看是一个完整的字节,因此,在本说明书实施例中,针对定长属性数据,可以将不是整数个字节数的定长属性进行合并,如,假设属性A的属性值占用的字节数为半个字节,数据B的属性值占用的字节数也为半个字节,将属性A和属性B合并在一起,共同存放在同一个字节内,又如,属性1的名称为“性别”,属性值为“男”,属性2的名称为“成绩”,属性值为“60”,可以将属性1和属性2合并放到一个字节内。
基于此,在本说明书实施例中,在确定行数据内包括的定长属性数据后,针对定长属性数据,可采用如下的存储规则对所述行数据进行存储,具体的:
将未超过预设字节长度的定长属性数据合并,将合并后的定长属性数据和其他定长属性数据共同存储到定长属性字段内。
在此需要说明的是,预设字节长度可以是一个字节,也可以两个字节,还可以是多个字节,可根据实际情况来设定。
进一步的,在合并未超过预设字节长度的定长属性数据之后,在本说明书实施例中,针对于其他定长属性数据,可以将其他定长属性数据按照所占存储空间长度从大到小进行排序,对于长度相同的定长属性数据,按照属性的原始排列顺序进行排列,最后,将排序好的其他定长属性数据和合并后的定长属性数据共同存储到如图3所示的定长属性字段内,其中。图3为本说明书实施例提供的一种全新的数据存储结构。
通过上述方法,将未超过预设字节长度的定长属性数据合并,并存储到定长属性字段内,有效地减少了数据占用的空间,避免了存储空间的浪费。
进一步的,在实际应用中,有的属性数据是空的,并没有记录任何数据,这些属性数据是空的,因此,在获取到待存储的行数据之后,确定所述行数据的数据属性可以是,确定所述行数据内包括的空值属性数据。
针对空值属性数据,可采用如下的存储规则对所述行数据进行存储,具体的:
建立所述空值属性数据的标识,将所述空值属性数据的标识添加到如图3所示的空值属性字段内的任意一个空白存储单元内。
在此需要说明的是,空白存储单元可以是位,也可以是字节,如,空值属性字段内的一个存储单元记录了一个空值属性数据的标识,也就是说,空值属性字段内的一个存储单元代表了一个属性。
进一步的,在实际应用中,有的属性有的属性数据在存储到数据库内所占的存储空间(即,字节数)是随着属性值的不同而发生变化,也即,变长属性数据,如,字符型数据,因此,在本说明书实施例中,针对上述变长属性数据也可以每次都按照特定的方式来减少数据所占用的空间,也就是说,假设在第一次存储行数据时使用方法A,在第二次存储行数据时依然使用该方法A。
基于此,在本说明书实施例中,在获取到待存储的行数据之后,确定所述行数据的数据属性可以是,确定行数据内包括的变长属性数据。
在此需要说明的是,本说明书实施例针对变长属性数据,可采用如下的两种存储规则对所述行数据进行存储,具体的:
第一种方式:针对每个所述变长属性数据,生成该变长属性数据对应的第二压缩位图,并获取所述第二压缩位图的长度;确定该变长属性数据内的指定类型的字节;去除全部所述指定类型的字节;将所述第二压缩位图长度和所述压缩位图放置在去除字节后的变长属性数据前,得到该变长属性数据对应的变长属性数据块;按照预设的存储顺序,将每个变长属性数据对应的变长属性数据块存储到如图3所示的变长属性字段内。
在此需要说明的是,指定类型的字节可以是0字节。所生成的第二压缩位图每个存储单元内的数据对应至少两个,去除指定类型的字节之前的变长属性数据内的字节。所述变长属性数据块内存储的数据的顺序为:第二压缩位图的长度位于所述第二压缩位图之前,所述第二压缩位图位于所述去除字节后的变长属性数据之前。该预设的存储顺序为变长属性数据之间的存储顺序,描述了每个变长属性数据块之间的存储关系。
第二种方式:针对每个所述变长属性数据,确定该变长属性数据尾部内指定类型的字节及其数量;去除全部所述指定类型的字节;将所述指定类型的字节的数量放置在去除字节后的变长属性数据前,得到该变长属性数据对应的变长属性数据块;按照预设的存储顺序,将每个变长属性数据对应的变长属性数据块存储到变长属性字段内。
在此需要说明的是,变长属性数据尾部内指定类型的字节,指的是变长属性数据尾部连续重复的指定类型的字节,如,假设指定类型的字节为0,变长属性数据为aafa0000,则,0000为变长属性数据最后连续重的指定类型的字节,在变长属性字段中存储所述变长属性数据尾部内指定类型的字节的数量用于在用户访问该变长属性时能够还原去除字节前的变长属性数据。所述变长属性数据块内存储的数据的顺序为:所述指定类型的字节的数量位于所述去除字节后的变长属性数据之前。该预设的存储顺序为变长属性数据之间的存储顺序,描述了每个变长属性数据块之间的存储关系。
进一步的,由于在通过上述两种存储规则将变长属性数据进行压缩,并存储到变长属性字段后,后续在访问的过程中需要知道每个变长属性数据在变长属性字段内的位置,因此,在本说明书实施例中,获取每个去除字节后的变长属性数据的字节长度,根据每个去除字节后的变长属性数据的字节长度,确定每个变长属性数据的偏移长度,并将偏移长度存储到如图3所示的第一字段内,后续,在访问变长属性字段内的变长属性数据的过程中,想要访问哪个变长属性数据,就直接从第一字段内获取该变长属性数据的偏移长度,根据该变长属性数据的偏移长度,在变长属性字段内查找该变长属性数据。
在此需要说明的是,根据每个去除字节后的变长属性数据的字节长度,确定所述变长属性数据的偏移长度具体可以,按照存储在变长属性字段内的变长属性数据的排列顺序,由后向前确定每个变长属性数据的偏移长度,其中,每个变长属性数据的偏移长度为排在该变长属性数据之后的每个去除字节后的变长属性数据的字节长度之和。
在此还需要说明的是,变长属性数据的偏移长度,指的是变长属性数据距离变长属性字段末尾的长度。
另外,在变长属性字段内存储的变长属性数据是按照原有的顺序存储的,其中,该原有的顺序指的是在现有技术中变长属性数据的存储顺序,按照变长属性数据在变长属性字段内的存储顺序,在第一字段内存储变长属性对应的偏移长度,并且,超过一定数值的偏移长度在存储时会占用两个字节,即,双字节偏移,低于一定数值的偏移长度在存储时会占用一个字节,即,单字节偏移。
进一步的,又由于虽然偏移长度是按照变长属性数据在变长属性字段内的存储顺序存储到第一字段内,且,超过一定数值的偏移长度在存储时会占用两个字节,即,双字节偏移,低于一定数值的偏移长度在存储时会占用一个字节,即,单字节偏移,但是并不知道第一字段内哪个偏移长度占用了两个字节,哪个偏移长度占用了一个字节,因此,在本说明书实施例中,想要准确的查找到每个变长属性数据对应的偏移长度,可以统计所述偏移长度超过预设长度的变长属性数据的数量,将所统计出的数量存储到如图3所示的第二字段内,后续在访问变长属性字段内的变长属性数据的过程中,想要从第一字段内获取哪个变长属性数据的偏移长度,可以根据存储在第二字段内的数量以及第一字段内变长属性数据的偏移长度的排序,来确定所要访问的变长属性数据的偏移长度。
根据该变长属性数据的偏移长度,在变长属性字段内查找该变长属性数据。
在此需要说明的是,预设长度可以是两字节。
在此还需要说明的是,由于现有技术中在基于现有技术的存储结构来访问某个属性数据时需要将存储后的整个行数据解析成每个单独的属性数据,再从解析出的属性数据中查找所要访问的属性数据,而本发明在通过根据每个去除字节后的变长属性数据的字节长度,确定每个变长属性数据的偏移长度,统计所述偏移长度超过预设长度的变长属性数据的数量,将所述偏移长度存储到第一字段内,将所统计出的数量存储到第二字段内,后续在访问某个属性数据时只需要根据存储在第二字段内的数量以及第一字段内变长属性数据的偏移长度的排序,来确定所要访问的变长属性数据的偏移长度,进而再去第一字段内获取偏移长度,最后直接根据偏移长度在变长属性字段内查找到所要访问的属性数据,大大提高了用户访问属性数据的速度。
进一步的,上述提高用户访问属性数据的速度主要针对变长属性数据,在本说明书实施例中,针对定长属性数据和空值属性数据也可以通过以下的方式来提高用户访问属性数据的速度。
具体的,根据合并后的定长属性数据、其他定长属性数据和所述空值属性数据,生成第一压缩位图,其中,所述第一压缩位图中每个存储单元内的数据对应至少两个定长属性数据和/或至少两个空值属性数据,将所述第一压缩位图存储到如图3所示的压缩控制位图字段内。
在此需要说明的是,根据合并后的定长属性数据、其他定长属性数据和所述空值属性数据,生成第一压缩位图,具体可以通过压缩算法(如,位图算法),压缩合并后的定长属性数据、其他定长属性数据和所述空值属性数据,生成第一压缩位图。
所述第一压缩位图中每个存储单元内的数据对应至少两个定长属性数据和/或至少两个空值属性数据,指的是假设第一压缩位图中一个存储单元内存储了一个字节的数据,该一个字节的数据相当于定长属性字段或空值属性数据内的八个字节的数据。
另外,所生成的第一压缩位图可以是多级压缩位图,每一级压缩位图是基于前一级压缩位图生成的,每一级压缩位图的存储单元对应前一级压缩位图的多个存储单元,也就是说,每一级压缩位图是前一级压缩位图的索引,如,生成二级压缩位图,即,第一级压缩位图和第二级压缩位图,其中,第二级压缩是在第一级压缩位图的基础上生成的,第一级压缩位图中的一个字节的数据对应定长属性字段中的八个字节的数据,第二级压缩位图中的一个双字节的数据对应的第一级压缩位图中的四个字节或八个字节的数据。
基于此,本发明实施例提供了一种根据合并后的定长属性数据、其他定长属性数据和所述空值属性数据,生成第一压缩位图的实施方式,具体如下:
根据合并后的定长属性数据、其他定长属性数据和所述空值属性数据,得到一级压缩位图,根据所述一级压缩位图,得到二级压缩位图,其中,所述第一压缩位图包括一级压缩位图和所述二级压缩位图。
通过上述实施方式,通过多级压缩位图的方式,建立多级索引,可以大大提高用户访问属性数据的速度。
<装置实施例>
如图4所示,本实施例还提供了一种数据存储装置,该装置包括:
获取模块401,用于获取待存储的行数据;
确定模块402,用于确定所述行数据的数据属性;
存储模块403,用于根据所述数据属性对应的存储规则对所述行数据进行存储,其中,不同的数据属性对应不同的存储规则。
所述确定模块402具体用于,确定所述行数据内包括的定长属性数据;所述存储模块403具体用于,将未超过预设字节长度的定长属性数据合并;将合并后的定长属性数据和其他定长属性数据共同存储到定长属性字段内。
所述确定模块402具体用于,确定所述行数据内包括的空值属性数据;所述存储模块403具体用于,建立所述空值属性数据的标识;将所述空值属性数据的标识添加到空值属性字段内的任意一个空白存储单元内。
所述装置还包括:
压缩位图建立模块404,用于根据合并后的定长属性数据、其他定长属性数据和所述空值属性数据,生成第一压缩位图,其中,所述第一压缩位图中每个存储单元内的数据对应至少两个定长属性数据和/或至少两个空值属性数据;将所述第一压缩位图存储到压缩控制位图字段内。
所述压缩位图建立模块404具体用于,根据合并后的定长属性数据、其他定长属性数据和所述空值属性数据,得到一级压缩位图;根据所述一级压缩位图,得到二级压缩位图;其中,所述第一压缩位图包括一级压缩位图和所述二级压缩位图。
所述确定模块402具体用于,确定所述行数据内包括的变长属性数据;所述存储模块403具体用于,针对每个所述变长属性数据,生成该变长属性数据对应的第二压缩位图,并获取所述第二压缩位图的长度;确定该变长属性数据内的指定类型的字节;去除全部所述指定类型的字节;将所述第二压缩位图长度和所述压缩位图放置在去除字节后的变长属性数据前,得到该变长属性数据对应的变长属性数据块;按照预设的存储顺序,将每个变长属性数据对应的变长属性数据块存储到变长属性字段内。
所述确定模块402具体用于,确定所述行数据内包括的变长属性数据;所述存储模块403具体用于,针对每个所述变长属性数据,确定该变长属性数据尾部内指定类型的字节及其数量;去除全部所述指定类型的字节;将所述指定类型的字节的数量放置在去除字节后的变长属性数据前,得到该变长属性数据对应的变长属性数据块;按照预设的存储顺序,将每个变长属性数据对应的变长属性数据块存储到变长属性字段内。
所述装置还包括:
偏移长度存储模块405,用于获取每个去除字节后的变长属性数据的字节长度;根据每个去除字节后的变长属性数据的字节长度,确定每个变长属性数据的偏移长度;统计所述偏移长度超过预设长度的变长属性数据的数量;将所述偏移长度存储到第一字段内;将所统计出的数量存储到第二字段内。
<设备实施例>
本发明实施例还提供了一种数据存储设备,如图5所示,该数据存储设备包括上述装置实施例中的数据存储装置。
或者,该数据存储设备包括存储器501和处理器502。其中,存储器用于存储可执行的指令,所述指令用于控制所述处理器执行根据上述方法实施例中任一项所述的方法。
<计算机存储介质>
本发明还提供一种计算机存储介质,所述存储介质存储有计算机指令,当所述存储介质中的计算机指令由处理器执行时,实现如上述方法实施例中任一项所述的方法。
本发明可以是***、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。本发明的范围由所附权利要求来限定。
Claims (11)
1.一种数据存储方法,其特征在于,所述方法包括:
获取待存储的行数据;
确定所述行数据的数据属性;
根据所述数据属性对应的存储规则对所述行数据进行存储,其中,不同的数据属性对应不同的存储规则。
2.根据权利要求1所述的方法,其特征在于,确定所述行数据的数据属性,包括:
确定所述行数据内包括的定长属性数据;
根据所述数据属性对应的存储规则对所述行数据进行存储,包括:
将未超过预设字节长度的定长属性数据合并;
将合并后的定长属性数据和其他定长属性数据共同存储到定长属性字段内。
3.根据权利要求2所述的方法,其特征在于,确定所述行数据的数据属性还包括:
确定所述行数据内包括的空值属性数据;
根据所述数据属性对应的存储规则对所述行数据进行存储,包括:
建立所述空值属性数据的标识;
将所述空值属性数据的标识添加到空值属性字段内的任意一个空白存储单元内。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
根据合并后的定长属性数据、其他定长属性数据和所述空值属性数据,生成第一压缩位图,其中,所述第一压缩位图中每个存储单元内的数据对应至少两个定长属性数据和/或至少两个空值属性数据;
将所述第一压缩位图存储到压缩控制位图字段内。
5.根据权利要求4所述的方法,其特征在于,根据合并后的定长属性数据、其他定长属性数据和所述空值属性数据,生成第一压缩位图,包括:
根据合并后的定长属性数据、其他定长属性数据和所述空值属性数据,得到一级压缩位图;
根据所述一级压缩位图,得到二级压缩位图;
其中,所述第一压缩位图包括所述一级压缩位图和所述二级压缩位图。
6.根据权利要求1所述的方法,其特征在于,确定所述行数据的数据属性还包括:
确定所述行数据内包括的变长属性数据;
根据所述数据属性对应的存储规则对所述行数据进行存储包括:
针对每个所述变长属性数据,生成该变长属性数据对应的第二压缩位图,并获取所述第二压缩位图的长度;
确定该变长属性数据内的指定类型的字节;
去除全部所述指定类型的字节;
将所述第二压缩位图长度和所述压缩位图放置在去除字节后的变长属性数据前,得到该变长属性数据对应的变长属性数据块;
按照预设的存储顺序,将每个变长属性数据对应的变长属性数据块存储到变长属性字段内。
7.根据权利要求1所述的方法,其特征在于,确定所述行数据的数据属性还包括:
确定所述行数据内包括的变长属性数据;
根据所述数据属性对应的存储规则对所述行数据进行存储包括:
针对每个所述变长属性数据,确定该变长属性数据尾部内指定类型的字节及其数量;
去除全部所述指定类型的字节;
将所述指定类型的字节的数量放置在去除字节后的变长属性数据前,得到该变长属性数据对应的变长属性数据块;
按照预设的存储顺序,将每个变长属性数据对应的变长属性数据块存储到变长属性字段内。
8.根据权利要求6或7所述的方法,其特征在于,所述方法还包括:
获取每个去除字节后的变长属性数据的字节长度;
根据每个去除字节后的变长属性数据的字节长度,确定每个变长属性数据的偏移长度;
统计所述偏移长度超过预设长度的变长属性数据的数量;
将所述偏移长度存储到第一字段内;
将所统计出的数量存储到第二字段内。
9.一种数据存储装置,其特征在于,包括:
获取模块,用于获取待存储的行数据;
确定模块,用于确定所述行数据的数据属性;
存储模块,用于根据所述数据属性对应的存储规则对所述行数据进行存储,其中,不同的数据属性对应不同的存储规则。
10.一种数据存储设备,其特征在于,包括:处理器和存储器;
所述存储器用于存储可执行的指令,所述指令用于控制所述处理器执行根据权利要求1-8中任一项所述的方法。
11.一种计算机存储介质,其特征在于,所述存储介质存储有计算机指令,当所述存储介质中的计算机指令由处理器执行时,实现如权利要求1-8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010477537.2A CN113742332A (zh) | 2020-05-29 | 2020-05-29 | 数据存储方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010477537.2A CN113742332A (zh) | 2020-05-29 | 2020-05-29 | 数据存储方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113742332A true CN113742332A (zh) | 2021-12-03 |
Family
ID=78724807
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010477537.2A Pending CN113742332A (zh) | 2020-05-29 | 2020-05-29 | 数据存储方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113742332A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114168085A (zh) * | 2021-12-16 | 2022-03-11 | 潍柴动力股份有限公司 | 变量处理方法、装置、设备及存储介质 |
CN114443670A (zh) * | 2022-04-07 | 2022-05-06 | 北京奥星贝斯科技有限公司 | 数据的存储、读取方法及装置 |
-
2020
- 2020-05-29 CN CN202010477537.2A patent/CN113742332A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114168085A (zh) * | 2021-12-16 | 2022-03-11 | 潍柴动力股份有限公司 | 变量处理方法、装置、设备及存储介质 |
CN114168085B (zh) * | 2021-12-16 | 2024-02-20 | 潍柴动力股份有限公司 | 变量处理方法、装置、设备及存储介质 |
CN114443670A (zh) * | 2022-04-07 | 2022-05-06 | 北京奥星贝斯科技有限公司 | 数据的存储、读取方法及装置 |
CN114443670B (zh) * | 2022-04-07 | 2022-07-08 | 北京奥星贝斯科技有限公司 | 数据的存储、读取方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10585915B2 (en) | Database sharding | |
CN111090628A (zh) | 一种数据处理方法、装置、存储介质及电子设备 | |
CN107704202B (zh) | 一种数据快速读写的方法和装置 | |
US10127254B2 (en) | Method of index recommendation for NoSQL database | |
US9953065B2 (en) | Method for processing a database query | |
CN109086456B (zh) | 数据索引方法及装置 | |
CN110874396B (zh) | 一种关键词抽取方法、装置以及计算机存储介质 | |
CN111708805A (zh) | 数据查询方法、装置、电子设备及存储介质 | |
CN113742332A (zh) | 数据存储方法、装置、设备及存储介质 | |
JP2021535473A (ja) | 大量な文書コーパスにおけるトークン・マッチング | |
CN114579561A (zh) | 数据处理方法和装置、存储介质 | |
CN114817651B (zh) | 数据存储方法、数据查询方法、装置和设备 | |
CN111488341B (zh) | 数据库索引的管理方法、装置及电子设备 | |
CN108255486B (zh) | 用于表单设计的视图转换方法、装置和电子设备 | |
CN116127154A (zh) | 知识标签推荐方法、装置、电子设备及存储介质 | |
CN112559497B (zh) | 一种数据处理方法、一种信息传输方法、装置及电子设备 | |
CN112000667B (zh) | 用于检索树形数据的方法、装置、服务器和介质 | |
CN114117149A (zh) | 一种敏感词过滤方法及装置、存储介质 | |
CN109840080B (zh) | 字符属性比较方法、装置、存储介质及电子设备 | |
CN111723177A (zh) | 信息提取模型的建模方法、装置及电子设备 | |
CN113495891A (zh) | 一种数据处理方法和装置 | |
CN114359610B (zh) | 实体分类的方法、装置、设备以及存储介质 | |
CN111143232A (zh) | 用于存储元数据的方法、设备和计算机程序产品 | |
CN110911015B (zh) | 基于剖面隐式马氏模型的疾病名称标准化快速计算方法 | |
US20230214394A1 (en) | Data search method and apparatus, electronic device and storage medium |
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 |