CN110019218B - 数据存储与查询方法及设备 - Google Patents
数据存储与查询方法及设备 Download PDFInfo
- Publication number
- CN110019218B CN110019218B CN201711296260.8A CN201711296260A CN110019218B CN 110019218 B CN110019218 B CN 110019218B CN 201711296260 A CN201711296260 A CN 201711296260A CN 110019218 B CN110019218 B CN 110019218B
- Authority
- CN
- China
- Prior art keywords
- data
- query
- column
- columns
- row
- 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.)
- Active
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/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/2228—Indexing structures
- G06F16/2272—Management thereof
-
- 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
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- 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/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Operations Research (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请的目的是提供一种数据存储与查询方法及设备,通过建立所述表格中列的索引,便于后续可以通过查询索引,快速获得查询结果。另外,通过扫描所述表格中的数据,获取所述列中数据的统计信息,便于后续查询时利用列中数据的统计信息,进行代价估算,得到尽量成代价最小、性能最优的数据查询方式,提高查询效率。
Description
技术领域
本申请涉及计算机领域,尤其涉及一种数据存储与查询方法及设备。
背景技术
伴随着社会和经济的不断发展,科技也在迅猛进步。近几年来,移动互联网技术、物联网技术更是如日中天,给人们的生活带来了极大的便利,同时也催生了大数据时代的来临。如今,从学术界到工业界、从组织机构到个人都无时无刻不在产生着蕴含巨大价值的数据。这些数据能够给企业和商业带来巨大经济效益,而且利用得当也能够为人类健康、社会发展等造福良多。然而,这些宝贵的数据不仅存在着数据缺失、数据错乱、格式不一、来源多样等问题,其数据量更是让人惊讶。
IBM的研究称,整个人类文明所获得的全部数据中,有90%的数据是过去两年内产生的。未来数据量的增长速度将会更快更迅猛。面对如此庞大的数据量,传统的计算机数据分析技术已经越来越吃力,难以满足人们对于海量数据分析的性能需求。如何能够从这些数据中更加快速、便捷的查询、筛选出有价值的信息,成为了一个亟待解决的重要问题。
在应对海量数据分析的难题时,往往把数据转化为结构化表示,也即将数据转换为行、列构成的表格形式。其中,每行代表一条记录,每条记录由若干列构成,每列是一个具体的字段,表征着该记录的一部分信息。
当前用来进行结构化数据查询的方法主要分为两种,一种是基于磁盘扫描的数据查询方法,另一种是基于部分索引的数据查询方法。
其中,基于磁盘扫描的数据查询方法,主要由如下两个步骤完成。
步骤一:数据存储。将数据转换为行、列表示,并且一行一行的连续存储到磁盘上。
步骤二:数据分析。将磁盘上存储好的数据,依次读取出来,并且按照输入的筛选条件进行过滤,将满足筛选条件的数据输出并且忽略不满足条件的数据。
基于部分索引的数据查询方法相对复杂,一般包含以下步骤。
步骤一:数据存储。将数据转化为行、列表示,并且一行一行的连续存储到磁盘上。
步骤二:在指定列上建立索引。从输入中获取到指定的列,并且在该列上构建部分索引。
步骤三:简单查询优化。将从输入中获取到的查询条件根据步骤二构建好的索引进行优化,转化为等价的、耗时更短的查询条件。
步骤四:数据查询。根据步骤三优化后的查询条件进行数据过滤,保留满足条件的数据并且忽略不满足条件的数据。
以上简要阐述了两种用于结构化数据的查询方法:基于磁盘扫描的数据查询方法和基于部分索引的数据查询方法。
其中基于磁盘扫描的数据查询方法,每次进行数据查询分析都需要将所有数据从磁盘中读取一遍,查询速度很慢,效率十分低下。当数据量大到一定量级后,该方法所花费的时间可能极其巨大,很难满足当下人们对于数据分析系统的性能需求;另外,为了查询出少量符合条件的数据而读取整个磁盘上的所有数据,也是对资源的极大浪费。
基于部分索引的数据查询方法在前者的基础上进行了改进。它利用了预先建立好的部分索引来加速查询过程。每次数据查询分析都只需要首先查询索引得出满足条件的数据在磁盘上的具体位置,然后再从磁盘上读取对应位置的数据即可。该方法使得不必每次都读取整个磁盘,降低了时间消耗。然而该方法只针对部分列建立索引,也即意味着只有建立了索引的列才能够规避扫描整个磁盘,对于未建立索引的列仍旧需要通过磁盘扫描的方式进行查询,因此该方法对于数据查询分析的加速作用有限,在未建立索引的情况下,仍旧性能低下、查询速度缓慢。该方法的另一个问题是它局限于仅仅使用多个索引中的某一个进行数据查询分析。即便指定为多个列建立索引,它也无法利用多个索引之间的关联信息进行查询优化,从而造成了不必要的磁盘读取。
发明内容
本申请的一个目的是提供一种数据存储与查询方法及设备,能够解决现有方案中对海量数据的数据查询分析效率低的问题。
根据本申请的一个方面,提供了一种数据存储方法,该方法包括:
将数据按照行列存储结构进行存储;
对存储的数据的列进行索引构建,建立索引信息。
进一步的,上述方法中,还包括:
针对存储的数据的列,获取列中的数据的统计信息。
进一步的,上述方法中,所述列中的数据的统计信息,包括列中数的最大值、最小值、列中空值与到所述行号的映射关系、列中每个数据的出现次数和列中不同数据的个数中一种或任意组合。
进一步的,上述方法中,对存储的数据的列进行索引构建,建立索引信息,包括:
通过扫描所述存储的数据,建立所述存储中列的索引信息,所述列的索引信息包括列中的数据与所述表格中的行的行号的映射关系,所述映射关系按每列的数据大小排序。
进一步的,上述方法中,建立所述存储中列的索引信息,包括:
建立所述存储中所有列的索引信息。
进一步的,上述方法中,建立所述存储中列的索引信息的同时,还包括:
建立所述存储中列的索引信息之间的关联关系。
根据本申请的另一面,还提供一种对采用上述的数据存储方法存储的数据进行查询的方法,所述方法包括:
获取查询条件;
根据存储中列的索引信息,获取所述存储中满足所述查询条件的数据对应的行的行号集合。
进一步的,上述方法中,根据存储中列的索引信息,获取所述存储中满足所述查询条件的数据对应的行的行号集合,包括:
根据列中的数据的统计信息,确定对应的查询方式,根据所述查询方式和所述存储中列的索引信息获取所述存储中满足所述查询条件的数据对应的行的行号集合。
进一步的,上述方法中,获取满足每一所述单独查询条件的数据的行号集之前,还包括:
根据所述存储中列的索引信息之间的关联关系,将多个单独查询条件合并为一个单独查询条件,其中,所述列的索引信息包括列中的数据与所述存储中的行的行号的映射关系,所述映射关系按每列的数据大小排序。
进一步的,上述方法中,按所述多个查询条件的组合,将获取到满足所有单独查询条件的数据的行号集合进行归并,包括:
每次分别从获取到的满足各单独查询条件的数据的行号集合中的一条结果,按所述多个查询条件的组合进行归并得到一条归并结果;
将得到的各条归并结果进行汇总。
进一步的,上述方法中,所述列中数据的统计信息,包括列中数据的最大值、最小值、列中空值所述行号的映射关系、列中每个数据的出现次数和列中不同数据的个数中一种或任意组合。
进一步的,上述方法中,所述查询条件包括空值查询、等值查询和范围查询中的一种或任意组合。
进一步的,上述方法中,根据列中的数据的统计信息,确定对应的查询方式,根据所述查询方式和所述存储中列的索引信息获取所述存储中满足所述查询条件的数据对应的行的行号集合,包括:
当所述查询条件为空值查询时,根据所述列中空值与所述行号的映射关系的统计信息,确定所述列中空值与所述行号的映射关系进行搜索的查询方式;
根据所述查询方式和所述存储中列的索引信息获取所述表格中满足所述查询条件的数据对应的行的行号集合。
进一步的,上述方法中,根据列中的数据的统计信息,确定对应的查询方式,根据所述查询方式和所述存储中列的索引信息获取所述存储中满足所述查询条件的数据对应的行的行号集合,包括:
当所述查询条件为等值查询或范围查询时,从单独查询条件中获取待查询的列和待查询的数据;
判断每一单独查询条件中待查询的列的数据的最大值至最小值之间的范围,是否在该列的统计信息中的数据的最大值至最小值之间的范围内,
如果不在范围内,则返回空集;
如果在范围内,则根据所述列中数据的统计信息,确定对应的查询方式,根据所述查询方式和所述列的索引信息,获取所述存储中满足所述查询条件的数据对应的行的行号集合。
进一步的,上述方法中,根据所述列中数据的统计信息,确定对应的查询方式,根据所述查询方式和所述列的索引信息,获取所述存储中满足所述查询条件的数据对应的行的行号集合,包括:
当所述查询条件为等值查询时,从该列的所述统计信息中每个数据的出现次数中,获取该列中待查询的数据的出现次数,判断所述获取的待查询的数据的出现次数占该列总行数的百分比是否超过了预设百分比阈值,
若是,则对该列的所有数据进行扫描,获取满足所述单独查询条件的数据的行号集合;
若否,从该列的索引信息中搜索满足所述单独查询条件的数据的行号集合。
进一步的,上述方法中,根据所述列中数据的统计信息,确定对应的查询方式,根据所述查询方式和所述列的索引信息,获取所述存储中满足所述查询条件的数据对应的行的行号集合合,包括:
当所述查询条件为等值查询时,根据该列的行数和该列的所述统计信息中不同数据的个数,预估该列中待查询的数据的出现次数,判断所述预估的待查询的数据的出现次数占该列总行数的百分比是否超过了预设百分比阈值,
若是,则对该列的所有数据进行扫描,获取满足所述单独查询条件的数据的行号集合;
若否,从该列的索引中搜索满足所述单独查询条件的数据的行号集合。
进一步的,上述方法中,根据所述列中数据的统计信息,确定对应的查询方式,根据所述查询方式和所述列的索引信息,获取所述存储中满足所述查询条件的数据对应的行的行号集合,包括:
当所述查询条件为范围查询时,比对该查询条件中待查询的列的数据的最大值至最小值之间的范围,是否覆盖了该列的统计信息中的数据的最大值至最小值之间范围的预设范围阈值以上,
若是,则对该列的所有数据进行扫描,获取满足所述查询条件的数据的行号集合;
若否,将该列的待查询的数据的最大值和最小值分别作为搜索的起始点和终止点,从该列的索引中搜索满足所述查询条件的数据的行号集合。
根据本申请的另一方面,还提供了一种数据存储设备,该设备包括:
数据格式化模块,用于将数据按照行列存储结构进行存储;
索引构建模块,用于对存储的数据的列进行索引构建,建立索引信息。
根据本申请的另一方面,还提供了一种对采用上述的数据存储设备存储的数据进行查询的设备,所述设备包括:
查询优化和数据查询模块,用于获取查询条件;根据存储中列的索引信息,获取所述存储中满足所述查询条件的数据对应的行的行号集合。
根据本申请的另一方面,还提供了一种基于计算的设备,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:
将数据按照行列存储结构进行存储;
对存储的数据的列进行索引构建,建立索引信息。
根据本申请的另一方面,还提供了一种基于计算的设备,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:
获取查询条件;
根据表格的列中数据的统计信息,确定对应的查询方式,根据所述查询方式获取所述表格中满足所述查询条件的数据对应的行的行号集合,其中,所述表格包括行和列,所述表格中的行编制有行号。
本发明还提供一种计算机可读存储介质,其上存储有计算机可执行指令,其中,该计算机可执行指令被处理器执行时使得该处理器:
将数据按照行列存储结构进行存储;
对存储的数据的列进行索引构建,建立索引信息。
本发明还提供一种计算机可读存储介质,其上存储有计算机可执行指令,其中,该计算机可执行指令被处理器执行时使得该处理器:
获取查询条件;
根据存储中列的索引信息,获取所述存储中满足所述查询条件的数据对应的行的行号集合。
根据本申请的另一面,还提供一种数据存储方法,包括:
将数据按照行列存储结构进行存储;
对存储的数据的列和/或行进行索引构建,建立索引信息。
本申请通过建立所述表格中列的索引,便于后续可以通过查询索引,快速获得查询结果。另外,通过扫描所述表格中的数据,获取所述列中数据的统计信息,便于后续查询时利用列中数据的统计信息,进行代价估算,得到尽量成代价最小、性能最优的数据查询方式,提高查询效率。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1示出本申请一实施例的数据存储方法及设备的模块图;
图2示出本申请一实施例的将各数据存储入包括行和列的表格中的流程图;
图3示出本申请一实施例的索引构建流程图;
图4示出根据本申请一实施例的某一列的索引存储结构图;
图5示出根据本申请一实施例的查询结果归并树示例图;
图6示出根据本申请一实施例的归并示例图;
图7示出根据本申请一实施例的等值查询程序流程图;
图8示出根据本申请一实施例的范围查询程序流程图。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本申请作进一步详细描述。
在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
如图1所示,本申请一实施例的数据查询与存储设备可以有四个模块构成:数据格式化模块、索引构建模块、查询优化模块、查询执行模块。
其中,数据格式化模块,用于数据格式转换,将包含多个数据的原始数据转化为需要的结构化数据,即将各数据存储入包括行和列的表格中,并对所述表格中的行编制行号;
索引构建模块,用于通过扫描所述表格中的数据,建立所述表格中列的索引,并获取所述列中数据的统计信息,所述列的索引包括列中的数据与所述表格中的行的行号的映射关系,所述映射关系按每列的数据大小排序;
查询优化模块,则用于根据已经构建好的表格的列中数据的统计信息,为查询条件确定优化的查询方式,和/或对查询条件进行等价改写,目的是以更小的代价更快的速度进行查询;
数据查询模块,用于最终根据确定的优化的查询方式和/或等价改写后的查询条件,执行实际的查询操作,得出满足所述查询条件的数据的行号集合,即结果集。
本申请还提供一种数据存储方法,该方法包括:
将数据按照行列存储结构进行存储;
对存储的数据的列进行索引构建,建立索引信息。
本申请一实施例中,所述数据存储方法,还包括:
针对存储的数据的列,获取列中的数据的统计信息。
本申请还提供一种数据存储方法,该方法包括:
步骤S11,将各数据存储入包括行和列的表格中;在此,可以将包含多个数据的原始数据转化为行、列结构的表格形式;
步骤S12,对所述表格中的行编制行号;
步骤S13,通过扫描所述表格中的数据,获取所述列中数据的统计信息。
具体的,如图2所示,将各数据存储入包括行和列的表格中,可以包括如下步骤:
1)从输入接口中获取用户输入的表格结构定义,包括该表格有几列构成、每列的类型、每列的名称、行的分割符、列的分隔符。其中列的类型支持如下几种:short,int,long,float,double,varchar,byte,boolean,decimal。行的分隔符可以默认是换行符,列的分隔符可以默认是逗号。
2)从输入接口中获取用户输入的数据源,也即数据的存储位置。
3)从数据源中读取用户数据,将用户数据按照行分隔符进行分割,从而得到多行数据的集合。
4)将每行数据按照列分隔符进行列分割,并且将分割后的数据放到所述表格的对应的单元格中去。
5)将分割好的数据存储到磁盘上。
在此,本实施例通过扫描所述表格中的数据,获取所述列中数据的统计信息,便于后续查询时利用列中数据的统计信息,进行代价估算,得到尽量成代价最小、性能最优的数据查询方式,提高查询效率。
本申请一实施例的数据存储方法中,所述列中数据的统计信息,可以包括列中数据的最大值(Max)、最小值(Min)、列中空值(Null)与到所述行号的映射关系、列中每个数据的出现次数(直方图His)和列中不同数据的个数(独立值个数Distinct)中一种或任意组合。
具体的,搜集与数据相关的统计信息可以如下:
1)对于每一列数据,扫描该列的所有数据,并且维护几个变量:数据的最大值(Max)、最小值(Min)、列中空值(Null)与到所述行号的映射关系、列中每个数据的出现次数(直方图,His)和列中不同数据的个数(独立值个数,Distinct);
2)对于当前扫描到的数据,如果大于Max,则更新Max为当前扫描到的值;
3)对于当前扫描到的数据,如果小于Min,则更新Min为当前扫描到的值;
4)对于当前扫描到的数据,如果为空,则将Null加1,并且建立Null->DocId的映射;
5)对于当前扫描到的数据,如果为Hist中已经存在,则将该数据的个数累加1;如果不存在,则将该数据放入Hist中并且将初始值置为1;
6)等待所有数据扫描过后,计算Hist中一共有多少个不同的数据(Value),即得到Distinct的值。
本申请一实施例的数据存储方法中,步骤S13中,获取所述列中数据的统计信息的同时,还包括:
通过扫描所述表格中的数据,建立所述表格中列的索引,其中,所述列的索引包括列中的数据与所述表格中的行的行号的映射关系,所述映射关系按每列的数据大小排序。
在此,本实施例采用了列式存储结构,通过建立所述表格中列的索引,便于后续可以通过查询索引,快速获得查询结果。
本申请一实施例的数据存储方法中,建立所述表格中列的索引,包括:
建立所述表格中所有列的索引。
具体的,如图3所示,建立所述表格中每一列的索引,可以包括如下步骤:
1)经过了将各数据存储入包括行和列的表格中后,数据已经按照由行、列构成的表格形式进行存储。首先给表格中的行从小到大依次进行递增编号,使用DocId进行标识。比如第一行DocId=1,第二行DocId=2,以此类推。然后对每一行进行以下操作。
2)每一行数据在上一步中都已经使用DocId来标识该行的序号,在表格中的各行也已经拆分为了多列。因此,对于表格中一个单元格上的数据(Value),可以构建从该单元格的值到DocId的映射关系:Value->DocId。
3)在一列中多个单元格中的数据相同的情况下,则可以得到以下映射关系:Value->DocId1,DocId2,DocId3…,也即一个数据到该数据所在的行号的映射。存储格式结构图可以如图4所示,其中,数据V1、V2、V3…Vn逐渐增大。
当对于表格所有列都进行索引构建后,即得到了该表格的全索引结构。后期查询时,用户输入要搜索的数据,可以通过上述映射关系找到对应的行号DocID的集合,然后从DocId集合则可以读出对应的行。
在此,本实施例中采用了所有列的全索引技术,每一列都有单独的索引结构,确保了后续在任意条件、任意列上的查询都能够利用索引的预先选择能力,降低磁盘读写消耗。
本申请一实施例的数据存储方法中,建立所述表格中列的索引的同时还包括:
建立所述表格中列的索引之间的关联关系。
在此,本实施例通过建立所述表格中列的索引之间的关联关系,便于后续查询时可以充分利用了多个索引之间的关联信息,将原始的查询条件改写成代价最小、性能最优的等价查询条件,进一步提升数据筛选能力,再次降低了磁盘读写消耗。
根据本申请的另一面,还提供一种对采用上述各实施例的数据存储方法存储的数据进行查询的方法,所述方法包括:
获取查询条件;
根据存储中列的索引信息,获取所述存储中满足所述查询条件的数据对应的行的行号集合。
本申请一实施例的数据查询方法,根据存储中列的索引信息,获取所述存储中满足所述查询条件的数据对应的行的行号集合,包括:
根据列中的数据的统计信息,确定对应的查询方式,根据所述查询方式和所述存储中列的索引信息获取所述存储中满足所述查询条件的数据对应的行的行号集合。
本申请一实施例的数据查询方法,获取满足每一所述单独查询条件的数据的行号集之前,还包括:
根据所述存储中列的索引信息之间的关联关系,将多个单独查询条件合并为一个单独查询条件,其中,所述列的索引信息包括列中的数据与所述存储中的行的行号的映射关系,所述映射关系按每列的数据大小排序。
本申请一实施例的数据查询方法,按所述多个查询条件的组合,将获取到满足所有单独查询条件的数据的行号集合进行归并,包括:
每次分别从获取到的满足各单独查询条件的数据的行号集合中的一条结果,按所述多个查询条件的组合进行归并得到一条归并结果;
将得到的各条归并结果进行汇总。
本申请一实施例的数据查询方法,所述列中数据的统计信息,包括列中数据的最大值、最小值、列中空值所述行号的映射关系、列中每个数据的出现次数和列中不同数据的个数中一种或任意组合。
本申请一实施例的数据查询方法,所述查询条件包括空值查询、等值查询和范围查询中的一种或任意组合。
本申请一实施例的数据查询方法,根据列中的数据的统计信息,确定对应的查询方式,根据所述查询方式和所述存储中列的索引信息获取所述存储中满足所述查询条件的数据对应的行的行号集合,包括:
当所述查询条件为空值查询时,根据所述列中空值与所述行号的映射关系的统计信息,确定所述列中空值与所述行号的映射关系进行搜索的查询方式;
根据所述查询方式和所述存储中列的索引信息获取所述表格中满足所述查询条件的数据对应的行的行号集合。
本申请一实施例的数据查询方法,根据列中的数据的统计信息,确定对应的查询方式,根据所述查询方式和所述存储中列的索引信息获取所述存储中满足所述查询条件的数据对应的行的行号集合,包括:
当所述查询条件为等值查询或范围查询时,从单独查询条件中获取待查询的列和待查询的数据;
判断每一单独查询条件中待查询的列的数据的最大值至最小值之间的范围,是否在该列的统计信息中的数据的最大值至最小值之间的范围内,
如果不在范围内,则返回空集;
如果在范围内,则根据所述列中数据的统计信息,确定对应的查询方式,根据所述查询方式和所述列的索引信息,获取所述存储中满足所述查询条件的数据对应的行的行号集合。
本申请一实施例的数据查询方法,根据所述列中数据的统计信息,确定对应的查询方式,根据所述查询方式和所述列的索引信息,获取所述存储中满足所述查询条件的数据对应的行的行号集合,包括:
当所述查询条件为等值查询时,从该列的所述统计信息中每个数据的出现次数中,获取该列中待查询的数据的出现次数,判断所述获取的待查询的数据的出现次数占该列总行数的百分比是否超过了预设百分比阈值,
若是,则对该列的所有数据进行扫描,获取满足所述单独查询条件的数据的行号集合;
若否,从该列的索引信息中搜索满足所述单独查询条件的数据的行号集合。
本申请一实施例的数据查询方法,根据所述列中数据的统计信息,确定对应的查询方式,根据所述查询方式和所述列的索引信息,获取所述存储中满足所述查询条件的数据对应的行的行号集合合,包括:
当所述查询条件为等值查询时,根据该列的行数和该列的所述统计信息中不同数据的个数,预估该列中待查询的数据的出现次数,判断所述预估的待查询的数据的出现次数占该列总行数的百分比是否超过了预设百分比阈值,
若是,则对该列的所有数据进行扫描,获取满足所述单独查询条件的数据的行号集合;
若否,从该列的索引中搜索满足所述单独查询条件的数据的行号集合。
本申请一实施例的数据查询方法,根据所述列中数据的统计信息,确定对应的查询方式,根据所述查询方式和所述列的索引信息,获取所述存储中满足所述查询条件的数据对应的行的行号集合,包括:
当所述查询条件为范围查询时,比对该查询条件中待查询的列的数据的最大值至最小值之间的范围,是否覆盖了该列的统计信息中的数据的最大值至最小值之间范围的预设范围阈值以上,
若是,则对该列的所有数据进行扫描,获取满足所述查询条件的数据的行号集合;
若否,将该列的待查询的数据的最大值和最小值分别作为搜索的起始点和终止点,从该列的索引中搜索满足所述查询条件的数据的行号集合。
本申请一实施例的数据查询方法,包括:
步骤S21,获取查询条件;
步骤S22,根据表格的列中数据的统计信息,确定对应的查询方式,根据所述查询方式获取所述表格中满足所述查询条件的数据对应的行的行号集合,其中,所述表格包括行和列,所述表格中的行编制有行号。
在此,本实施例在查询时利用列中数据的统计信息,进行代价估算,得到尽量成代价最小、性能最优的数据查询方式,提高查询效率。
本申请一实施例的数据查询方法中,若获取到的所述查询条件是多个查询条件的组合,步骤S22,根据表格的列中数据的统计信息,确定对应的查询方式,根据所述查询方式获取所述表格中满足所述查询条件的数据对应的行的行号集合,包括:
将所述多个查询条件的组合分别拆分单独查询条件,例如,将查询条件按照AND,OR,NOT等逻辑算子拆分为多个单独查询条件;
根据表格的列中数据的统计信息,确定对应的查询方式,根据所述查询方式获取满足每一所述单独查询条件的数据的行号集合;
按所述多个查询条件的组合,将获取到满足所有单独查询条件的数据的行号集合进行归并。
在此,将所述多个查询条件的组合分别拆分单独查询条件,可以进一步提高查询效率。
本申请一实施例的数据查询方法中,所述查询条件包括空值查询、等值查询和范围查询中的一种或任意组合。
具体的,空值查询主要负责处理特定指定列的数据为空的查询,以及若干个这种查询经由AND,OR,NOT组合而成的复合查询。
等值查询主要负责处理某个指定列等于某个特定数据的查询,以及这些基本查询经由AND,OR,NOT等逻辑算子组合而成的查询。比如ID=5、Name=lucy AND Addr=USA等。
范围查询主要负责处理某一个特定列是否在一定范围内的查询,以及由若干个这种查询经由AND,OR,NOT等逻辑算子组合而成的复合查询。比如ID>3或ID>2AND ID<5等。
本申请一实施例的数据查询方法中,根据表格的列中数据的统计信息,获取满足每一所述单独查询条件的数据的行号集之前,还包括:
根据所述表格中列的索引之间的关联关系,将多个单独查询条件合并为一个单独查询条件,其中,所述列的索引包括列中的数据与所述表格中的行的行号的映射关系,所述映射关系按每列的数据大小排序。
在此,以上所述的等值查询、范围查询、空值查询执行过程中,都可能使用到不同索引之间的关联关系。基于索引之间的关联关系,能够在AND,OR,NOT等多个条件进行合并操作。比如查询DATE>20170202AND TIME>‘20170202 12:12:00’,利用DATE与TIME之间的关联关系,能够将两个条件合并为TIME>‘20170202 12:12:00’这一个条件,从而进一步降低索引查询的代价。
本申请一实施例的数据查询方法中,按所述多个查询条件的组合,将获取到满足所有单独查询条件的数据的行号集合进行归并,包括:
每次分别从获取到的满足各单独查询条件的数据的行号集合中的一条结果,按所述多个查询条件的组合进行归并得到一条归并结果;
将得到的各条归并结果进行汇总。
具体的,本实施例的处理流程可包括如下步骤:
1)经过查询优化模块处理后,已经分别得到了满足各个单独查询条件的行数集合;
2)将各个单独查询条件按照原始查询条件中的逻辑关系,比如AND,OR,NOT等构成如图5所示的结果归并树;
3)如图6所示,每次分别从满足各个单独查询条件的行数集合的叶子节点出发,取出一条结果,并且沿着树枝依次上溯,直到到达根节点,根据中间节点进行逻辑运算。
4)如果从根节点搜集的行号集合已经满足了结果需求,则提前终止计算过程。
在此,本实施例采用了流式归并方法,将多个索引查询结果集的合并代价降到最低,节省了系统资源,加速了计算过程,提高了查询性能。
本申请一实施例的数据查询方法中,所述列中数据的统计信息,可以包括列中数据的最大值(Max)、最小值(Min)、列中空值(Null)与到所述行号的映射关系、列中每个数据的出现次数(直方图His)和列中不同数据的个数(独立值个数Distinct)中一种或任意组合。
本申请一实施例的数据查询方法中,当所述查询条件为空值查询时,根据表格的列中数据的统计信息,确定对应的查询方式,根据所述查询方式获取所述表格中满足所述查询条件的数据对应的行的行号集合,包括:
根据表格的列中空值与到所述行号的映射关系的统计信息,确定对表格的列中空值与到所述行号的映射关系进行搜索的查询方式;
根据所述查询方式获取所述表格中满足所述查询条件的数据对应的行的行号集合。
在此,通过搜索统计的null信息对空值查询的步骤可以如下:
1)将复合查询按照AND,OR,NOT进行拆分,分为多个单独的查询条件;
2)针对每个独立的查询条件,查询索引中建立好的Null->DocId映射关系,从而分别得到满足每个独立查询条件的行数集合。
本申请一实施例的数据查询方法中,根据表格的列中数据的统计信息,确定对应的查询方式,根据所述查询方式获取所述表格中满足所述查询条件的数据对应的行的行号集合,包括:
根据表格的列中数据的统计信息,确定对应的查询方式,根据所述查询方式和所述表格中列的索引,获取所述表格中满足所述查询条件的数据对应的行的行号集合。
在此,根据所述查询方式和所述表格中列的索引,获取所述表格中满足所述查询条件的数据对应的行的行号集合,可以进一步提高查询效率。
本申请一实施例的数据查询方法中,当所述查询条件为等值查询或范围查询时,根据表格的列中数据的统计信息,确定对应的查询方式,根据所述查询方式和所述表格中列的索引,获取所述表格中满足所述查询条件的数据对应的行的行号集合,包括:
从单独查询条件中获取待查询的列和待查询的数据;
判断每一单独查询条件中待查询的列的数据的最大值至最小值之间的范围,是否在该列的统计信息中的数据的最大值至最小值之间的范围内,
如果不在范围内,则返回空集;
如果在范围内,则根据表格的列中数据的统计信息,确定对应的查询方式,根据所述查询方式和所述表格中列的索引,获取所述表格中满足所述查询条件的数据对应的行的行号集合。
在此,当判断每一单独查询条件中待查询的列的数据的最大值至最小值之间的范围,不在该列的统计信息中的数据的最大值至最小值之间的范围内时,说明没有满足条件的数据,可以确定查询方式是结束查询,返回空集即可,提高查询效率。
本申请一实施例的数据查询方法中,当所述查询条件为等值查询时,根据表格的列中数据的统计信息,确定对应的查询方式,根据所述查询方式和所述表格中列的索引,获取所述表格中满足所述查询条件的数据对应的行的行号集合,包括:
从该列的所述统计信息中每个数据的出现次数中,获取该列中待查询的数据的出现次数,判断所述获取的待查询的数据的出现次数占该列总行数的百分比是否超过了预设百分比阈值,
若是,则对该列的所有数据进行扫描,获取满足所述单独查询条件的数据的行号集合;
若否,从该列的索引中搜索满足所述单独查询条件的数据的行号集合。
具体的,如图7所示,本实施例的等值查询的步骤可以包括:
1)将查询条件按照AND,OR,NOT等逻辑算子拆分为多个单独查询条件,分别执行以下步骤。
2)检查每一个单独查询条件中涉及到的列的Min、Max,确认要搜索的值是否在该[Min,Max]范围内。如果不在范围内则说明没有满足条件的数据,如果在范围内则继续进行后续步骤。
3)检查Hist直方图,确认要搜索的值在该列中出现了多少次,如果出现次数占总行数的百分比超过了一定阈值则停止当前搜索过程,改成对该列的所有数据直接扫描方式;如果如果出现次数占总行数的百分比低于某一阈值,则继续进行后续步骤。
4)通过已经建立的该列的索引,搜索出对应Value的DocId集合,即得到了满足该单独查询条件的所有行的集合。
5)对所有列进行上述步骤后,即得到了满足每个单独查询条件的行号集合。
在此,本实施例通过从该列的所述统计信息中每个数据的出现次数中,获取该列中待查询的数据的出现次数,判断所述获取的待查询的数据的出现次数占该列总行数的百分比是否超过了预设百分比阈值,进而确定优选的查询方式,以提高查询效率。
本申请一实施例的数据查询方法中,当所述查询条件为等值查询时,根据表格的列中数据的统计信息,确定对应的查询方式,根据所述查询方式和所述表格中列的索引,获取所述表格中满足所述查询条件的数据对应的行的行号集合,包括:
根据该列的行数和该列的所述统计信息中不同数据的个数,预估该列中待查询的数据的出现次数,判断所述预估的待查询的数据的出现次数占该列总行数的百分比是否超过了预设百分比阈值,
若是,则对该列的所有数据进行扫描,获取满足所述单独查询条件的数据的行号集合;
若否,从该列的索引中搜索满足所述单独查询条件的数据的行号集合。
在此,本实施例与上一实施例的区别在于:根据该列的行数和该列的所述统计信息中不同数据的个数,预估该列中待查询的数据的出现次数,判断所述预估的待查询的数据的出现次数占该列总行数的百分比是否超过了预设百分比阈值,进而确定优选的查询方式,也能够提高查询效率。
本申请一实施例的数据查询方法中,当所述查询条件为范围查询时,根据表格的列中数据的统计信息,确定对应的查询方式,根据所述查询方式和所述表格中列的索引,获取所述表格中满足所述查询条件的数据对应的行的行号集合,包括:
比对该单独查询条件中待查询的列的数据的最大值至最小值之间的范围,是否覆盖了该列的统计信息中的数据的最大值至最小值之间范围的预设范围阈值以上,
若是,则对该列的所有数据进行扫描,获取满足所述单独查询条件的数据的行号集合;
若否,将该列的待查询的数据的最大值和最小值分别作为搜索的起始点和终止点,从该列的索引中搜索满足所述单独查询条件的数据的行号集合。
具体的,如图8所示,本实施例的范围查询的步骤可以包括:
1)将组合查询按照AND,OR,NOT等拆分为多个单独查询条件;
2)对每个单独查询条件根据涉及到的列的范围信息[Min,Max]进行比对,如果查询范围不在这个范围内,则返回空集;如果在此范围内则继续进行如下步骤;
3)将单独查询条件中的范围与[Min,Max]进行比对,如果查询范围覆盖了[Min,Max]的1/2及以上,则停止当前索引查询流程,并且将该条件改为对该列的所有数据直接扫描方式进行搜索;如果覆盖范围小于1/2则继续进行下一步;
4)使用查询条件中的数据范围的最小值作为起始点,并使用查询条件中的数据范围的最大值作为终止点;
5)在构建好的索引中进行查找,搜集从起始点到终止点的所有Value及这些Value对应的行号集合,也即得到了满足该单独查询条件查询的所有数据行号集合。
根据本申请的另一面,还提供一种数据存储设备,其中,该设备包括:
数据格式化模块,用于将数据按照行列存储结构进行存储;
索引构建模块,用于对存储的数据的列进行索引构建,建立索引信息。
根据本申请的另一面,还提供一种采用如上述的数据存储设备存储的数据进行查询的设备,其中,所述设备包括:
查询优化和数据查询模块,用于获取查询条件;根据存储中列的索引信息,获取所述存储中满足所述查询条件的数据对应的行的行号集合。
根据本申请的另一面,还提供一种基于计算的设备,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:
将数据按照行列存储结构进行存储;
对存储的数据的列进行索引构建,建立索引信息。
根据本申请的另一面,还提供一种基于计算的设备,其中,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:
获取查询条件;
根据存储中列的索引信息,获取所述存储中满足所述查询条件的数据对应的行的行号集合。
本发明还提供一种计算机可读存储介质,其上存储有计算机可执行指令,其中,该计算机可执行指令被处理器执行时使得该处理器:
将数据按照行列存储结构进行存储;
对存储的数据的列进行索引构建,建立索引信息。
本发明还提供一种计算机可读存储介质,其上存储有计算机可执行指令,其中,该计算机可执行指令被处理器执行时使得该处理器:
获取查询条件;
根据存储中列的索引信息,获取所述存储中满足所述查询条件的数据对应的行的行号集合。
本申请设备实施例的具体内容可参见各方法实施例的对应部分,在此不再赘述。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
Claims (13)
1.一种数据查询方法,其中,所述方法包括:
获取查询条件;
根据存储中列的索引信息,获取所述存储中满足所述查询条件的数据对应的行的行号集合;
其中,获取所述存储中满足所述查询条件的数据对应的行的行号集合之前,还包括:根据所述存储中列的索引信息之间的关联关系,将多个单独查询条件合并为一个单独查询条件,其中,所述列的索引信息包括列中的数据与所述存储中的行的行号的映射关系,所述映射关系按每列的数据大小排序;
若获取到的所述查询条件为多个查询条件的组合,获取所述存储中满足所述查询条件的数据对应的行的行号集合,包括:获取每一单独查询条件的数据对应的行号集合,按多个查询条件的组合,将获取到的满足所有单独查询条件的数据的行号集合进行归并;其中,所述每一单独查询条件是根据所述多个查询条件的组合中的逻辑算子拆分得到;
其中,在所述查询条件为等值查询且待查询的数据出现的次数占所查询的列的总行数的百分比超过了预设百分比阈值的情况下,满足所述查询条件的数据对应的行的行号集合是通过扫描所查询的列的所有数据获取;
其中,所查询的数据通过下述方式存储:
将数据按照行列存储结构进行存储;
对存储的数据的列进行索引构建,建立索引信息;
针对存储的数据的列,获取列中的数据的统计信息;
其中,对存储的数据的列进行索引构建,建立索引信息,包括:通过扫描所述存储的数据,建立所述存储中列的索引信息,并建立所述存储中列的索引信息之间的关联关系,所述列的索引信息包括列中的数据与表格中的行的行号的映射关系,所述映射关系按每列的数据大小排序;
其中,所述列中的数据的统计信息,包括列中数的最大值、最小值、列中空值与到所述行号的映射关系、列中每个数据的出现次数和列中不同数据的个数中一种或任意组合;
其中,建立所述存储中列的索引信息,包括:建立所述存储中所有列的索引信息。
2.根据权利要求1所述的方法,其中,根据存储中列的索引信息,获取所述存储中满足所述查询条件的数据对应的行的行号集合,包括:
根据列中的数据的统计信息,确定对应的查询方式,根据所述查询方式和所述存储中列的索引信息获取所述存储中满足所述查询条件的数据对应的行的行号集合。
3.根据权利要求1所述的方法,其中,按所述多个查询条件的组合,将获取到满足所有单独查询条件的数据的行号集合进行归并,包括:
每次分别从获取到的满足各单独查询条件的数据的行号集合中的一条结果,按所述多个查询条件的组合进行归并得到一条归并结果;
将得到的各条归并结果进行汇总。
4.根据权利要求1所述的方法,其中,所述列中数据的统计信息,包括列中数据的最大值、最小值、列中空值所述行号的映射关系、列中每个数据的出现次数和列中不同数据的个数中一种或任意组合。
5.根据权利要求4所述的方法,其中,所述查询条件包括空值查询、等值查询和范围查询中的一种或任意组合。
6.根据权利要求5所述的方法,其中,根据列中的数据的统计信息,
确定对应的查询方式,根据所述查询方式和所述存储中列的索引信息获取所述存储中满足所述查询条件的数据对应的行的行号集合,包括:
当所述查询条件为空值查询时,根据所述列中空值与所述行号的映射关系的统计信息,确定所述列中空值与所述行号的映射关系进行搜索的查询方式;
根据所述查询方式和所述存储中列的索引信息获取所述表格中满足所述查询条件的数据对应的行的行号集合。
7.根据权利要求5所述的方法,其中,根据列中的数据的统计信息,确定对应的查询方式,根据所述查询方式和所述存储中列的索引信息获取所述存储中满足所述查询条件的数据对应的行的行号集合,包括:
当所述查询条件为等值查询或范围查询时,从单独查询条件中获取待查询的列和待查询的数据;
判断每一单独查询条件中待查询的列的数据的最大值至最小值之间的范围,是否在该列的统计信息中的数据的最大值至最小值之间的范围内,
如果不在范围内,则返回空集;
如果在范围内,则根据所述列中数据的统计信息,确定对应的查询方式,根据所述查询方式和所述列的索引信息,获取所述存储中满足所述查询条件的数据对应的行的行号集合。
8.根据权利要求7所述的方法,其中,根据所述列中数据的统计信息,确定对应的查询方式,根据所述查询方式和所述列的索引信息,获取所述存储中满足所述查询条件的数据对应的行的行号集合,包括:
当所述查询条件为等值查询时,从该列的所述统计信息中每个数据的出现次数中,获取该列中待查询的数据的出现次数,判断所述获取的待查询的数据的出现次数占该列总行数的百分比是否超过了预设百分比阈值,
若是,则对该列的所有数据进行扫描,获取满足所述单独查询条件的数据的行号集合;
若否,从该列的索引信息中搜索满足所述单独查询条件的数据的行号集合。
9.根据权利要求7所述的方法,其中,根据所述列中数据的统计信息,确定对应的查询方式,根据所述查询方式和所述列的索引信息,获取所述存储中满足所述查询条件的数据对应的行的行号集合合,包括:
当所述查询条件为等值查询时,根据该列的行数和该列的所述统计信息中不同数据的个数,预估该列中待查询的数据的出现次数,判断所述预估的待查询的数据的出现次数占该列总行数的百分比是否超过了预设百分比阈值,
若是,则对该列的所有数据进行扫描,获取满足所述单独查询条件的数据的行号集合;
若否,从该列的索引中搜索满足所述单独查询条件的数据的行号集合。
10.根据权利要求7所述的方法,其中,根据所述列中数据的统计信息,确定对应的查询方式,根据所述查询方式和所述列的索引信息,获取所述存储中满足所述查询条件的数据对应的行的行号集合,包括:
当所述查询条件为范围查询时,比对该查询条件中待查询的列的数据的最大值至最小值之间的范围,是否覆盖了该列的统计信息中的数据的最大值至最小值之间范围的预设范围阈值以上,
若是,则对该列的所有数据进行扫描,获取满足所述查询条件的数据的行号集合;
若否,将该列的待查询的数据的最大值和最小值分别作为搜索的起始点和终止点,从该列的索引中搜索满足所述查询条件的数据的行号集合。
11.一种数据查询设备,其中,所述设备包括:
查询优化和数据查询模块,用于获取查询条件;根据存储中列的索引信息,获取所述存储中满足所述查询条件的数据对应的行的行号集合;
所述查询优化和数据查询模块,还用于:获取所述存储中满足所述查询条件的数据对应的行的行号集合之前,根据所述存储中列的索引信息之间的关联关系,将多个单独查询条件合并为一个单独查询条件,其中,所述列的索引信息包括列中的数据与所述存储中的行的行号的映射关系,所述映射关系按每列的数据大小排序;
在获取所述存储中满足所述查询条件的数据对应的行的行号集合时,所述查询优化和数据查询模块具体用于:获取每一单独查询条件的数据对应的行号集合,按多个查询条件的组合,将获取到的满足所有单独查询条件的数据的行号集合进行归并;其中,所述每一单独查询条件是根据所述多个查询条件的组合中的逻辑算子拆分得到;
其中,在所述查询条件为等值查询且待查询的数据出现的次数占所查询的列的总行数的百分比超过了预设百分比阈值的情况下,满足所述查询条件的数据对应的行的行号集合是通过扫描所查询的列的所有数据获取;
其中,所查询的数据通过数据存储设备存储,所述数据存储设备包括:
数据格式化模块,用于将数据按照行列存储结构进行存储;
索引构建模块,用于对存储的数据的列进行索引构建,建立索引信息;针对存储的数据的列,获取列中的数据的统计信息;
在对存储的数据的列进行索引构建,建立索引信息时,所述索引构建模块具体用于:通过扫描所述存储的数据,建立所述存储中列的索引信息,并建立所述存储中列的索引信息之间的关联关系,所述列的索引信息包括列中的数据与表格中的行的行号的映射关系,所述映射关系按每列的数据大小排序;
其中,所述列中的数据的统计信息,包括列中数的最大值、最小值、列中空值与到所述行号的映射关系、列中每个数据的出现次数和列中不同数据的个数中一种或任意组合;
在建立所述存储中列的索引信息时,所述索引构建模块具体用于:建立所述存储中所有列的索引信息。
12.一种基于计算的设备,其中,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:
获取查询条件;
根据存储中列的索引信息,获取所述存储中满足所述查询条件的数据对应的行的行号集合;
其中,获取所述存储中满足所述查询条件的数据对应的行的行号集合之前,还包括:根据所述存储中列的索引信息之间的关联关系,将多个单独查询条件合并为一个单独查询条件,其中,所述列的索引信息包括列中的数据与所述存储中的行的行号的映射关系,所述映射关系按每列的数据大小排序;
获取所述存储中满足所述查询条件的数据对应的行的行号集合,包括:获取每一单独查询条件的数据对应的行号集合,按多个查询条件的组合,将获取到的满足所有单独查询条件的数据的行号集合进行归并;其中,所述每一单独查询条件是根据所述多个查询条件的组合中的逻辑算子拆分得到;
其中,在所述查询条件为等值查询且待查询的数据出现的次数占所查询的列的总行数的百分比超过了预设百分比阈值的情况下,满足所述查询条件的数据对应的行的行号集合是通过扫描所查询的列的所有数据获取;
其中,所查询的数据通过下述方式存储:
将数据按照行列存储结构进行存储;
对存储的数据的列进行索引构建,建立索引信息;
针对存储的数据的列,获取列中的数据的统计信息;
其中,对存储的数据的列进行索引构建,建立索引信息,包括:通过扫描所述存储的数据,建立所述存储中列的索引信息,并建立所述存储中列的索引信息之间的关联关系,所述列的索引信息包括列中的数据与表格中的行的行号的映射关系,所述映射关系按每列的数据大小排序;
其中,所述列中的数据的统计信息,包括列中数的最大值、最小值、列中空值与到所述行号的映射关系、列中每个数据的出现次数和列中不同数据的个数中一种或任意组合;
其中,建立所述存储中列的索引信息,包括:建立所述存储中所有列的索引信息。
13.一种计算机可读存储介质,其上存储有计算机可执行指令,其中,该计算机可执行指令被处理器执行时使得该处理器:
获取查询条件;
根据存储中列的索引信息,获取所述存储中满足所述查询条件的数据对应的行的行号集合;
其中,获取所述存储中满足所述查询条件的数据对应的行的行号集合之前,还包括:根据所述存储中列的索引信息之间的关联关系,将多个单独查询条件合并为一个单独查询条件,其中,所述列的索引信息包括列中的数据与所述存储中的行的行号的映射关系,所述映射关系按每列的数据大小排序;
获取所述存储中满足所述查询条件的数据对应的行的行号集合,包括:获取每一单独查询条件的数据对应的行号集合,按多个查询条件的组合,将获取到的满足所有单独查询条件的数据的行号集合进行归并;其中,所述每一单独查询条件是根据所述多个查询条件的组合中的逻辑算子拆分得到;
其中,在所述查询条件为等值查询且所查询的数据出现的次数占所查询的列的总行数的百分比超过了预设百分比阈值的情况下,满足所述查询条件的数据对应的行的行号集合是通过扫描所查询的列的所有数据获取;
其中,所查询的数据通过下述方式存储:
将数据按照行列存储结构进行存储;
对存储的数据的列进行索引构建,建立索引信息;
针对存储的数据的列,获取列中的数据的统计信息;
其中,对存储的数据的列进行索引构建,建立索引信息,包括:通过扫描所述存储的数据,建立所述存储中列的索引信息,并建立所述存储中列的索引信息之间的关联关系,所述列的索引信息包括列中的数据与表格中的行的行号的映射关系,所述映射关系按每列的数据大小排序;
其中,所述列中的数据的统计信息,包括列中数的最大值、最小值、列中空值与到所述行号的映射关系、列中每个数据的出现次数和列中不同数据的个数中一种或任意组合;
其中,建立所述存储中列的索引信息,包括:建立所述存储中所有列的索引信息。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711296260.8A CN110019218B (zh) | 2017-12-08 | 2017-12-08 | 数据存储与查询方法及设备 |
PCT/CN2018/118869 WO2019109879A1 (zh) | 2017-12-08 | 2018-12-03 | 数据存储与查询方法及设备 |
JP2020531074A JP7453143B2 (ja) | 2017-12-08 | 2018-12-03 | データ記憶およびクエリ方法並びにデバイス |
US16/894,575 US11449481B2 (en) | 2017-12-08 | 2020-06-05 | Data storage and query method and device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711296260.8A CN110019218B (zh) | 2017-12-08 | 2017-12-08 | 数据存储与查询方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110019218A CN110019218A (zh) | 2019-07-16 |
CN110019218B true CN110019218B (zh) | 2023-08-25 |
Family
ID=66750791
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711296260.8A Active CN110019218B (zh) | 2017-12-08 | 2017-12-08 | 数据存储与查询方法及设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11449481B2 (zh) |
JP (1) | JP7453143B2 (zh) |
CN (1) | CN110019218B (zh) |
WO (1) | WO2019109879A1 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110413624A (zh) * | 2019-08-07 | 2019-11-05 | 南京录信软件技术有限公司 | 一种基于列存的多列联合存储的方法 |
CN111190897B (zh) * | 2019-11-07 | 2023-04-18 | 腾讯科技(深圳)有限公司 | 信息处理方法、装置、存储介质及服务器 |
CN111666279B (zh) * | 2020-04-14 | 2022-04-29 | 阿里巴巴集团控股有限公司 | 查询数据处理方法、装置、电子设备及计算机存储介质 |
CN111723097A (zh) * | 2020-06-29 | 2020-09-29 | 深圳壹账通智能科技有限公司 | 应用程序接口配置方法、装置、计算机设备和存储介质 |
CN112214472B (zh) * | 2020-09-02 | 2024-01-30 | 国家气象信息中心 | 气象格点数据的存储及查询方法、装置及存储介质 |
CN112231317B (zh) * | 2020-09-25 | 2023-05-09 | 浙江三维通信科技有限公司 | 数据的查询方法、装置、电子装置和存储介质 |
CN113779077A (zh) * | 2021-09-28 | 2021-12-10 | 京东城市(北京)数字科技有限公司 | 时间段查询方法、装置、电子设备和存储介质 |
CN113928377B (zh) * | 2021-11-15 | 2024-04-26 | 交控科技股份有限公司 | 移动闭塞系统的列车限速曲线计算方法及装置 |
US11853607B2 (en) | 2021-12-22 | 2023-12-26 | Western Digital Technologies, Inc. | Optimizing flash memory utilization for NVMe KV pair storage |
US11817883B2 (en) | 2021-12-27 | 2023-11-14 | Western Digital Technologies, Inc. | Variable length ECC code according to value length in NVMe key value pair devices |
US11733876B2 (en) | 2022-01-05 | 2023-08-22 | Western Digital Technologies, Inc. | Content aware decoding in KV devices |
CN115809248B (zh) * | 2022-12-30 | 2024-03-22 | 联通智网科技股份有限公司 | 数据查询方法和装置以及存储介质 |
CN117093641A (zh) * | 2023-10-20 | 2023-11-21 | 中国电子科技集团公司第十五研究所 | 一种气象海洋格点数据综合处理方法及系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521303A (zh) * | 2011-11-30 | 2012-06-27 | 北京人大金仓信息技术股份有限公司 | 一种用于列数据库的单表多列序存储方法 |
CN103049473A (zh) * | 2012-10-15 | 2013-04-17 | 新浪技术(中国)有限公司 | 一种数据查询方法及装置 |
CN103500183A (zh) * | 2013-09-12 | 2014-01-08 | 国家计算机网络与信息安全管理中心 | 一种基于多个相关字段组合索引存储结构及建立、查询与维护方法 |
CN103631910A (zh) * | 2013-11-26 | 2014-03-12 | 烽火通信科技股份有限公司 | 一种分布式数据库多列复合查询的系统及方法 |
CN104715039A (zh) * | 2015-03-23 | 2015-06-17 | 星环信息科技(上海)有限公司 | 基于硬盘和内存的列式存储和查询方法及设备 |
US9146954B1 (en) * | 2014-10-09 | 2015-09-29 | Splunk, Inc. | Creating entity definition from a search result set |
CN105631003A (zh) * | 2015-12-28 | 2016-06-01 | 北京赛思信安技术股份有限公司 | 支持海量数据分组统计的智能索引构建、查询及维护方法 |
WO2017163393A1 (ja) * | 2016-03-25 | 2017-09-28 | 株式会社日立製作所 | データ処理システム |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5899986A (en) * | 1997-02-10 | 1999-05-04 | Oracle Corporation | Methods for collecting query workload based statistics on column groups identified by RDBMS optimizer |
US6738790B1 (en) | 1997-10-31 | 2004-05-18 | Oracle International Corporation | Approach for accessing large objects |
US7499907B2 (en) | 2001-10-12 | 2009-03-03 | Teradata Us, Inc. | Index selection in a database system |
US7249118B2 (en) | 2002-05-17 | 2007-07-24 | Aleri, Inc. | Database system and methods |
US7117222B2 (en) | 2003-03-13 | 2006-10-03 | International Business Machines Corporation | Pre-formatted column-level caching to improve client performance |
US7461089B2 (en) * | 2004-01-08 | 2008-12-02 | International Business Machines Corporation | Method and system for creating profiling indices |
US8266168B2 (en) * | 2008-04-24 | 2012-09-11 | Lexisnexis Risk & Information Analytics Group Inc. | Database systems and methods for linking records and entity representations with sufficiently high confidence |
CN101727465B (zh) | 2008-11-03 | 2011-12-21 | 中国移动通信集团公司 | 分布式列存储数据库索引建立、查询方法及装置与系统 |
US8700674B2 (en) | 2009-07-14 | 2014-04-15 | Hewlett-Packard Development Company, L.P. | Database storage architecture |
US10229157B2 (en) | 2009-10-05 | 2019-03-12 | Salesforce.Com, Inc. | Implementing composite custom indices in a multi-tenant database |
US9195657B2 (en) | 2010-03-08 | 2015-11-24 | Microsoft Technology Licensing, Llc | Columnar storage of a database index |
US8903805B2 (en) | 2010-08-20 | 2014-12-02 | Oracle International Corporation | Method and system for performing query optimization using a hybrid execution plan |
US8935233B2 (en) * | 2010-09-28 | 2015-01-13 | International Business Machines Corporation | Approximate index in relational databases |
CN102541916A (zh) * | 2010-12-29 | 2012-07-04 | 沈阳中科博微自动化技术有限公司 | 半导体设备历史数据的记录管理方法 |
CN102663090B (zh) | 2012-04-10 | 2013-11-06 | 华为技术有限公司 | 元数据查询方法和装置 |
US10394848B2 (en) | 2013-07-29 | 2019-08-27 | Amazon Technologies, Inc. | Generating a multi-column index for relational databases by interleaving data bits for selectivity |
JP6045706B2 (ja) * | 2013-08-21 | 2016-12-14 | 株式会社日立製作所 | データ処理システム、データ処理方法およびデータ処理装置 |
US9971793B2 (en) | 2013-08-22 | 2018-05-15 | Hitachi, Ltd. | Database management system and database management method |
IN2013MU02853A (zh) * | 2013-09-02 | 2015-07-03 | Tata Consultancy Services Ltd | |
US10133800B2 (en) | 2013-09-11 | 2018-11-20 | Microsoft Technology Licensing, Llc | Processing datasets with a DBMS engine |
WO2015047251A1 (en) * | 2013-09-25 | 2015-04-02 | Hewlett-Packard Development Company, L.P. | Flexible data format for database management systems |
US9846567B2 (en) | 2014-06-16 | 2017-12-19 | International Business Machines Corporation | Flash optimized columnar data layout and data access algorithms for big data query engines |
US10860562B1 (en) * | 2014-09-12 | 2020-12-08 | Amazon Technologies, Inc. | Dynamic predicate indexing for data stores |
CN104361099B (zh) * | 2014-11-21 | 2017-10-20 | 北京邮电大学 | 一种面向异构存储的适配装置 |
CN104462461B (zh) | 2014-12-16 | 2017-09-29 | 用友网络科技股份有限公司 | 对表单进行排查空值处理的方法及装置 |
US9977803B2 (en) * | 2015-01-30 | 2018-05-22 | Splunk Inc. | Column-based table manipulation of event data |
US10282349B2 (en) * | 2015-08-26 | 2019-05-07 | International Business Machines Corporation | Method for storing data elements in a database |
US10496283B2 (en) | 2016-01-22 | 2019-12-03 | Suraj Prabhakar WAGHULDE | Adaptive prefix tree based order partitioned data storage system |
US10769123B2 (en) * | 2016-09-30 | 2020-09-08 | Microsoft Technology Licensing, Llc | Workload-driven recommendations for Columnstore and Rowstore indexes in relational databases |
US11386058B2 (en) * | 2017-09-29 | 2022-07-12 | Oracle International Corporation | Rule-based autonomous database cloud service framework |
-
2017
- 2017-12-08 CN CN201711296260.8A patent/CN110019218B/zh active Active
-
2018
- 2018-12-03 JP JP2020531074A patent/JP7453143B2/ja active Active
- 2018-12-03 WO PCT/CN2018/118869 patent/WO2019109879A1/zh active Application Filing
-
2020
- 2020-06-05 US US16/894,575 patent/US11449481B2/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521303A (zh) * | 2011-11-30 | 2012-06-27 | 北京人大金仓信息技术股份有限公司 | 一种用于列数据库的单表多列序存储方法 |
CN103049473A (zh) * | 2012-10-15 | 2013-04-17 | 新浪技术(中国)有限公司 | 一种数据查询方法及装置 |
CN103500183A (zh) * | 2013-09-12 | 2014-01-08 | 国家计算机网络与信息安全管理中心 | 一种基于多个相关字段组合索引存储结构及建立、查询与维护方法 |
CN103631910A (zh) * | 2013-11-26 | 2014-03-12 | 烽火通信科技股份有限公司 | 一种分布式数据库多列复合查询的系统及方法 |
US9146954B1 (en) * | 2014-10-09 | 2015-09-29 | Splunk, Inc. | Creating entity definition from a search result set |
CN104715039A (zh) * | 2015-03-23 | 2015-06-17 | 星环信息科技(上海)有限公司 | 基于硬盘和内存的列式存储和查询方法及设备 |
CN105631003A (zh) * | 2015-12-28 | 2016-06-01 | 北京赛思信安技术股份有限公司 | 支持海量数据分组统计的智能索引构建、查询及维护方法 |
WO2017163393A1 (ja) * | 2016-03-25 | 2017-09-28 | 株式会社日立製作所 | データ処理システム |
Also Published As
Publication number | Publication date |
---|---|
WO2019109879A1 (zh) | 2019-06-13 |
JP7453143B2 (ja) | 2024-03-19 |
US11449481B2 (en) | 2022-09-20 |
CN110019218A (zh) | 2019-07-16 |
JP2021506012A (ja) | 2021-02-18 |
US20200301899A1 (en) | 2020-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110019218B (zh) | 数据存储与查询方法及设备 | |
CN113032362B (zh) | 数据血缘分析方法、装置、电子设备和存储介质 | |
CN106611044B (zh) | 一种sql优化方法及设备 | |
US11288287B2 (en) | Methods and apparatus to partition a database | |
US11995059B2 (en) | Database index and database query processing method, apparatus, and device | |
CN110134335A (zh) | 一种基于键值对的rdf数据管理方法、装置及存储介质 | |
WO2016112348A1 (en) | Filtering data objects | |
CN111125199B (zh) | 一种数据库访问方法、装置及电子设备 | |
CN114297204A (zh) | 一种异构数据源的数据存储、检索方法及装置 | |
CN114328601A (zh) | 数据降采样和数据查询方法、系统及存储介质 | |
CN111984625B (zh) | 数据库负载特征处理方法、装置、介质和电子设备 | |
CN110874366A (zh) | 数据处理、查询方法和装置 | |
CN111125216B (zh) | 数据导入Phoenix的方法及装置 | |
CN110968555B (zh) | 维度数据处理方法和装置 | |
CN109542912B (zh) | 区间数据存储方法、装置、服务器及存储介质 | |
CN115599973A (zh) | 一种用户人群标签筛分方法、系统、设备及存储介质 | |
CN107315806B (zh) | 一种基于文件系统的嵌入式存储方法和装置 | |
CN112214494B (zh) | 检索方法及装置 | |
CN114297236A (zh) | 一种数据血缘分析方法、终端设备及存储介质 | |
CN112506953A (zh) | 基于结构化查询语言sql的查询方法、装置及存储介质 | |
CN110569243A (zh) | 一种数据查询方法、数据查询插件和数据查询服务器 | |
CN117076515B (zh) | 医疗管理系统中元数据的溯源方法、装置、服务器及存储介质 | |
CN114153842B (zh) | 一种跨平台数据处理方法、系统、设备及介质 | |
CN115687309B (zh) | 非侵入式卷烟出入库全流程数据血缘构建方法、装置 | |
CN116431720A (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 |