CN111291037A - 一种数据存储和查询方法、装置、设备及计算机存储介质 - Google Patents
一种数据存储和查询方法、装置、设备及计算机存储介质 Download PDFInfo
- Publication number
- CN111291037A CN111291037A CN201811399203.7A CN201811399203A CN111291037A CN 111291037 A CN111291037 A CN 111291037A CN 201811399203 A CN201811399203 A CN 201811399203A CN 111291037 A CN111291037 A CN 111291037A
- Authority
- CN
- China
- Prior art keywords
- data
- query
- line
- cache region
- memory
- 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
- 238000000034 method Methods 0.000 title claims abstract description 88
- 238000013500 data storage Methods 0.000 title claims abstract description 55
- 238000004458 analytical method Methods 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 15
- 238000012545 processing Methods 0.000 claims description 14
- 239000013598 vector Substances 0.000 claims description 10
- 238000010586 diagram Methods 0.000 description 16
- 230000008569 process Effects 0.000 description 9
- 238000007906 compression Methods 0.000 description 8
- 230000006835 compression Effects 0.000 description 8
- 238000012986 modification Methods 0.000 description 8
- 230000004048 modification Effects 0.000 description 8
- 238000006243 chemical reaction Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 239000000463 material Substances 0.000 description 6
- 238000005457 optimization Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013144 data compression Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 101100328886 Caenorhabditis elegans col-2 gene Proteins 0.000 description 1
- 101100328884 Caenorhabditis elegans sqt-3 gene Proteins 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 239000000446 fuel Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据存储和查询方法、装置、设备及计算机存储介质。其中,数据存储方法包括:根据待存储的数据表生成行式数据块;在内存中设置第一缓存区域,并在第一缓存区域中建立列式数据结构;获取行式数据块,根据列式数据结构将行式数据块转化为对应的列式数据块并存储至第一缓存区域。数据查询方法用于对采用本发明实施例的方法存储的数据进行查询,包括:根据查询语句和存储于第一缓存区域内的列式数据块,确定查询语句是否满足第二条件;基于确定结果,确定是否在内存中执行查询语句。根据本发明实施例,能够在内存中增加用于分析型查询的列式数据块,以提高分析型查询的效率。
Description
技术领域
本发明属于计算机技术领域,尤其涉及一种数据存储和查询方法、装置、设备及计算机存储介质。
背景技术
随着大数据时代的到来,用于支持互联网技术的软件及硬件的不断更新,各类软件积累的数据越来越多,导致不断积累的海量数据对数据库系统的事务型操作需求也越来越多,例如,需要对海量数据进行大量读操作的分析型查询。
在传统的关键型数据中,为了支持大量的事务型操作,通常采用的是行式存储模式。对采用行式存储模式存储的数据进行分析型查询时,需要读取所有的列中的数据,导致数据读取、查询的运行时间较长,数据分析的效率较低。
为了解决上述的问题,现有如下的解决方案:
1、根据需要新建用于分析型查询的索引,从而提高该类查询检索的速度。但是,新增索引会增加存储空间,从而使数据插入更新时效率降低。另外,还可能存在多种具有不同的筛选条件的分析型查询,这样,就要针对这些不同的分析型查询建多个索引,而引起其他操作的执行计划的变更。
2、为数据库系统配备高端存储或闪存卡,以提高设备的输入/输入(Input/Output,I/O)性能。但是,这样会增加采购设备的成本,且设备的到货周期一般较长,不能迅速满足分析型查询应用的新增的存储及查询需求,并且,即使是高端存储或闪存卡也存在着性能上限,可能无法满足迅速增长的存储及查询需求。
3、使用备库或其他与源库同步的容灾端进行分析型查询操作。但是,这种方法需要对分析型查询应用进行改造,严格将其中的只读业务拆分出来,并将其连接到备库或者容灾端,对分析型查询应用有较大的局限。
4、将数据库系统的存储模式更改为列式存储模式或无关系型(NoSQL)模式。但是,这种方法将对数据库系统和分析型查询应用进行较大改造,且在对大量数据进行插入修改操作时,性能较差。
发明内容
本发明实施例提供一种数据存储和查询方法、装置、设备及计算机存储介质,能够在内存中增加用于分析型查询的列式数据块,以提高分析型查询的效率。
一方面,本发明实施例提供一种数据存储方法,包括:
根据待存储的数据表生成行式数据块;
在内存中设置第一缓存区域,并在所述第一缓存区域中建立列式数据结构;
获取所述行式数据块,根据所述列式数据结构将所述行式数据块转化为对应的列式数据块并存储至所述第一缓存区域。
另一方面,本发明实施例提供了一种数据查询方法,用于对采用上述的方法存储的数据进行查询,包括:
根据查询语句和存储于第一缓存区域内的列式数据块,确定所述查询语句是否满足第二条件;
基于确定结果,确定是否在所述内存中执行所述查询语句。
又一方面,本发明实施例提供了一种数据存储装置,所述装置包括:
第一存储模块,其配置为根据待存储的数据表生成行式数据块;
第一设置模块,其配置为在内存中设置第一缓存区域,并在所述第一缓存区域中建立列式数据结构;
第二存储模块,其配置为获取所述行式数据块,根据所述列式数据结构将所述行式数据块转化为对应的列式数据块并存储至所述第一缓存区域。
再一方面,本发明实施例提供了一种数据查询装置,用于对采用上述的装置存储的数据进行查询,所述装置包括:
第一处理模块,其配置为根据查询语句和存储于第一缓存区域内的列式数据块,确定所述查询语句是否满足第二条件;
第二处理模块,其配置为基于确定结果,确定是否在所述内存中执行所述查询语句。
再一方面,本发明实施例提供了一种数据存储设备,所述设备包括:处理器以及存储有计算机程序指令的存储器;
所述处理器执行所述计算机程序指令时实现上述的数据存储方法。
再一方面,本发明实施例提供了一种数据查询设备,所述设备包括:处理器以及存储有计算机程序指令的存储器;
所述处理器执行所述计算机程序指令时实现上述的数据查询方法。
再一方面,本发明实施例提供了一种计算机存储介质,所述计算机存储介质上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述的数据存储方法或者上述的数据查询方法。
本发明实施例的数据存储和查询方法、装置、设备及计算机存储介质,在将待存储的数据表以行式数据块的形式存储于数据库系统的存储设备的同时,能够将行式数据块转化为对应的列式数据块并存储于数据库系统的内存中,在进行无索引的分析型查询时,能够直接利用内存中的列式数据块进行查询及分析,在进行有索引的分析型查询时,能够在数据块的存储设备中进行查询及分析,能够提高分析型查询的效率。并且,在本发明实施例中,无需改变数据库系统的硬件设备或数据库系统的存储模式,保证了插入修改操作的性能,降低了成本。另外,在本发明实施例中,也未对分析型查询应用进行改造,降低了分析型查询应用的局限性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单的介绍,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例提供的数据存储方法的流程示意图;
图2是本发明一个实施例的列式数据结构的结构示意图;
图3是本发明一个实施例的行式数据块与列式数据块的转换示意图;
图4是本发明一个实施例中将列式数据块存储至第一缓存区域的流程示意图;
图5是本发明另一个实施例提供的数据存储方法的流程示意图;
图6是本发明一个实施例提供的数据更新方法的流程示意图;
图7是本发明实施例的数据更新方法的一个示例的流程示意图;
图8是本发明一个实施例提供的数据查询方法的流程示意图;
图9是本发明实施例中的数据查询方法的一个示例的流程示意图;
图10是本发明一个实施例中在内存中执行查询语句的流程示意图;
图11-15是本发明实施例中的查询优化方法的一个示例的示意图;
图16是本发明一个实施例提供的数据存储装置的结构示意图;
图17是本发明一个实施例提供的数据存储装置的结构示意图;
图18是本发明一个实施例由数据存储装置和数据查询装置结合的数据系统的结构示意图;
图19是本发明实施例提供的数据存储设备和数据查询设备的硬件结构示意图。
具体实施方式
下面将详细描述本发明的各个方面的特征和示例性实施例,为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及具体实施例,对本发明进行进一步详细描述。应理解,此处所描述的具体实施例仅被配置为解释本发明,并不被配置为限定本发明。对于本领域技术人员来说,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明更好的理解。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
为了解决现有技术问题,本发明实施例提供了一种数据存储和查询方法、装置、设备及计算机存储介质。下面首先对本发明实施例所提供的数据存储和查询方法进行介绍。
图1示出了本发明一个实施例提供的数据存储方法的流程示意图。如图1所示,数据存储方法包括:
S110、根据待存储的数据表生成行式数据块;
S120、在内存中设置第一缓存区域,并在第一缓存区域中建立列式数据结构;
S130、获取行式数据块,根据列式数据结构将行式数据块转化为对应的列式数据块并存储至第一缓存区域。
本发明实施例的数据存储方法,在将待存储的数据表生成行式数据块,并且以行式数据块的形式存储于数据库系统的存储设备的同时,能够将行式数据块转化为对应的列式数据块并存储于数据库系统的内存中,以使在进行无索引的分析型查询时,能够直接利用内存中的列式数据块进行查询及分析,在进行有索引的分析型查询时,能够在数据块的存储设备中进行查询及分析,能够提高分析型查询的效率。
在步骤S110中,存储设备可以为数据库系统的硬盘、磁盘等外部存储设备。在这些外部存储设备中,可以根据存储设备的存储单元的大小,将待存储的数据表生成一个或者多个行式数据块,并将行式数据块存储于存储设备的存储单元中。
在步骤S120中,在内存中设置的第一缓存区域可以作为数据池(DataPool,DP),用于保存列式数据块,每个DP内可以保存1M的列式数据块。其中,数据单元(DataUnit,DU)是DP的基本存储单位。
图2示出了本发明一个实施例的列式数据结构的结构示意图。如图2所示,在每个DU中建立的列式数据结构由区域名(header)区域和数据部分构成,其中,header区域保存了该DU对应的数据表名称、该DU内所有数据列的基本信息及压缩信息。其中,所有数据列的基本信息可以包括数据列的列名,数据列在对应的DU当中的最大值和最小值,以及他们所对应的偏移量,以在查询数据时通过对比最大和最小值的方式快速过滤掉不满足条件的数据。数据部分包括多列数据列,位于首列的为行编号(rowid),其他数据列col1,col2,…,coln可以由用户定义需要存储的数据类型,并根据该数据类型存储对应的数据。
图3示出了本发明一个实施例的行式数据块与列式数据块的转换示意图。
本发明实施例的步骤S130用于数据库系统的存储设备中的待存储的数据表加载到内存的第一缓存区域中。首先,当用户发起存储请求时,需要分析待存储的数据表和该数据表的数据列,取出相对应的字段定义,存储在DU的header区域中。然后,在数据库系统的存储设备中按行顺序查询待存储的数据表的所有数据,并依次将每一行按字段值存入列式数据结构的相应位置中,这样就完成了如图3所示的从行式数据块到列式数据块的转换。
由于在第一缓存区域中的数据是以列式形式存储的,因此,在本发明实施例中,可以根据需要选择只加载待存储的数据表的部分列,或者待存储的数据表的一个区域。
图4示出了本发明一个实施例中将列式数据块存储至第一缓存区域的流程示意图。如图4所示,步骤S130、根据列式数据结构将行式数据块转化为对应的列式数据块并存储至第一缓存区域包括:
S131、将列式数据块压缩成压缩数据块;
S132、将压缩数据块及其对应的压缩信息存储至第一缓存区域。
在本发明实施例中,可以持续扫描要存储至第一缓存区域的所有DU中的列式数据块,并对这些DU对应的列式数据块分别进行压缩。其中,本发明实施例中可以采用两种压缩方法:
第一种方法
在本发明实施例中,可以采用字典编码算法对列式数据块进行压缩。在完成行式数据块向列式数据块的转换时,可以获取列式数据块中每个数据列多有拥有的数据值,对这些数据值分别赋予与对应的长度小于数据值的替代值,并根据数据值、替代值及其一一对应关系生成一个字典。然后,将列式数据块中的数据值替换为字典中对应的替代值,生成压缩数据块。由于替代值的长度小于数据值的长度,因此,可以压缩行式数据块的存储空间。
下面以一个具体示例进行说明。
行式数据块对应的第一原始数据表如表1所示。
表1第一原始数据表
order_type |
MATERIAL |
MATERIAL |
MATERIAL |
MATERIAL |
MATERIAL |
PARTS |
PARTS |
根据表1所示的数据值,为其分别匹配对应的替代值,并生成如表2所示的字典表。
表2字典表
MATERIAL | 00 |
PARTS | 01 |
FUEL | 02 |
SUPPLIES | 03 |
根据表2中的数据值和替代值的对应关系,利用替代值分别替换表1中的数据值,并形成如表3所示的压缩数据块对应的第一压缩存储表。
表3第一压缩存储表
order_type |
00 |
00 |
00 |
00 |
00 |
01 |
01 |
第二种方法
在本发明实施例中,可以采用长度编码算法对列式数据块进行压缩。长度编码算法的原理为,在完成行式数据块向列式数据块的转换时,可以获取列式数据块中每个数据列多有拥有的数据值,并且用一个三元组记录数据值、数据出现的起始位置和持续长度,以代替具有相同值的若干连续数据值,最终使三元组的存储长度少于原始数据的长度。具体地址,三元组可以描述为(X,Y,Z),其中X为数据值,Y为起始位置,Z为长度。
下面以一个具体示例进行说明。
行式数据块对应的第二原始数据表如表4所示。
表4第二原始数据表
order_type | product_type | product_id |
Q1 | 1 | 2 |
Q1 | 1 | 5 |
Q1 | 1 | 8 |
Q1 | 1 | 4 |
Q1 | 2 | 5 |
Q2 | 3 | 2 |
Q2 | 3 | 4 |
根据长度编码算法转换后的第二压缩存储表如表5所示。
表5第二压缩存储表
根据上表可以看出,本方法对于重复数据的压缩率很高,且对读取和数据同步更新影响不大。
在本发明实施例中,由于在内存中采用列式形式对数据进行存储,每一列的数据类型和格式均一致、特征相似且可能出现很多相同的数据值,因此,可以获得较高的压缩率。而在现有技术中,由于采用行式形式对数据进行存储,每行数据的类型和格式均一致均不一致,不利于压缩,即使压缩,其压缩比也较低。可见,本发明实施例相对于现有技术,在数据压缩后不仅可以减小存储空间,且每次读取时可以获得更多的数据,因此,可以获得更快的处理速度。
图5示出了本发明另一个实施例提供的数据存储方法的流程示意图。如图5所示,本发明另一实施例的数据存储方法,还包括:
S140、在内存中设置第二缓存区域;
S150、获取列式数据块对应的元信息并存储至第二缓存区域。
在步骤S140中,在内存中设置的第二缓存区域可以作为元数据池(MetadataPool,MP)。在本发明实施例中,第一缓存区域和第二缓存区域共同构成用于存储待存储的数据表的存储区域。每个MP内可以保存64K的元信息数据。其中,元数据单元(MetadataUnit,MU)是MP的基本存储单位。
在步骤S150中,列式数据块对应的元信息可以包括DU对应的指针,DU包含的值范围,记录数据变更记录的logtable以及rowid位图等。
在本发明实施例中,由于设置了用于存储列式数据块对应的元信息的第二缓存区域,因此,能够方便、快速地进行数据筛选和更新列式数据块的数据。例如,通过记录某一个数据列的最大值和最小值,可以确定DU包含的值范围,能够在查询时避免访问大量不满足条件的数据。
图6示出了本发明一个实施例提供的数据更新方法的流程示意图。如图6所示,本发明实施例的数据存储方法,还包括:
S210、获取第一操作并缓存于第二缓存区域中;
S220、当满足第一条件时,根据第一操作和元信息更新列式数据块和行式数据块。
在本发明实施例中,由于数据库系统仍存在很多的对数据进行插入修改删除的事务处理操作,因此,需要保证存储于存储设备中的行式数据块和存储于内存中的列式数据块的一致性。如果修改的数据并没有被加载到内存当中,那么对数据的修改就仅限于数据库系统的存储设备中,从而导致没有被加载到内存当中的修改数据不能被看到,因此,需要在内存中执行数据的修改,以使用户能在内存中存储的列式数据块中看到最新的数据。
图7示出了本发明实施例的数据更新方法的一个示例的流程示意图。如图7所示的示例是利用在第二缓存区域中存储的行式数据块对应的元信息中的记录数据变更记录的log table来实现行式数据块和列式数据块的一致性的。
在第二缓存区域的MU中可以设置log table,log table可以包括缓存区域(private log)和共享区域(shared log),每个DU在对应的MU中都会有与其对应的logtable。
首先,通过内存系统的后台进程抓取全部用于对数据表进行变更的第一操作的记录,并将其缓存在private log中。然后,当满足第一条件时,private log中缓存的第一操作的记录将被发送至shared log中,并根据rowid位图在MU中与该记录对应的元信息上进行标记。以使在对于该MU对应的DU中的列式数据块进行查询时,当查询到变更的数据位置时,就能够直接指向shared log中的新数据。同时,当满足第一条件时,private log中缓存的第一操作的记录也被发送至存储设备中,以保证了存储和查询的读一致性。
在本发明实施例中,由于第一操作对应的变更的新数据直接存入share log中,因此,可以提高更新、查询列式数据块的效率。
在本发明实施例中,第一条件可以包括:
列式数据块中的旧数据的比例达到第一阈值;或
距离上一次更新列式数据块的时间达到第一时间间隔。
具体地,在本发明实施例中,第一操作可能是不断发生的,这就会使log table中的记录逐渐增多,甚至出现DU的列式数据块中的大部分的数据都是旧数据,而新数据都保存在log table中的情况。为了保证更新的及时性,可以设置第一阈值为大于等于50%,当DU的列式数据块中的旧数据的比例达到第一阈值时就会触发将private log中缓存的第一操作的记录发送至shared log中的操作。另外,还可以设置第一时间间隔为2分钟,即可以每2分钟触发将private log中缓存的第一操作的记录发送至shared log中的操作。
需要说明的是,在本发明另一实施例中,还可以将第一阈值和第一时间间隔结合作为第一条件,即每个第一时间间隔确定DU的列式数据块的旧数据的比例是否达到第一阈值。继续以上述的设置值为例,可以每2分钟对DU的列式数据块中的旧数据的比例是否达到50%进行判断,如果发现比例达到了50%,就会触发将private log中缓存的第一操作的记录发送至shared log中的操作。
图8示出了本发明一个实施例提供的数据查询方法的流程示意图。如图8所示,数据查询方法用于对采用本发明实施例的数据存储方法存储的数据进行查询,包括:
S310、根据查询语句和存储于第一缓存区域内的列式数据块,确定查询语句是否满足第二条件;
S320、基于确定结果,确定是否在所述内存中执行所述查询语句。
进一步地,基于确定结果,确定是否在所述内存中执行所述查询语句可以具体包括:
若查询语句满足第二条件,则在内存中执行查询语句;若查询语句不满足第二条件,则在存储设备中执行查询语句。
由于本发明实施例的数据存储方法,在将待存储的数据表以行式数据块的形式存储于数据库系统的存储设备的同时,能够将行式数据块转化为对应的列式数据块并存储于数据库系统的内存中,因此,使本发明实施例的数据查询方法,在进行无索引的分析型查询时,能够直接利用内存中的列式数据块进行查询及分析,在进行有索引的分析型查询时,能够在数据块的存储设备中进行查询及分析,能够提高分析型查询的效率。
在本发明实施例中,第二条件包括:
列式数据块包含查询语句所涉及的待查询的数据表及数据表中的数据列,且查询语句所涉及的数据列为非索引列。
具体地,查询语句所涉及的数据列包括分析条件所涉及的数据列和查询条件所涉及的数据列。非索引列为列式数据块中的数据列不包括索引,否则,该数据列为索引列。
图9示出了本发明实施例中的数据查询方法的一个示例的流程示意图。如图9所示,当获取到一条操作语句时,首先会对该操作语句进行分析,获取待查询的数据表的表名、分析条件所涉及的数据列及查询条件所涉及的数据列的列名、以及操作类型,并按下述顺序进行各个规则判断:
1、操作语句是否是查询语句;
2、所涉及的待查询的数据表是否全部为保存在内存中的列式数据块对应的数据表;
3.分析条件所涉及的数据列和查询条件所涉及的数据列是否都包含在这些列式数据块中;
4.查询条件所涉及的数据列是否包含索引。
若第1-3条规则都为真,且第4条规则为否,则在内存中执行查询语句,否则,在外部设备中执行查询语句。
图10示出了本发明一个实施例中在内存中执行查询语句的流程示意图。如图10所示,确定在内存中执行查询语句后,还包括:
S410、根据查询语句的查询条件,在查询语句所涉及的数据列中基于位向量标记法提取查询数据;
S420、利用查询数据生成列式查询数据块;
S430、根据列式查询数据块和查询语句的分析条件确定查询语句的执行结果。
由于分析型查询的主要特点是其只关心数据表当中查询语句所涉及到的数据列而非全部的数据列,并且查询语句所涉及到的数据列可能会有大量的重复值,同时,查询条件所涉及的数据列一般为常见的数据类型(例如:数值,字符串,日期),基于上述特点,可以对查询操作进行优化,以提高分析型查询的性能。
在本发明实施例中,根据查询条件生成的查询结果会以表的形式向用户返回,由于数据在内存中是通过列式形式存储的,因此,在向用户显示查询结果时,必须将分开存储的数据列重新组织成数据表。为了解决上述问题,本发明实施例采用位向量标记法进行数据查询,即利用位向量标识行的位置的方法,直到最后必须取数据值时再取出相应的数据列的数据值,以尽可能避免不必要的数据传输开销。
下面根据图11-15以一个查询优化方法的示例进行详细说明。
获取到的查询语句为:
select custID,sum(price)from table where prodID=4and storeID=3
由DU中查询到该查询语句所涉及的数据列如图11所示,分别包括prodID、storeID、custID和price四个数据列。
首先,按查询条件执行查询。如图12所示,根据查询条件pro dID=4,storeID=1,将prodID,storeID两个数据列分别用位向量进行选择标定,数据值与查询条件相同则标记为1,不同则标记为0。
然后,将两个数据列对应的位向量进行逻辑与运算,得到一个目标位向量的列向量,如图13所示。
其次,将该列向量与storeID、custID两个数据列进行逻辑与运算,并将查询得到的查询结果的数据组织成数据表,如图14所示。
最后,通过组织成数据表的数据进行聚合运算,根据分析条件得到查询语句的执行结果custID,SUM(price),如图15所示。
可见,通过上述的优化操作,能高效得到查询语句的执行结果,并将执行结果集返回给用户。
图16示出了本发明一个实施例提供的数据存储装置的结构示意图。如图16所示,本发明实施例的数据存储装置包括:
第一存储模块510,其配置为根据待存储的数据表生成行式数据块;
第一设置模块520,其配置为在内存中设置第一缓存区域,并在第一缓存区域中建立列式数据结构;
第二存储模块530,其配置为获取行式数据块,根据列式数据结构将行式数据块转化为对应的列式数据块并存储至第一缓存区域。
在本发明实施例中,还包括第二设置模块540,其配置为将列式数据块压缩成压缩数据块,将压缩数据块及其对应的压缩信息存储至第一缓存区域。
在本发明实施例中,还包括:
第三设置模块550,其配置为在内存中设置第二缓存区域;
第三存储模块560,其配置为获取列式数据块对应的元信息并存储至第二缓存区域。
在本发明实施例中,还包括第四设置模块570,其配置为获取第一操作并缓存于第二缓存区域中,当满足第一条件时,根据第一操作和元信息更新列式数据块和行式数据块。
图17示出了本发明一个实施例提供的数据存储装置的结构示意图。如图17所示,本发明实施例的数据查询装置,用于对采用上述的装置存储的数据进行查询,装置包括:
第一处理模块610,其配置为根据查询语句和存储于第一缓存区域内的列式数据块,确定查询语句是否满足第二条件;
第二处理模块620,其配置为基于确定结果,确定是否在内存中执行查询语句。
进一步地,还包括:
第一查询模块630,其配置为当第二处理模块630确定查询语句满足第二条件时,则在内存中执行查询语句;
第二查询模块640,其配置为当第二处理模块630确定查询语句不满足第二条件时,则在存储设备中执行查询语句。
在本发明实施例中,还包括第三处理模块650,其配置为:
根据查询语句的查询条件,在查询语句所涉及的数据列中基于位向量标记法提取查询数据;利用查询数据生成列式查询数据块;根据列式查询数据块和查询语句的分析条件确定查询语句的执行结果。
图18示出了本发明一个实施例由数据存储装置和数据查询装置结合的数据系统的结构示意图。如图18所示,第一存储模块和存储设备构成了数据系统的数据库,第一设置模块和第三设置模块构成了数据系统的内存缓存区域,第二存储模块和第三存储模块构成了数据系统的数据装载模块,第二设置模块构成了数据系统的数据压缩模块,第四设置模块构成了数据系统的数据同步模块,第一处理模块、第二处理模块、第一查询模块和第二查询模块构成了数据系统的结构化查询语言(Structured Query Language,sql)访问模块,用于接收并分析业务系统发送的SQL查询语句,第三处理模块成了数据系统的查询优化模块。
本实施例在数据系统的内存中增加上述模块构成的数据缓存系统,能够将需要的数据表按列式形式存入数据缓存系统的内存缓存区域中,并将所有修改操作在数据缓存系统中和数据库中同步进行,存储在数据缓存系统中的数据按相关算法进行压缩,节约内存空间;在接收到在有相关数据表的大量读操作的分析性查询时直接在数据缓存系统中进行统计查询,从而实现高效查询的目的。
图19示出了本发明实施例提供的数据存储设备和数据查询设备的硬件结构示意图。
数据存储设备和数据查询设备可以分别包括处理器710以及存储有计算机程序指令的存储器720。
具体地,上述处理器710可以包括中央处理器(CPU),或者特定集成电路(Application Specific Integrated Circuit,ASIC),或者可以被配置成实施本发明实施例的一个或多个集成电路。
存储器720可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器720可包括硬盘驱动器(Hard Disk Drive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(Universal Serial Bus,USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器720可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器720可在综合网关容灾设备的内部或外部。在特定实施例中,存储器720是非易失性固态存储器。在特定实施例中,存储器720包括只读存储器(ROM)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、电可改写ROM(EAROM)或闪存或者两个或更多个以上这些的组合。
处理器710通过读取并执行存储器720中存储的计算机程序指令,以实现上述实施例中的任意一种数据存储或数据查询方法。
在一个示例中,数据存储设备和数据查询设备还可分别包括通信接口730和总线740。其中,如图19所示,处理器710、存储器720、通信接口730通过总线740连接并完成相互间的通信。
通信接口730,主要用于实现本发明实施例中各模块、装置、单元和/或设备之间的通信。
总线740包括硬件、软件或两者,将在线数据流量计费设备的部件彼此耦接在一起。举例来说而非限制,总线可包括加速图形端口(AGP)或其他图形总线、增强工业标准架构(EISA)总线、前端总线(FSB)、超传输(HT)互连、工业标准架构(ISA)总线、无限带宽互连、低引脚数(LPC)总线、存储器总线、微信道架构(MCA)总线、外围组件互连(PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(SATA)总线、视频电子标准协会局部(VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线740可包括一个或多个总线。尽管本发明实施例描述和示出了特定的总线,但本发明考虑任何合适的总线或互连。
该数据存储设备或数据查询设备可以执行本发明实施例中的数据存储方法或数据查询方法,从而实现结合本申请的数据存储和查询方法及装置。
另外,结合上述实施例中的数据存储和查询方法,本发明实施例可提供一种计算机存储介质来实现。该计算机存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种数据存储方法或数据查询方法。
需要明确的是,本发明并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦除ROM(EROM)、软盘、CD-ROM、光盘、硬盘、光纤介质、射频(RF)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。
还需要说明的是,本发明中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本发明不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
以上所述,仅为本发明的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。
Claims (13)
1.一种数据存储方法,其特征在于,包括:
根据待存储的数据表生成行式数据块;
在内存中设置第一缓存区域,并在所述第一缓存区域中建立列式数据结构;
获取所述行式数据块,根据所述列式数据结构将所述行式数据块转化为对应的列式数据块并存储至所述第一缓存区域。
2.根据权利要求1所述的数据存储方法,其特征在于,根据所述列式数据结构将所述行式数据块转化为对应的列式数据块并存储至所述第一缓存区域包括:
将所述列式数据块压缩成压缩数据块;
将所述压缩数据块及其对应的压缩信息存储至所述第一缓存区域。
3.根据权利要求1所述的数据存储方法,其特征在于,还包括:
在内存中设置第二缓存区域;
获取所述列式数据块对应的元信息并存储至所述第二缓存区域。
4.根据权利要求3所述的数据存储方法,其特征在于,还包括:
获取第一操作并缓存于所述第二缓存区域中;
当满足第一条件时,根据所述第一操作和所述元信息更新所述列式数据块和所述行式数据块。
5.根据权利要求4所述的数据存储方法,其特征在于,所述第一条件包括:
所述列式数据块中的旧数据的比例达到第一阈值;或
距离上一次更新所述列式数据块的时间达到第一时间间隔。
6.一种数据查询方法,用于对采用权利要求1-5任一项所述的方法存储的数据进行查询,其特征在于,包括:
根据查询语句和存储于第一缓存区域内的列式数据块,确定所述查询语句是否满足第二条件;
基于确定结果,确定是否在所述内存中执行所述查询语句。
7.根据权利要求6所述的数据查询方法,其特征在于,所述第二条件包括:
所述列式数据块包含所述查询语句所涉及的待查询的数据表及所述数据表中的数据列,且所述查询语句所涉及的数据列为非索引列。
8.根据权利要求6所述的数据查询方法,其特征在于,确定在所述内存中执行所述查询语句后,还包括:
根据所述查询语句的查询条件,在所述查询语句所涉及的数据列中基于位向量标记法提取查询数据;
利用所述查询数据生成列式查询数据块;
根据所述列式查询数据块和所述查询语句的分析条件确定所述查询语句的执行结果。
9.一种数据存储装置,其特征在于,所述装置包括:
第一存储模块,其配置为根据待存储的数据表生成行式数据块;
第一设置模块,其配置为在内存中设置第一缓存区域,并在所述第一缓存区域中建立列式数据结构;
第二存储模块,其配置为获取所述行式数据块,根据所述列式数据结构将所述行式数据块转化为对应的列式数据块并存储至所述第一缓存区域。
10.一种数据查询装置,用于对采用权利要求9所述的装置存储的数据进行查询,其特征在于,所述装置包括:
第一处理模块,其配置为根据查询语句和存储于第一缓存区域内的列式数据块,确定所述查询语句是否满足第二条件;
第二处理模块,其配置为基于确定结果,确定是否在所述内存中执行所述查询语句。
11.一种数据存储设备,其特征在于,所述设备包括:处理器以及存储有计算机程序指令的存储器;
所述处理器执行所述计算机程序指令时实现如权利要求1-5任意一项所述的数据存储方法。
12.一种数据查询设备,其特征在于,所述设备包括:处理器以及存储有计算机程序指令的存储器;
所述处理器执行所述计算机程序指令时实现如权利要求6-8任意一项所述的数据查询方法。
13.一种计算机存储介质,其特征在于,所述计算机存储介质上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现如权利要求1-5任意一项所述的数据存储方法或者如权利要求6-8任意一项所述的数据查询方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811399203.7A CN111291037A (zh) | 2018-11-22 | 2018-11-22 | 一种数据存储和查询方法、装置、设备及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811399203.7A CN111291037A (zh) | 2018-11-22 | 2018-11-22 | 一种数据存储和查询方法、装置、设备及计算机存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111291037A true CN111291037A (zh) | 2020-06-16 |
Family
ID=71021076
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811399203.7A Pending CN111291037A (zh) | 2018-11-22 | 2018-11-22 | 一种数据存储和查询方法、装置、设备及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111291037A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111858609A (zh) * | 2020-07-27 | 2020-10-30 | 北京金山云网络技术有限公司 | 区块链模糊查询方法及装置 |
CN114547144A (zh) * | 2022-01-30 | 2022-05-27 | 清华大学 | 时序数据范围查询方法、装置及设备 |
CN117093597A (zh) * | 2023-10-16 | 2023-11-21 | 恒生电子股份有限公司 | 数据处理方法及装置 |
CN117171110A (zh) * | 2023-09-15 | 2023-12-05 | 北京云枢创新软件技术有限公司 | 一种指定目标位置的定位方法、电子设备及存储介质 |
CN117931802A (zh) * | 2024-01-25 | 2024-04-26 | 南京雀翼信息科技有限公司 | 一种多数据源的高速写入读取系统及其方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160070726A1 (en) * | 2013-09-21 | 2016-03-10 | Oracle International Corporation | Automatic verification and triage of query results |
CN106557494A (zh) * | 2015-09-25 | 2017-04-05 | 北京国双科技有限公司 | 更新列存储表的方法及装置 |
WO2017071525A1 (zh) * | 2015-10-30 | 2017-05-04 | 北京国双科技有限公司 | 数据存储方法、装置和数据查询方法、装置 |
CN107239479A (zh) * | 2017-03-28 | 2017-10-10 | 阿里巴巴集团控股有限公司 | 一种基于区块链的数据存储以及查询的方法及装置 |
CN107992492A (zh) * | 2016-10-26 | 2018-05-04 | 中国移动通信有限公司研究院 | 一种数据区块的存储方法、读取方法、其装置及区块链 |
-
2018
- 2018-11-22 CN CN201811399203.7A patent/CN111291037A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160070726A1 (en) * | 2013-09-21 | 2016-03-10 | Oracle International Corporation | Automatic verification and triage of query results |
CN106557494A (zh) * | 2015-09-25 | 2017-04-05 | 北京国双科技有限公司 | 更新列存储表的方法及装置 |
WO2017071525A1 (zh) * | 2015-10-30 | 2017-05-04 | 北京国双科技有限公司 | 数据存储方法、装置和数据查询方法、装置 |
CN107992492A (zh) * | 2016-10-26 | 2018-05-04 | 中国移动通信有限公司研究院 | 一种数据区块的存储方法、读取方法、其装置及区块链 |
CN107239479A (zh) * | 2017-03-28 | 2017-10-10 | 阿里巴巴集团控股有限公司 | 一种基于区块链的数据存储以及查询的方法及装置 |
Non-Patent Citations (1)
Title |
---|
李瑞;: "数据库查询优化技术的研究与实现" * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111858609A (zh) * | 2020-07-27 | 2020-10-30 | 北京金山云网络技术有限公司 | 区块链模糊查询方法及装置 |
CN114547144A (zh) * | 2022-01-30 | 2022-05-27 | 清华大学 | 时序数据范围查询方法、装置及设备 |
CN114547144B (zh) * | 2022-01-30 | 2023-03-24 | 清华大学 | 时序数据范围查询方法、装置及设备 |
CN117171110A (zh) * | 2023-09-15 | 2023-12-05 | 北京云枢创新软件技术有限公司 | 一种指定目标位置的定位方法、电子设备及存储介质 |
CN117171110B (zh) * | 2023-09-15 | 2024-04-05 | 北京云枢创新软件技术有限公司 | 一种指定目标位置的定位方法、电子设备及存储介质 |
CN117093597A (zh) * | 2023-10-16 | 2023-11-21 | 恒生电子股份有限公司 | 数据处理方法及装置 |
CN117093597B (zh) * | 2023-10-16 | 2024-01-23 | 恒生电子股份有限公司 | 数据处理方法及装置 |
CN117931802A (zh) * | 2024-01-25 | 2024-04-26 | 南京雀翼信息科技有限公司 | 一种多数据源的高速写入读取系统及其方法 |
CN117931802B (zh) * | 2024-01-25 | 2024-09-13 | 南京雀翼信息科技有限公司 | 一种多数据源的高速写入读取系统及其方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111291037A (zh) | 一种数据存储和查询方法、装置、设备及计算机存储介质 | |
US10216794B2 (en) | Techniques for evaluating query predicates during in-memory table scans | |
KR101708261B1 (ko) | 개별 액세스 가능한 데이터 유닛의 스토리지 관리 | |
US8924373B2 (en) | Query plans with parameter markers in place of object identifiers | |
US20130103655A1 (en) | Multi-level database compression | |
CN110659282B (zh) | 数据路由的构建方法、装置、计算机设备和存储介质 | |
KR20090075885A (ko) | 개별적으로 액세스 가능한 데이터 유닛의 기억 관리 방법 및 시스템 | |
CN109815240B (zh) | 用于管理索引的方法、装置、设备和存储介质 | |
CN111061758B (zh) | 数据存储方法、装置及存储介质 | |
CN111930615B (zh) | 代码质量评估方法及装置 | |
CN117081602B (zh) | 基于区块链的资金结算数据优化处理方法 | |
CN111611250A (zh) | 数据存储设备、数据查询方法、装置、服务器及存储介质 | |
CN115827660B (zh) | 数据更新方法、装置、电子设备及非易失性存储介质 | |
US20200226116A1 (en) | Fast index creation system for cloud big data database | |
CN105279281A (zh) | 一种物联网数据存取方法 | |
WO2012164738A1 (ja) | データベース管理システム、装置及び方法 | |
CN104408128A (zh) | 一种基于b+树异步更新索引的读优化方法 | |
CN112783927B (zh) | 一种数据库查询方法及系统 | |
US10366067B2 (en) | Adaptive index leaf block compression | |
CN111858581B (zh) | 一种分页查询的方法、装置、存储介质和电子设备 | |
CN110825747B (zh) | 一种信息存取方法、装置和介质 | |
CN115794861A (zh) | 基于特征摘要的离线数据查询复用方法及其应用 | |
CN113625967B (zh) | 数据存储方法、数据查询方法及服务器 | |
CN112817969B (zh) | 数据查询方法、系统、电子设备和存储介质 | |
CN108984720B (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200616 |
|
RJ01 | Rejection of invention patent application after publication |