CN110019014A - 向文件系统写入数据记录的方法和装置 - Google Patents
向文件系统写入数据记录的方法和装置 Download PDFInfo
- Publication number
- CN110019014A CN110019014A CN201711375100.2A CN201711375100A CN110019014A CN 110019014 A CN110019014 A CN 110019014A CN 201711375100 A CN201711375100 A CN 201711375100A CN 110019014 A CN110019014 A CN 110019014A
- Authority
- CN
- China
- Prior art keywords
- value
- line unit
- data record
- train
- section
- 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
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/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
- G06F16/148—File search processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Library & Information Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种向文件系统写入数据记录的方法和装置,该方法基于数据记录的行键值所属的行键值查询段,以及数据记录的列值所属的列值查询段,对文件系统中的数据块进行筛选,确定写入数据记录的目标数据块。这种基于数据记录的行键值和列值确定存储数据记录的目标数据块的方式,使得在查询数据记录的过程中,可以根据待查询的数据记录的行键值和列值,共同对文件系统中的数据块进行筛选,有利于减少查询数据记录的过程中读取至内存中的数据块的数量。
Description
技术领域
本申请涉及计算机领域,并且更具体地,涉及向文件系统写入数据记录的方法和装置。
背景技术
在从文件系统中查询待查询的数据记录时,必须以数据块为单位将数据块中的数据记录全部读到数据库的内存中,再通过对内存中的数据记录进行查询,获取待查询的数据记录。即使待查询的数据记录仅仅为几百比特,也需要从文件系统中读取至少一个数据块中全部的数据记录至数据库的内存中,而每个数据块中存储的数据记录的数据量通常为128M或64M,也就是说,读取至内存中的数据记录的数据量是待查询的数据记录的数据量的数倍,造成读放大。
现有技术中,通过设置二级索引的方式,减少读到内存中的数据块的数量,具体而言,数据库基于待查询的数据记录的行键值,以及二级索引指示的文件系统中存储的数据记录的行键值的取值范围与数据块之间的映射关系,确定存储待查询的数据记录的目标数据块;或者数据库中的处理单元基于待查询的数据记录的行键值,以及二级索引指示的文件系统中存储的数据记录的行键值的取值范围与数据块之间的映射关系,确定存储待查询的数据记录的目标数据块,实现对文件系统中的数据块筛选的。
然而,上述根据二级索引对文件系统中的数据块筛选的方式,能够减少的读取到内存中的数据块的数量是有限的,也就是说,需要从文件系统中读取到内存中的数据记录的数据量依然很大。
发明内容
本申请提供一种向文件系统写入数据记录的方法和装置,在查询待查询的数据记录时,有利于减少从文件系统读取至内存中的数据块的数量。
第一方面,提供一种向文件系统写入数据记录的方法,包括:获取待写入的数据记录,所述数据记录的行键值对应数据表的行键,所述数据记录的列值对应所述数据表的列;根据所述数据记录的行键值,确定所述数据记录的行键值所属的行键值查询段,所述数据表的行键值被分配至至少两个行键值查询段;根据所述数据记录的列值,确定所述数据记录的列值所属的列值查询段,所述数据表的列被分配至至少两个列值查询段;根据所述数据记录的行键值所属的行键值查询段,所述数据记录的列值所属的列值查询段,以及预先记录的所述文件系统的分区信息,确定所述数据记录的目标数据块,其中所述文件系统的分区信息包括所述文件系统的每个数据块所属的行键值查询段和所述文件系统的每个数据块所属的列值查询段,所述目标数据块所属的行键值查询段包括所述数据记录的行键值,所述目标数据块所属的列值查询段包括所述数据记录的列值;将所述数据记录存入所述目标数据块。
需要说明的是,上述目标数据块可以是一个或多个数据块。
在本申请实施例中,基于数据记录的行键值所属的行键值查询段,以及数据记录的列值所属的列值查询段,对文件系统中的数据块进行筛选,确定写入数据记录的目标数据块。这种基于数据记录的行键值和列值确定存储数据记录的目标数据块的方式,使得在查询数据记录的过程中,可以根据待查询的数据记录的行键值和列值,共同对文件系统中的数据块进行筛选,有利于减少查询数据记录的过程中读取至内存中的数据块的数量。
可选地,数据表的列被分配至的至少两个列值查询段,与数据表的列簇被分配至的至少两个列值查询段可以不同,也可以相同。
可选地,上述目标数据块所属的行键值查询段为包括数据记录的行键值的最小的行键值的取值范围,即最小的行键值的取值范围;上述目标数据块所属的列值查询段为包括数据记录的列值的最小的列值的取值范围,即最小的列值的取值范围。
通过上述最小的行键值的取值范围以及最小的列值的取值范围确定目标数据块,有利于减少读取至内存中的数据块的数量。
结合第一方面,在一种可能的实现方式中,所述方法还包括:获取预设时间段内对所述数据表进行查询的多个查询语句;根据所述多个查询语句的行键值确定行键值查询段划分值;根据所述多个查询语句的列值确定列值查询段划分值;根据所述行键值查询段划分值将所述数据表中的行键值划分为所述至少两个行键值查询段;根据所述列值查询段划分值将所述数据表中的列值划分为所述至少两个列值查询段。
本申请实施例通过对多个查询语句中的行键值和列值进行统计,确定行键值查询段划分值以及列值查询段划分值,有利于提高上述至少两个行键值查询段以及至少两个列值查询段划分的合理性。
结合第一方面,在一种可能的实现方式中,所述根据所述多个查询语句的行键值确定行键值查询段划分值,包括:选取在所述多个查询语句中出现次数高于第一预设次数的行键值作为所述行键值查询段划分值。
本申请实施例基于多个查询语句中不同的行键值的出现次数,选择行键值查询段的划分值,有利于将用户经常查询的数据记录的行键值作为行键值查询段划分值,以提高上述至少两个行键值查询段划分的合理性。
结合第一方面,在一种可能的实现方式中,所述根据所述多个查询语句的列值确定列值查询段划分值,包括:选取在所述多个查询语句中出现次数高于第二预设次数的列值作为所述列值查询段划分值。
本申请实施例基于多个查询语句中不同的列值的出现次数,选择列值查询段的划分值,有利于将用户经常查询的数据记录的列值作为列值查询段划分值,以提高上述至少两个列值查询段划分的合理性。
结合第一方面,在一种可能的实现方式中,所述多个查询语句中包括不同的多个行键值,所述方法还包括:确定所述多个查询语句中每个查询语句查询到的数据记录的数量;根据所述多个查询语句中每个查询语句查询到的数据记录的数量,确定所述多个行键值中每个行键值查询到的数据记录的总量;所述根据所述多个查询语句的行键值确定行键值查询段划分值,包括:从所述多个行键值中每个行键值查询到的数据记录的总量中,选取高于第一阈值的至少一个第一数据记录总量;确定查询到所述至少一个第一数据记录总量中的每个第一数据记录总量的行键值为所述行键值查询段划分值。
本申请实施例基于多个查询语句通过不同的行键值查询的数据记录的总数量,选择行键值查询段的划分值,有利于使得查询的数据记录的总数量较多的行键值作为行键值查询段划分值,以提高上述至少两个行键值查询段划分的合理性。
结合第一方面,在一种可能的实现方式中,所述多个查询语句中包括不同的多个列值,所述方法包括:确定所述多个查询语句中每个查询语句查询到的数据记录的数量;根据所述多个查询语句中每个查询语句查询到的数据记录的数量,确定所述多个列值中每个列值查询到的数据记录的总量;所述根据所述多个查询语句的列值确定列值查询段划分值,包括:从所述多个列值中每个列值查询到的数据记录的总量,选取高于第二阈值的至少一个第二数据记录总量;确定查询到所述至少一个第二数据记录总量中的每个第二数据记录总量的列值为所述列值查询段划分值。
本申请实施例基于多个查询语句通过不同的列值查询的数据记录的总数量,选择列值查询段的划分值,有利于使得查询的数据记录的总数量较多的列值作为列值查询段划分值,以提高上述至少两个列值查询段划分的合理性。
结合第一方面,在一种可能的实现方式中,所述多个行键值中每个行键值查询到的数据记录的总量为N=∑Nb,其中,b表示所述多个行键值中的任意一个行键值,Nb表示针对行键值为b的一次查询操作,查询到的数据记录的数量。
结合第一方面,在一种可能的实现方式中,所述多个列值中每个列值查询到的数据记录的总量为M=∑Ma,其中,a表示所述多个列值中的任意一个列值,Ma表示针对列值为a的一次查询操作,查询到的数据记录的数量。
第二方面,提供了一种向文件系统写入数据记录的装置,所述装置包括用于执行上述方面中的方法的各个模块。
第三方面,提供了一种计算机,包括处理器和存储器,该存储器用于存储计算机程序,该处理器用于从存储器中调用并运行该计算机程序,使得该计算机执行上述方面中的方法。
第四方面,提供了一种计算机系统,包括至少两个处理器和至少两个存储器,该至少两个存储器用于存储计算机程序,该至少两个处理器用于从至少两个存储器中调用并运行该计算机程序,使得该计算机执行上述方面中的方法。
第五方面,提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行上述各方面中的方法。
第六方面,提供了一种计算机可读介质,所述计算机可读介质存储有程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行上述各方面中的方法。
第七方面,提供了一种芯片系统,该芯片系统包括处理器,用于计算设备实现上述方面中所涉及的功能,例如,生成,接收,发送,或处理上述方法中所涉及的数据和/或信息。在一种可能的设计中,所述芯片系统还包括存储器,所述存储器,用于保存计算设备中必要的程序指令和数据。该芯片系统,可以由至少一个芯片构成,也可以包括芯片和其他分立器件。
附图说明
图1是本申请实施例适用的存储系统的架构图。
图2是传统的查询数据记录的方法的示意性流程图。
图3是本申请实施例的向文件系统写入数据记录的方法的示意性流程图。
图4是本申请实施例的查询数据记录的方法的示意性流程图。
图5示出了本申请实施例的文件系统中各数据块所属的行键值查询段和列值查询段的示意图。
图6是本申请实施例的向文件系统写入数据记录的装置的示意性结构图。
图7是本申请实施例的计算机的示意性框图。
图8是本申请实施例的计算机系统的示意性框图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
为了便于理解,以Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)与Hadoop数据库(Hadoop Database,HBase)构成的存储系统为例,结合图1介绍本申请实施例适用的场景。
图1是本申请实施例适用的存储系统的架构图。图1所示的存储系统包括HBase110和HDFS 120。
Hbase110,用于实现对HDFS中存储的数据进行管理,以及对HDFS进行访问等功能。
HDFS 120,包括多个存储节点,用于为包含数据记录的数据块提供存储空间。
下文基于图1所示的存储系统的架构简单介绍传统的查询数据记录的方法。
图2是传统的查询数据记录的方法的示意性流程图。图2所示的方法包括步骤210至步骤240。
210,Hbase接收用户发送的查询语句,该查询语句为:select*from Table whereRowKey>5000000and Col1<3000。
具体地,用户通过上述查询语句查询行键(RowKey)值满足RowKey>5000000且列(Column)值满足Col1<3000的数据记录。
220,Hbase通过二级索引确定存储行键值满足RowKey>5000000的数据记录的数据块。
具体地,上述二级索引用于指示数据表中行键值的取值范围和数据块之间的映射关系。通过二级索引确定存储RowKey>5000000的数据记录的数据块为数据块1、数据块2、数据块3和数据块4。
230,Hbase将数据块1、数据块2、数据块3和数据块4中的数据记录读取至Hbase的内存中。
240,Hbase根据查询语句进一步对读取至内存中的数据记录进行查询,获取待查询数据记录。
具体地,Hbase从读取至内存中的数据记录中查询Col1<3000的数据记录,作为最终查询到的数据记录。
从图2所示的传统的查询数据记录的方法中可以看出,传统的查询方式在将数据记录读取至内存之前,仅仅根据二级索引指示的数据表的行键值的取值范围与数据块的映射关系,对HDFS中存储的数据块进行筛选,而不考虑查询语句中针对待查询的数据记录的列值的取值范围的限定,使得对读取到内存中的数据块的数量仍然很多,读取至内存中的数据记录的数据量也可能依然是待查询的数据记录的数据量的数倍。
假设上述查询语句查询的数据记录仅仅存储在数据块1和数据块2中,且数据块中存储的数据记录的数据量为64MB或128MB。由于在使用上述传统的查询方式对数据记录进行查询时,仅能基于二级索引根据查询语句中的RowKey<5000000对数据块进行筛选,最终读取至内存中的数据块为数据块1、数据块2、数据块3和数据块4,换句话说,即使数据块3和数据块4中的数据记录的列值不属于Col1<3000的列值的取值范围,也会被读取至内存中。因此,基于上述的例子,多读取了两个数据块中的数据记录的数据量(128M或256M)至内存中,使得读取至内存中的数据记录的数据量是待查询的数据记录的数据量的2倍,引发了读放大。
为了减少基于传统的数据记录的查询方式造成的读放大,本申请实施例提供了一种写入数据记录的方法,综合考虑待查询数据的行键值和列值,对文件系统中的数据块进行筛选。下面结合图3详细说明本申请实施例的向文件系统写入数据记录的方法。
图3是本申请实施例的向文件系统写入数据记录的方法的示意性流程图。应理解,图3所示的方法可以由图1所示Hbase执行,还可以由可以实现对存储系统中的文件系统中的数据记录进行管理的至少一个处理器执行。图3所示的方法包括步骤310至步骤350。
需要说明的是,图3所示的方法可以适用于向文件系统中写入新的数据记录的场景,或者对文件系统中存储有的数据记录进行重新存储的场景,本申请实施例对此不做限定。
310,获取待写入的数据记录,所述数据记录的行键值对应数据表的行键,所述数据记录的列值对应所述数据表的列。
具体的,上述数据表包括行键(RowKey)和列(Column),其中数据表的行键项中记录有文件系统中存储的全部的数据记录的行键值(key value),数据表的列项中记录有文件系统中存储的全部的数据记录的列值(column value)。例如,上述数据表可以是Hbase表。
可选地,获取待写入的数据记录可以包括获取写IO,写IO中包含待写入的数据记录的行键值和列值。
320,根据所述数据记录的行键值,确定所述数据记录的行键值所属的行键值查询段,所述数据表的行键值被分配至至少两个行键值查询段。
具体地,上述行键值查询段可以指行键值的取值范围。
上述数据表的行键值被分配至至少两个行键值查询段,可以理解为文件系统中的全部的数据记录的行键值被分配至多个查询段。
例如,文件系统中的全部的数据记录的行键值的取值范围为key value∈[0,10000000],则文件系统中的全部的数据记录的行键值可以被划分为行键值查询段keyvalue∈[0,5000000],以及行键值查询段key value∈[5000001,10000000]。
330,根据所述数据记录的列值,确定所述数据记录的列值所属的列值查询段,所述数据表的列被分配至至少两个列值查询段。
具体地,上述列值查询段可以指列值的取值范围。
上述数据表的列值被分配至至少两个列值查询段,可以理解为文件系统中的全部的数据记录的列值被分配至多个查询段。
例如,文件系统中的全部的数据记录的列值的取值范围为colum value∈[0,5000],则文件系统中的全部的数据记录的列值可以被划分为列值查询段colum value∈[0,3000],以及列值查询段colum value∈[3001,5000]。
需要说明的是,上述数据表的列可以包括数据表的列和/或数据表的列簇(columnfamily)。
还应理解,数据表的列被分配至的至少两个列值查询段,与数据表的列簇被分配至的至少两个列值查询段可以不同,也可以相同。
340,根据所述数据记录的行键值所属的行键值查询段,所述数据记录的列值所属的列值查询段,以及预先记录的所述文件系统的分区信息,确定所述数据记录的目标数据块,其中所述文件系统的分区信息包括所述文件系统的每个数据块所属的行键值查询段和所述文件系统的每个数据块所属的列值查询段,所述目标数据块所属的行键值查询段包括所述数据记录的行键值,所述目标数据块所属的列值查询段包括所述数据记录的列值。
具体地,上述文件系统的分区信息还可以理解为用于指示文件系统中的每个数据块属于多个行键值查询段中的哪个查询段,并指示文件系统中每个数据块属于多个列值查询段中的哪个查询段。
上述目标数据块所属的行键值查询段包括所述数据记录的行键值,所述目标数据块所属的列值查询段包括所述数据记录的列值,可以理解为上述目标数据块为待写入的数据记录所属的数据块。
需要说明的是,上述目标数据块所属的行键值查询段为包括数据记录的行键值的最小的行键值的取值范围,即最小的行键值的取值范围;上述目标数据块所属的列值查询段为包括数据记录的列值的最小的列值的取值范围,即最小的列值的取值范围。
通过上述最小的行键值的取值范围以及最小的列值的取值范围确定目标数据块,有利于减少读取至内存中的数据块的数量。
应理解,上述目标数据块可以是一个或多个数据块。
可选地,不同数据块对应的行键值查询段不完全相同,且不同数据块对应的列值查询段不完全相同。
350,将所述数据记录存储至目标数据块中。
在本申请实施例中,基于数据记录的行键值所属的行键值查询段,以及数据记录的列值所属的列值查询段,对文件系统中的数据块进行筛选,确定写入数据记录的目标数据块。这种基于数据记录的行键值和列值确定存储数据记录的目标数据块的方式,使得在查询数据记录的过程中,可以根据待查询的数据记录的行键值和列值,共同对文件系统中的数据块进行筛选,有利于减少查询数据记录的过程中读取至内存中的数据块的数量。
下文重点介绍将上述数据表中的行键值分配至至少两个行键值查询段,以及将上述数据表中的列值分配至至少两个列值查询段的分配方法。
具体地,上述至少两个行键值查询段和至少两个列值查询段可以是预设的,也就是说,用于划分数据表的行键值查询段的行键值查询段划分值,和用于划分数据表的列值查询段的列值查询段划分值可以是预设的。上述行键值查询段划分值和列值查询段划分值还可以是基于预设时间段内的查询语句的统计结果确定的。下文主要介绍基于预设时间段内的查询语句的统计结果确定行键值查询段划分值和列值查询段划分值的方法。
可选地,作为一个实施例,所述方法还包括:获取预设时间段内对所述数据表进行查询的多个查询语句;根据所述多个查询语句的行键值确定行键值查询段划分值;根据所述多个查询语句的列值确定列值查询段划分值;根据所述行键值查询段划分值将所述数据表中的行键值划分为所述至少两个行键值查询段;根据所述列值查询段划分值将所述数据表中的列值划分为所述至少两个列值查询段。
具体的,上述查询语句的行键值,可以理解为查询语句查询的数据记录的行键值的取值范围的边界值;上述查询语句的列值,可以理解为查询语句查询的数据记录的列值的取值范围的边界值。
例如,查询语句为:select*from Table where RowKey<5000000and Col1<3000时,查询语句的行键值为5000000,查询语句的列值为3000。
一、基于多个查询语句的行键值确定行键值查询段划分值的方法。
可选地,通过对预设时间段内查询语句的行键值进行计算,得到行键值查询段划分值。例如,对预设时间段内查询语句的行键值取平均值,确定预设时间段内查询语句的行键值的平均值为行键值查询段划分值。
可选地,基于选取行键值查询段划分值的预设规则,从多个查询语句的行键值中选取行键值查询段划分值。
选取行键值查询段划分值的预设规则一,选取在多个查询语句中出现次数高于第一预设次数的行键值作为所述行键值查询段划分值。
例如,上述多个查询语句包括查询语句1:select*from Table where RowKey>5000000;查询语句2:select*from Table where RowKey>4000000;查询语句3:select*from Tablewhere RowKey<5000000and Col1<3000;且上述第一预设次数为2,则从上述多个查询语句的行键值中选取行键值查询段划分值为:RowKey=5000000。
选取行键值查询段划分值的预设规则二,按照多个查询语句的行键值出现次数从高到低的顺序,选取预设个数的行键值作为所述行键值查询段划分值。
例如,上述多个查询语句包括查询语句1:select*from Table where RowKey>5000000;查询语句2:select*from Table where RowKey>4000000;查询语句3:select*from Tablewhere RowKey<5000000and Col1<3000;且上述预设个数为1,则从上述多个查询语句的行键值中选取行键值查询段划分值为:RowKey=5000000。
选取行键值查询段划分值的预设规则三,基于多个查询语句中不同的多个行键值中每个行键值查询的数据记录的总量,确定行键值查询段划分值。
也就是说,所述多个查询语句中包括不同的多个行键值,所述方法还包括:确定所述多个查询语句中每个查询语句查询到的数据记录的数量;根据所述多个查询语句中每个查询语句查询到的数据记录的数量,确定所述多个行键值中每个行键值查询到的数据记录的总量;所述根据所述多个查询语句的行键值确定行键值查询段划分值,包括:从所述多个行键值中每个行键值查询到的数据记录的总量中,选取高于第一阈值的至少一个第一数据记录总量;确定查询到所述至少一个第一数据记录总量中的每个第一数据记录总量的行键值为所述行键值查询段划分值。
具体地,上述多个行键值中每个行键值查询到的数据记录的总量,可以指多个查询语句中包含多个行键值中每个行键值的查询语,查询的数据记录的总数。
应理解,上述多个查询语句中包含多个行键值中每个行键值的查询语可以是一条或多条查询语。
例如,第一阈值为3万条,且在使用上述查询语句1-查询语句3对文件系统中的数据记录进行查询时,每条查询语句查询的数据记录的数量的具体情况为:查询语句1查询到的数据记录的数量为3.5万条,查询语句2查询到的数据记录的数量为2.5万条,查询语句3查询到的数据记录的数量为1万条,其中,查询语句1:select*from Table where RowKey>5000000;查询语句2:select*from Table where RowKey<5000000and Col1<3000;查询语句3:select*from Table where RowKey>3000000。
据统计,与行键值(RowKey,5000000)相关的数据的数据记录的总数量为查询语句1和查询语句2查询到的数据记录的总数5.5万条,与行键值(RowKey,3000000)相关的数据的数据记录的总数量为1万条,则查询到第一数据记录总量的查询语句的行键值为RowKey=5000000,可以作为行键值查询段划分值。
可选地,作为一个实施例,所述多个行键值中每个行键值查询到的数据记录的总量为N=∑Nb,其中,b表示所述多个行键值中的任意一个行键值,Nb表示针对行键值为b的一次查询操作,查询到的数据记录的数量。
选取行键值查询段划分值的预设规则四,选取多个查询语句中出现的全部行键值,作为行键值查询段划分值。
需要说明的是,上述选取行键值查询段划分值的预设规则一至选取行键值查询段划分值的预设规则四,仅仅作为选取行键值查询段划分值的具体方式,本申请实施例对选取行键值查询段划分值的预设规则的具体形式不做限定。
二、基于多个查询语句的列值确定列值查询段划分值的方法。
可选地,通过对预设时间段内查询语句的列值进行计算,得到列值查询段划分值。例如,对预设时间段内查询语句的列值取平均值,确定预设时间段内查询语句的列值的平均值为列值查询段划分值。
可选地,基于选取列值查询段划分值的预设规则,从多个查询语句的列值中选取行键值查询段划分值。
选取列值查询段划分值的预设规则一,选取多个查询语句中出现次数高于第二预设次数的列值作为所述列值查询段划分值。
例如,上述多个查询语句包括查询语句1:select*from Table where Col1<3000;查询语句2:select*from Table where Col1>4000;查询语句3:select*from TablewhereRowKey<5000000and Col1<3000;且上述第二预设次数为2,则从上述多个查询语句的列值中选取列值查询段划分值为:Col1=3000。
选取列值查询段划分值的预设规则二,按照多个查询语句的列值出现次数从高到低的顺序,选取预设个数的列值作为所述列值查询段划分值。
例如,上述多个查询语句包括查询语句1:select*from Table where Col1<3000;查询语句2:select*from Table where Col1>4000;查询语句3:select*from TablewhereRowKey<5000000and Col1<3000;且上述预设个数为1,则从上述多个查询语句的列值中选取列值查询段划分值为:Col1=3000。
选取列值查询段划分值的预设规则三,基于多个查询语句中不同的多个列值中每个列值查询的数据记录的总量,确定列值查询段划分值。
也就是说,所述多个查询语句中包括不同的多个列值,所述方法包括:确定所述多个查询语句中每个查询语句查询到的数据记录的数量;根据所述多个查询语句中每个查询语句查询到的数据记录的数量,确定所述多个列值中每个列值查询到的数据记录的总量;所述根据所述多个查询语句的列值确定列值查询段划分值,包括:从所述多个列值中每个列值查询到的数据记录的总量,选取高于第二阈值的至少一个第二数据记录总量;确定查询到所述至少一个第二数据记录总量中的每个第二数据记录总量的列值为所述列值查询段划分值。
具体地,上述多个列值中每个列值查询到的数据记录的总量,可以指多个查询语句中包含多个列值中每个列值的查询语,查询的数据记录的总数。
应理解,上述多个查询语句中包含多个列值中每个列值的查询语可以是一条或多条查询语。
例如,第二阈值为3万条,且在使用上述查询语句1-查询语句3对文件系统中的数据记录进行查询时,每条查询语句查询的数据记录的数量的具体情况为:查询语句1查询到的数据记录的数量为3.5万条,查询语句2查询到的数据记录的数量为2.5万条,查询语句3查询到的数据记录的数量为1万条,其中,查询语句1:select*from Table where Col1<3000;查询语句2:select*from Table where RowKey<5000000and Col1<3000;查询语句3:select*from Table where Col2<2000。
据统计,与列值(Col1,3000)相关的数据的数据记录的总数量为查询语句1和查询语句2查询到的数据记录的总数5.5万条,与列值(Col2,2000)相关的数据的数据记录的总数量为1万条,则查询到第二数据记录总量的查询语句的列值为Col1=3000,可以作为列值查询段划分值。
可选地,作为一个实施例,所述多个列值中每个列值查询到的数据记录的总量为M=∑Ma,其中,a表示所述多个列值中的任意一个列值,Ma表示针对列值为a的一次查询操作,查询到的数据记录的数量。
选取列值查询段划分值的预设规则四,选取多个查询语句中出现的全部列值,作为列值查询段划分值。
需要说明的是,上述选取列值查询段划分值的预设规则一至选取列值查询段划分值的预设规则四,仅仅作为选取列值查询段划分值的具体方式,本申请实施例对选取列值查询段划分值的预设规则的具体形式不做限定。
还应理解,上述确定行键值查询段划分值的方式和上述确定列值查询段划分值的方式可以相互组合,以将数据表中的行键值分配至至少两个行键值查询段,将数据表中的列值分配至至少两个列值查询段。
下文结合图4详细介绍本申请实施例的查询数据记录的方法。应理解,在图4所示的查询数据记录的过程中与图3所示的向文件系统写入数据记录的过程中,可以使用相同的文件系统的分区信息。
图4是本申请实施例的查询数据记录的方法的示意性流程图。还应理解,图4所示的方法可以由图1所示的Hbase执行,还可以由可以实现对存储系统中的文件系统中的数据记录进行管理的至少一个处理器执行。图4所示的方法包括步骤410至步骤430。
410,获取用于对数据表中的数据记录进行查询的目标目标查询语句。
具体地,上述目标查询语句中包括待查询的数据记录的行键值需要满足的行键值的取值范围,和/或待查询的数据记录的列值需要满足的列值的取值范围。例如,目标查询语句为select*from Table where RowKey>5100000and Col1<3000。
需要说明的是,当目标查询语句查询的数据记录的行键值的取值范围包括全部行键值查询段划分值,则无法通过文件系统的分区信息中的行键值查询段对文件系统中的数据块进行筛选。当目标查询语句查询的数据记录的列值的取值范围包括全部列值查询段划分值,则无法通过文件系统的分区信息中的列值查询段对文件系统中的数据块进行筛选。例如,行键值查询段划分值为RowKey=5000000,且上述目标查询语句为select*fromTable whereRowKey<5100000时,可以将文件系统中全部的数据记录读取到内存中,再基于目标查询语句对数据记录进行查询。
420,根据目标查询语句中的行键值的取值范围和/或列值的取值范围,以及文件系统的分区信息,确定存储目标查询语句查询的数据记录的数据块。
具体的,将目标查询语句中的行键值的取值范围与上述至少两个行键值查询段进行对比,从至少两个行键值查询段中确定包含行键值的取值范围的行键值查询段;和/或将目标查询语句中的列值的取值范围与上述至少两个行键值查询段进行对比,从至少两个行键值查询段中确定包含列值的取值范围的查询段。
可选地,从至少两个行键值查询段中确定包含行键值的取值范围的行键值查询段,可以包括从至少两个行键值查询段中确定包含行键值的取值范围的最短的行键值查询段。上述从至少两个列值查询段中确定包含列值的取值范围的列值查询段,可以包括从至少两个列值查询段中确定包含列值的取值范围的最短的列值查询段。
例如,假设通过图3所示的方法,将数据表的行键值划分为两个行键值查询段RowKey>5000000以及RowKey≤5000000,行键值查询段的划分值为RowKey=5000000;将数据表的Col1列的列值划分为两个列值查询段Col1≥3000以及Col1<3000,Col1列的列值查询段的划分值为Col1=3000;将数据表的Col2列的列值划分为两个列值查询段Col2≥‘M’以及Col2<‘M’,Col2列的列值查询段的划分值为Col2=‘M’,且文件系统中每个数据块所属的行键值查询段和列值查询段参见图5所示。
目标查询语句select*from Table where RowKey>5000000and Col1<3000中,包含的行键值的取值范围为RowKey>5000000,列值的取值范围为Col1<3000。将RowKey>5000000与位于二叉树的顶层的数据表的行键对应的查询段进行比较,得到(RowKey>5000000)>(RowKey=5000000),则满足RowKey>5000000的待查询的数据记录存储在位于二叉树的左子树的数据块中,即数据块1、数据块2、数据块3和数据块4。
将目标查询语句包含的列值的取值范围Col1<3000与位于二叉树的第二层的数据表的列对应的查询段进行比较,得到(Col1<3000)<(Col1=3000),则满足Col1<3000的待查询数据记录存储在数据块3和数据块4中。由于上述目标查询语句中对列值Col2的取值范围没有限定,因此,需要读取至内存中的数据块为数据块3和数据块4。
430,读取存储目标数据的数据块中的全部数据。
例如,将数据块3和数据块4中的数据记录全部读取至内存中。
对比图4所示的数据查询方法与图2所示的传统的数据查询方法,可以看出,使用相同的查询语句,图4所示的数据查询方法可以根据目标查询语句中的行键值的取值范围和列值的取值范围,对文件系统中的数据块进行筛选,而图2所示的传统的数据查询方法仅能根据目标查询语句中的行键值的取值范围,对文件系统中中的数据块进行筛选。因此,图4所示的本申请实施例的查询数据记录的方法,有利于减少从文件系统中读取至内存中的数据块的数量。
上文结合图1至图5详细地描述了本申请实施例的方法,下文结合图6至图8详细地描述本申请实施例的向文件系统写入数据记录的装置。需要说明的是,图6至图8所示的装置可以实现上述方法中各个步骤,为了简洁,在此不再赘述。
图6是本申请实施例的写数据记录的装置的示意性结构图,图6所示的装置600包括:获取模块610、确定模块620、选取模块630和存储模块640。
获取模块610,用于获取待写入的数据记录,所述数据记录的行键值对应数据表的行键,所述数据记录的列值对应所述数据表的列;
确定模块620,根据所述数据记录的行键值,确定所述数据记录的行键值所属的行键值查询段,所述数据表的行键值被分配至至少两个行键值查询段;
所述确定模块620,根据所述数据记录的列值,确定所述数据记录的列值所属的列值查询段,所述数据表的列被分配至至少两个列值查询段;
选取模块630,用于根据所述数据记录的行键值所属的行键值查询段,所述数据记录的列值所属的列值查询段,以及预先记录的所述文件系统的分区信息,确定所述数据记录的目标数据块,其中所述文件系统的分区信息包括所述文件系统的每个数据块所属的行键值查询段和所述文件系统的每个数据块所属的列值查询段,所述目标数据块所属的行键值查询段包括所述数据记录的行键值,所述目标数据块所属的列值查询段包括所述数据记录的列值;
存储模块640,用于将所述数据记录存入所述目标数据块。
可选地,作为一个实施例,所述获取模块,还用于获取预设时间段内对数据记录查询的多个查询语句;所述确定模块,还用于:根据所述多个查询语句的行键值确定行键值查询段划分值;根据所述多个查询语句的列值确定列值查询段划分值;所述装置还包括:划分模块,用于根据所述行键值查询段划分值将所述数据表中的行键值划分为所述至少两个行键值查询段;所述划分模块,还用于根据所述列值查询段划分值将所述数据表中的列值划分为所述至少两个列值查询段。
可选地,作为一个实施例,所述确定模块,具体用于选取在所述多个查询语句中出现次数高于第一预设次数的行键值作为所述行键值查询段划分值。
可选地,作为一个实施例,所述确定模块,具体用于选取在所述多个查询语句中出现次数高于第二预设次数的列值作为所述列值查询段划分值。
可选地,作为一个实施例,所述多个查询语句中包括不同的多个行键值,所述确定模块还用于:确定所述多个查询语句中每个查询语句查询到的数据记录的数量;根据所述多个查询语句中每个查询语句查询到的数据记录的数量,确定所述多个行键值中每个行键值查询到的数据记录的总量;从所述多个行键值中每个行键值查询到的数据记录的总量中,选取高于第一阈值的至少一个第一数据记录总量;确定查询到所述至少一个第一数据记录总量中的每个第一数据记录总量的行键值为所述行键值查询段划分值。
可选地,作为一个实施例,所述多个查询语句中包括不同的多个列值,所述确定模块还用于:确定所述多个查询语句中每个查询语句查询到的数据记录的数量;根据所述多个查询语句中每个查询语句查询到的数据记录的数量,确定所述多个列值中每个列值查询到的数据记录的总量;从所述多个列值中每个列值查询到的数据记录的总量,选取高于第二阈值的至少一个第二数据记录总量;确定查询到所述至少一个第二数据记录总量中的每个第二数据记录总量的列值为所述列值查询段划分值。
在可选地实施例中,上述获取模块610、确定模块620、选取模块630和存储模块640可以为依靠计算机程序实现的程序模块,该程序模块用于实现图3所示的方法。
在可选地实施例中,上述获取模块610的作用可以为计算机700中的输入输出接口730与处理器720之间进行配合实现,上述确定模块620和选取模块630可以为计算机700中的处理器720,上述存储模块640的作用可以是计算机700中的存储器710与处理器720之间进行配合实现,计算机700具体如图7所示。
图7是本申请另一实施例的计算机的示意性框图。图7所示的装置700可以包括:存储器710、处理器720和输入/输出接口730。其中,存储器710、处理器720和输入/输出接口730通过内部连接通路相连,该存储器710用于存储程序指令,该处理器720用于执行该存储器720存储的程序指令,以控制输入/输出接口730接收输入的数据和信息,输出操作结果等数据。
应理解,在本申请实施例中,该处理器720可以采用通用的中央处理器(CentralProcessing Unit,CPU),微处理器,应用专用集成电路(Application SpecificIntegrated Circuit,ASIC),或者一个或多个集成电路,用于执行相关程序,以实现本申请实施例所提供的技术方案。
该存储器710可以包括只读存储器和随机存取存储器,并向处理器720提供指令和数据。处理器720的一部分还可以包括非易失性随机存取存储器。例如,处理器720还可以存储设备类型的信息。
在实现过程中,上述方法的各步骤可以通过处理器720中的硬件的集成逻辑电路或者软件形式的指令完成。结合本申请实施例所公开的向文件系统写入数据记录的方法可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器710,处理器720读取存储器710中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
应理解,本申请实施例中,该处理器可以为中央处理单元(central processingunit,CPU),该处理器还可以是其它通用处理器、数字信号处理器(digital signalprocessor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(fieldprogrammable gate array,FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
在可选地实施例中,上述装置600可以部署在计算系统中的至少两台计算机中,该至少两台计算机上设置有至少两个存储器810、至少两个处理器820以及至少两个输入/输出接口830。上述获取模块610的作用可以为至少两个输入输出接口830与至少两个处理器820之间进行配合实现,上述确定模块620和选取模块630可以为至少两个处理器820,上述存储模块640的作用可以是计算机800中的存储器810与处理器820之间进行配合实现,计算机系统800具体如图8所示。
图8是本申请另一实施例的计算机系统的示意性框图。图8所示的计算机系统800可以包括:至少两个存储器810、至少两个处理器820和至少两个输入/输出接口830。其中,至少两个存储器810、至少两个处理器820和至少两个输入/输出接口830通过内部连接通路相连,该至少两个存储器810用于存储程序指令,该至少两个处理器820用于执行至少两个存储器820存储的程序指令,以控制至少两个输入/输出接口830接收输入的数据和信息,输出操作结果等数据。
应理解,在本申请实施例中,至少两个处理器820可以采用通用的中央处理器(CentralProcessing Unit,CPU),微处理器,应用专用集成电路(Application SpecificIntegrated Circuit,ASIC),或者一个或多个集成电路,用于执行相关程序,以实现本申请实施例所提供的技术方案。
至少两个存储器810可以包括只读存储器和随机存取存储器,并向至少两个处理器820提供指令和数据。至少两个处理器820的一部分还可以包括非易失性随机存取存储器。例如,至少两个处理器820还可以存储设备类型的信息。
在实现过程中,上述方法的各步骤可以通过至少两个处理器820中的硬件的集成逻辑电路或者软件形式的指令完成。结合本申请实施例所公开的向文件系统写入数据记录的方法可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于至少两个存储器810,至少两个处理器820读取至少两个存储器810中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
应理解,本申请实施例中,该处理器可以为中央处理单元(central processingunit,CPU),该处理器还可以是其它通用处理器、数字信号处理器(digital signalprocessor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(fieldprogrammable gate array,FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
在可选地实施例中,上述获取模块610、确定模块620、选取模块630和存储模块640还可以是运行在图7所示的处理器中的计算机程序,该计算机程序用于实现图3所示的方法中的各个步骤。
应理解,在本申请实施例中,“与A相应的B”表示B与A相关联,根据A可以确定B。但还应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其它信息确定B。
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(Digital Subscriber Line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够读取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,数字通用光盘(Digital Video Disc,DVD))或者半导体介质(例如,固态硬盘(Solid State Disk,SSD))等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (14)
1.一种向文件系统写入数据记录的方法,其特征在于,包括:
获取待写入的数据记录,所述数据记录的行键值对应数据表的行键,所述数据记录的列值对应所述数据表的列;
根据所述数据记录的行键值,确定所述数据记录的行键值所属的行键值查询段,所述数据表的行键值被分配至至少两个行键值查询段;
根据所述数据记录的列值,确定所述数据记录的列值所属的列值查询段,所述数据表的列被分配至至少两个列值查询段;
根据所述数据记录的行键值所属的行键值查询段,所述数据记录的列值所属的列值查询段,以及预先记录的所述文件系统的分区信息,确定所述数据记录的目标数据块,其中所述文件系统的分区信息包括所述文件系统的每个数据块所属的行键值查询段和所述文件系统的每个数据块所属的列值查询段,所述目标数据块所属的行键值查询段包括所述数据记录的行键值,所述目标数据块所属的列值查询段包括所述数据记录的列值;
将所述数据记录存入所述目标数据块。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
获取预设时间段内对所述数据表进行查询的多个查询语句;
根据所述多个查询语句的行键值确定行键值查询段划分值;
根据所述多个查询语句的列值确定列值查询段划分值;
根据所述行键值查询段划分值将所述数据表中的行键值划分为所述至少两个行键值查询段;
根据所述列值查询段划分值将所述数据表中的列值划分为所述至少两个列值查询段。
3.如权利要求2所述的方法,其特征在于,所述根据所述多个查询语句的行键值确定行键值查询段划分值,包括:
选取在所述多个查询语句中出现次数高于第一预设次数的行键值作为所述行键值查询段划分值。
4.如权利要求2或3所述的方法,其特征在于,所述根据所述多个查询语句的列值确定列值查询段划分值,包括:
选取在所述多个查询语句中出现次数高于第二预设次数的列值作为所述列值查询段划分值。
5.如权利要求2或4所述的方法,其特征在于,所述多个查询语句中包括不同的多个行键值,所述方法还包括:
确定所述多个查询语句中每个查询语句查询到的数据记录的数量;
根据所述多个查询语句中每个查询语句查询到的数据记录的数量,确定所述多个行键值中每个行键值查询到的数据记录的总量;
所述根据所述多个查询语句的行键值确定行键值查询段划分值,包括:
从所述多个行键值中每个行键值查询到的数据记录的总量中,选取高于第一阈值的至少一个第一数据记录总量;
确定查询到所述至少一个第一数据记录总量中的每个第一数据记录总量的行键值为所述行键值查询段划分值。
6.如权利要求2或3所述的方法,其特征在于,所述多个查询语句中包括不同的多个列值,所述方法包括:
确定所述多个查询语句中每个查询语句查询到的数据记录的数量;
根据所述多个查询语句中每个查询语句查询到的数据记录的数量,确定所述多个列值中每个列值查询到的数据记录的总量;
所述根据所述多个查询语句的列值确定列值查询段划分值,包括:
从所述多个列值中每个列值查询到的数据记录的总量,选取高于第二阈值的至少一个第二数据记录总量;
确定查询到所述至少一个第二数据记录总量中的每个第二数据记录总量的列值为所述列值查询段划分值。
7.一种向文件系统写数据记录的装置,其特征在于,包括:
获取模块,用于获取待写入的数据记录,所述数据记录的行键值对应数据表的行键,所述数据记录的列值对应所述数据表的列;
确定模块,根据所述数据记录的行键值,确定所述数据记录的行键值所属的行键值查询段,所述数据表的行键值被分配至至少两个行键值查询段;
所述确定模块,根据所述数据记录的列值,确定所述数据记录的列值所属的列值查询段,所述数据表的列被分配至至少两个列值查询段;
选取模块,用于根据所述数据记录的行键值所属的行键值查询段,所述数据记录的列值所属的列值查询段,以及预先记录的所述文件系统的分区信息,确定所述数据记录的目标数据块,其中所述文件系统的分区信息包括所述文件系统的每个数据块所属的行键值查询段和所述文件系统的每个数据块所属的列值查询段,所述目标数据块所属的行键值查询段包括所述数据记录的行键值,所述目标数据块所属的列值查询段包括所述数据记录的列值;
存储模块,用于将所述数据记录存入所述目标数据块。
8.如权利要求7所述的装置,其特征在于,
所述获取模块,还用于获取预设时间段内对数据记录查询的多个查询语句;
所述确定模块,还用于:
根据所述多个查询语句的行键值确定行键值查询段划分值;
根据所述多个查询语句的列值确定列值查询段划分值;
所述装置还包括:
划分模块,用于根据所述行键值查询段划分值将所述数据表中的行键值划分为所述至少两个行键值查询段;
所述划分模块,还用于根据所述列值查询段划分值将所述数据表中的列值划分为所述至少两个列值查询段。
9.如权利要求8所述的装置,其特征在于,
所述确定模块,具体用于选取在所述多个查询语句中出现次数高于第一预设次数的行键值作为所述行键值查询段划分值。
10.如权利要求8或9所述的装置,其特征在于,
所述确定模块,具体用于选取在所述多个查询语句中出现次数高于第二预设次数的列值作为所述列值查询段划分值。
11.如权利要求8或10所述的装置,其特征在于,所述多个查询语句中包括不同的多个行键值,所述确定模块还用于:
确定所述多个查询语句中每个查询语句查询到的数据记录的数量;
根据所述多个查询语句中每个查询语句查询到的数据记录的数量,确定所述多个行键值中每个行键值查询到的数据记录的总量;
从所述多个行键值中每个行键值查询到的数据记录的总量中,选取高于第一阈值的至少一个第一数据记录总量;
确定查询到所述至少一个第一数据记录总量中的每个第一数据记录总量的行键值为所述行键值查询段划分值。
12.如权利要求8或9所述的装置,其特征在于,所述多个查询语句中包括不同的多个列值,所述确定模块还用于:
确定所述多个查询语句中每个查询语句查询到的数据记录的数量;
根据所述多个查询语句中每个查询语句查询到的数据记录的数量,确定所述多个列值中每个列值查询到的数据记录的总量;
从所述多个列值中每个列值查询到的数据记录的总量,选取高于第二阈值的至少一个第二数据记录总量;
确定查询到所述至少一个第二数据记录总量中的每个第二数据记录总量的列值为所述列值查询段划分值。
13.一种计算机系统,其特征在于,所述计算系统包括至少一个存储器和至少一个处理器,所述至少一个存储器用于存储计算机程序,所述至少一个处理器用于执行所述至少一个存储器中存储的计算机程序,使得所述计算机系统执行如权利要求1-6中任一项所述的方法。
14.一种计算机可读介质,所述计算机可读介质存储有程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行如权利要求1-6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711375100.2A CN110019014A (zh) | 2017-12-19 | 2017-12-19 | 向文件系统写入数据记录的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711375100.2A CN110019014A (zh) | 2017-12-19 | 2017-12-19 | 向文件系统写入数据记录的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110019014A true CN110019014A (zh) | 2019-07-16 |
Family
ID=67186997
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711375100.2A Pending CN110019014A (zh) | 2017-12-19 | 2017-12-19 | 向文件系统写入数据记录的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110019014A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115203159A (zh) * | 2022-07-25 | 2022-10-18 | 北京字跳网络技术有限公司 | 一种数据存储方法、装置、计算机设备和存储介质 |
CN115203159B (zh) * | 2022-07-25 | 2024-06-04 | 北京字跳网络技术有限公司 | 一种数据存储方法、装置、计算机设备和存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102682108A (zh) * | 2012-05-08 | 2012-09-19 | 同方光盘股份有限公司 | 一种行列混合的数据库存储方法 |
CN102968503A (zh) * | 2012-12-10 | 2013-03-13 | 曙光信息产业(北京)有限公司 | 数据库系统的数据处理方法以及数据库系统 |
CN104376053A (zh) * | 2014-11-04 | 2015-02-25 | 南京信息工程大学 | 一种基于海量气象数据的存储与检索方法 |
CN104424316A (zh) * | 2013-09-06 | 2015-03-18 | 华为技术有限公司 | 一种数据存储方法、数据查询方法、相关装置和系统 |
US20150317345A1 (en) * | 2012-11-27 | 2015-11-05 | Nokia Solutions And Networks Oy | Multiple fields parallel query method and corresponding storage organization |
CN105408893A (zh) * | 2014-02-10 | 2016-03-16 | 华为技术有限公司 | 一种数据处理和写入方法及相关装置 |
CN105488043A (zh) * | 2014-09-15 | 2016-04-13 | 南京理工大学 | 基于Key-Value数据块的数据查询方法及系统 |
CN105989076A (zh) * | 2015-02-10 | 2016-10-05 | 腾讯科技(深圳)有限公司 | 一种数据统计方法以及装置 |
CN106471501A (zh) * | 2016-03-24 | 2017-03-01 | 华为技术有限公司 | 数据查询的方法、数据对象的存储方法和数据系统 |
-
2017
- 2017-12-19 CN CN201711375100.2A patent/CN110019014A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102682108A (zh) * | 2012-05-08 | 2012-09-19 | 同方光盘股份有限公司 | 一种行列混合的数据库存储方法 |
US20150317345A1 (en) * | 2012-11-27 | 2015-11-05 | Nokia Solutions And Networks Oy | Multiple fields parallel query method and corresponding storage organization |
CN102968503A (zh) * | 2012-12-10 | 2013-03-13 | 曙光信息产业(北京)有限公司 | 数据库系统的数据处理方法以及数据库系统 |
CN104424316A (zh) * | 2013-09-06 | 2015-03-18 | 华为技术有限公司 | 一种数据存储方法、数据查询方法、相关装置和系统 |
CN105408893A (zh) * | 2014-02-10 | 2016-03-16 | 华为技术有限公司 | 一种数据处理和写入方法及相关装置 |
CN105488043A (zh) * | 2014-09-15 | 2016-04-13 | 南京理工大学 | 基于Key-Value数据块的数据查询方法及系统 |
CN104376053A (zh) * | 2014-11-04 | 2015-02-25 | 南京信息工程大学 | 一种基于海量气象数据的存储与检索方法 |
CN105989076A (zh) * | 2015-02-10 | 2016-10-05 | 腾讯科技(深圳)有限公司 | 一种数据统计方法以及装置 |
CN106471501A (zh) * | 2016-03-24 | 2017-03-01 | 华为技术有限公司 | 数据查询的方法、数据对象的存储方法和数据系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115203159A (zh) * | 2022-07-25 | 2022-10-18 | 北京字跳网络技术有限公司 | 一种数据存储方法、装置、计算机设备和存储介质 |
CN115203159B (zh) * | 2022-07-25 | 2024-06-04 | 北京字跳网络技术有限公司 | 一种数据存储方法、装置、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11132346B2 (en) | Information processing method and apparatus | |
US10585915B2 (en) | Database sharding | |
CN103577440B (zh) | 一种非关系型数据库中的数据处理方法和装置 | |
US9710751B2 (en) | Parallel tree based prediction | |
WO2014143791A1 (en) | Efficiently performing operations on distinct data values | |
CN108959510B (zh) | 一种分布式数据库的分区级连接方法和装置 | |
CN108228649A (zh) | 用于数据访问的方法和设备 | |
CN107526743A (zh) | 用于压缩文件系统元数据的方法和设备 | |
CN103262062A (zh) | 用于执行嵌套连接操作的系统和方法 | |
CN111221840B (zh) | 数据处理方法及装置、数据缓存方法、存储介质、系统 | |
CN109857342A (zh) | 一种数据读写方法及装置、交换芯片及存储介质 | |
CN109492131B (zh) | 一种图数据存储方法及装置 | |
CN107818114A (zh) | 一种数据处理方法、装置及数据库 | |
JP6269140B2 (ja) | アクセス制御プログラム、アクセス制御方法、およびアクセス制御装置 | |
CN109977078A (zh) | 一种数据的处理方法、装置、计算机设备和存储介质 | |
CN108140022A (zh) | 数据查询方法和数据库系统 | |
Kuzochkina et al. | Analyzing and Comparison of NoSQL DBMS | |
CN108304142A (zh) | 一种数据管理方法和装置 | |
EP3817432A1 (en) | Data processing method and system | |
EP3452927A1 (en) | Feature-set augmentation using knowledge engine | |
US10437806B2 (en) | Database management method and information processing apparatus | |
CN109726219A (zh) | 数据查询的方法及终端设备 | |
CN110019014A (zh) | 向文件系统写入数据记录的方法和装置 | |
CN110069466A (zh) | 一种面向分布式文件系统的小文件存储方法及装置 | |
US20140280385A1 (en) | Hierarchical intersections |
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: 20190716 |
|
RJ01 | Rejection of invention patent application after publication |