CN106682147A - 一种基于海量数据的查询方法及装置 - Google Patents
一种基于海量数据的查询方法及装置 Download PDFInfo
- Publication number
- CN106682147A CN106682147A CN201611198405.6A CN201611198405A CN106682147A CN 106682147 A CN106682147 A CN 106682147A CN 201611198405 A CN201611198405 A CN 201611198405A CN 106682147 A CN106682147 A CN 106682147A
- Authority
- CN
- China
- Prior art keywords
- query
- sql
- analysis
- data
- user
- 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 40
- 238000004458 analytical method Methods 0.000 claims abstract description 173
- 238000013500 data storage Methods 0.000 claims abstract description 11
- 238000010845 search algorithm Methods 0.000 claims description 13
- 238000012163 sequencing technique Methods 0.000 claims description 12
- 238000013507 mapping Methods 0.000 claims description 6
- 238000013461 design Methods 0.000 abstract description 4
- 238000005516 engineering process Methods 0.000 description 22
- 230000006870 function Effects 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 125000001475 halogen functional group Chemical group 0.000 description 3
- 238000007405 data analysis Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
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/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/242—Query formulation
- G06F16/2433—Query languages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种基于海量数据的查询方法及装置。该方法包括:接收用户通过系统查询页面输入的SQL;对所述SQL进行逻辑分析和物理分析;将所述用户查询所需的查询字段转换为元数据中定义的编码,根据所述SQL中的表、存储类型和存储物理表面获取查询结果;将所述查询结果汇总转换为预设格式,并在所述查询页面进行展示。从而基于语义分析技术的海量数据查询系统,有助于解决在使用haoop、solr等大数据存储技术时,不能很好的支持SQL查询的难题;在系统设计中采用数据预取技术和哈希查询技术,优化海量数据查询系统的查询性能,提高海量数据的查询实时性。
Description
技术领域
本发明实施例涉及数据查询的技术领域,尤其涉及一种基于海量数据的查询方法及装置。
背景技术
随着信息技术的快速发展,互联网信息数据日益增多,对海量数据进行存储和挖掘的需要也越来越多,海量数据分析技术也在快速的发展,一些开源的海量数据处理技术得到了快速的发展和普及,比如:HADOOP、SOLR、STORM、SPARK等大数据存储和计算开源框架。
同时,目前企业的开发技术人员是不熟悉这些技术的,要学习这些技术需要投入很大的精力和成本。如何在不掌握大数据技术的前提下,使用传统SQL使用大数据技术对海量数据进行查询,始终是企业级开发中的难题。
发明内容
本发明实施例的目的在于提出一种基于海量数据的查询方法及装置,旨在解决如何在不掌握大数据技术的前提下,使用传统SQL使用大数据技术对海量数据进行查询的问题。
为达此目的,本发明实施例采用以下技术方案:
第一方面,一种基于海量数据的查询方法,所述方法包括:
接收用户通过系统查询页面输入的SQL;
对所述SQL进行逻辑分析和物理分析,所述逻辑分析用于对所述SQL进行词法分析和语法分析并获取所述用户的查询操作,所述物理分析用于对分布式集群中的数据进行分析、排序、读取量的大小和/或控制查询线程;
将所述用户查询所需的查询字段转换为元数据中定义的编码,根据所述SQL中的表、存储类型和存储物理表面获取查询结果;
将所述查询结果汇总转换为预设格式,并在所述查询页面进行展示。
优选地,所述对所述SQL进行逻辑分析和物理分析,包括:
对所述SQL进行词法分析和语法分析,所述词法分析是根据预设的语法规则将输入的字符集转换为单词;
在所述词法分析之后,将所述词法分析的结果作为所述语法分析的输入,根据所述语法分判断所述用户输入的单词是否符合语法逻辑,并生成一个抽象语法树,并从所述抽象语法树中提取数据查询时需要的参数,根据参数判断所述SQL对应的查询操作;
通过所述物理分析获取分布式集群中数据的分析结果、排序结果、读取量的大小和/或查询线程的控制结果。
优选地,所述对所述SQL进行逻辑分析和物理分析,包括:
将所述SQL解析为AST语法树,根据所述SQL中的表名查询对应的元数据信息,所述元数据信息包括元数据注册的表明、字段名集物理表名和字段名集存储信息;
分析所述AST语法树,分析结果包括查询字段、统计函数集字段、查询表、查询条件、分组字段、排序字段和返回条数;
若查询数据源为Oracle,所述查询条件中指定起止行,则根据所述起止行组织SQL;
若有facet with条件,则拆成多个条件查询所述SQL;
若所述查询数据源为Hbase或者Solr,且为count或facet with统计查询,则根据元数据确定对象Hbase或者Solr的存储信息。
优选地,所述根据所述SQL中的表、存储类型和存储物理表明获取查询结果,包括:
若所述存储物理表面对应多个数据库表时,分别查询各个数据库表,将查询结果合并;
若查询Hbase需要先查询Solr的表面,则从所述Solr中的查询结果中获取存储的表面和rowkey,从所述Hbase查询明细;
若查询数据源为Oracle,则需要从元数据中获取数据库的表名和存储位置。
优选地,所述对所述SQL进行逻辑分析和物理分析之后,还包括:
对所述用户查询的SQL进行分析时,若SQL被所述用户查询频繁,则缓存所述SQL,在CPU空闲的时候对缓存的SQL进行查询,并缓存查询结果;
在查询海量数据时,采用哈希查找算法,通过计算数据元素的存储地址进行查找,所述哈希查找算法为:数据查询前先将数据映射成对应的哈希值,根据所述哈希值查找数据所在的节点。
优选地,所述接收用户通过系统查询页面输入的SQL之前,还包括:
若所述海量数据分别存储在ORACLE、SOLR和HBASE数据库中,根据业务划分数据存储方式;
其中,SOLR作为索引库,保存数据索引信息,使得用户在SOLR中进行快速查询,通过SOLR查询结果获取HBASE表的rowkey,通过所述rowkey在HBASE进行索引。
第二方面,一种基于海量数据的查询装置,所述装置包括:
接收模块,用于接收用户通过系统查询页面输入的SQL;
第一分析模块,用于对所述SQL进行逻辑分析和物理分析,所述逻辑分析用于对所述SQL进行词法分析和语法分析并获取所述用户的查询操作,所述物理分析用于对分布式集群中的数据进行分析、排序、读取量的大小和/或控制查询线程;
获取模块,用于将所述用户查询所需的查询字段转换为元数据中定义的编码,根据所述SQL中的表、存储类型和存储物理表面获取查询结果;
展示模块,用于将所述查询结果汇总转换为预设格式,并在所述查询页面进行展示。
优选地,所述第一分析模块,具体用于:对所述SQL进行词法分析和语法分析,所述词法分析是根据预设的语法规则将输入的字符集转换为单词;在所述词法分析之后,将所述词法分析的结果作为所述语法分析的输入,根据所述语法分判断所述用户输入的单词是否符合语法逻辑,并生成一个抽象语法树,并从所述抽象语法树中提取数据查询时需要的参数,根据参数判断所述SQL对应的查询操作;通过所述物理分析获取分布式集群中数据的分析结果、排序结果、读取量的大小和/或查询线程的控制结果;或者,
所述第一分析模块,还具体用于:将所述SQL解析为AST语法树,根据所述SQL中的表名查询对应的元数据信息,所述元数据信息包括元数据注册的表明、字段名集物理表名和字段名集存储信息;分析所述AST语法树,分析结果包括查询字段、统计函数集字段、查询表、查询条件、分组字段、排序字段和返回条数;若查询数据源为Oracle,所述查询条件中指定起止行,则根据所述起止行组织SQL;若有facet with条件,则拆成多个条件查询所述SQL;若所述查询数据源为Hbase或者Solr,且为count或facet with统计查询,则根据元数据确定对象Hbase或者Solr的存储信息。
优选地,所述获取模块,具体用于:
若所述存储物理表面对应多个数据库表时,分别查询各个数据库表,将查询结果合并;
若查询Hbase需要先查询Solr的表面,则从所述Solr中的查询结果中获取存储的表面和rowkey,从所述Hbase查询明细;
若查询数据源为Oracle,则需要从元数据中获取数据库的表名和存储位置。
优选地,所述装置还包括:第二分析模块,用于在对所述SQL进行逻辑分析和物理分析之后,对所述用户查询的SQL进行分析时,若SQL被所述用户查询频繁,则缓存所述SQL,在CPU空闲的时候对缓存的SQL进行查询,并缓存查询结果;在查询海量数据时,采用哈希查找算法,通过计算数据元素的存储地址进行查找,所述哈希查找算法为:数据查询前先将数据映射成对应的哈希值,根据所述哈希值查找数据所在的节点;
所述装置还包括:存储模块,用于在所述接收用户通过系统查询页面输入的SQL之前,若所述海量数据分别存储在ORACLE、SOLR和HBASE数据库中,根据业务划分数据存储方式;其中,SOLR作为索引库,保存数据索引信息,使得用户在SOLR中进行快速查询,通过SOLR查询结果获取HBASE表的rowkey,通过所述rowkey在HBASE进行索引。
本发明实施例提供的一种基于海量数据的查询方法及装置,接收用户通过系统查询页面输入的SQL;对所述SQL进行逻辑分析和物理分析,所述逻辑分析用于对所述SQL进行词法分析和语法分析并获取所述用户的查询操作,所述物理分析用于对分布式集群中的数据进行分析、排序、读取量的大小和/或控制查询线程;将所述用户查询所需的查询字段转换为元数据中定义的编码,根据所述SQL中的表、存储类型和存储物理表面获取查询结果;将所述查询结果汇总转换为预设格式,并在所述查询页面进行展示。从而基于语义分析技术的海量数据查询系统,有助于解决在使用haoop、solr等大数据存储技术时,不能很好的支持SQL查询的难题;在系统设计中采用数据预取技术和哈希查询技术,优化海量数据查询系统的查询性能,提高海量数据的查询实时性。
附图说明
图1是本发明实施例提供的一种基于海量数据的查询方法的流程示意图;
图2是本发明实施例提供的另一种基于海量数据的查询方法的流程示意图;
图3是本发明实施例提供的另一种基于海量数据的查询方法的流程示意图;
图4是本发明实施例提供的一种基于海量数据的查询装置的功能模块示意图。
具体实施方式
下面结合附图和实施例对本发明实施例作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明实施例,而非对本发明实施例的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明实施例相关的部分而非全部结构。
参考图1,图1是本发明实施例提供的一种基于海量数据的查询方法的流程示意图。
如图1所示,所述基于海量数据的查询方法包括:
步骤101,接收用户通过系统查询页面输入的SQL;
具体的,用户可以通过系统查询页面输入结构化查询语言(Structured QueryLanguage,SQL),点击查询按钮,在系统查询查询页面可以查看查询结果。
步骤102,对所述SQL进行逻辑分析和物理分析,所述逻辑分析用于对所述SQL进行词法分析和语法分析并获取所述用户的查询操作,所述物理分析用于对分布式集群中的数据进行分析、排序、读取量的大小和/或控制查询线程;
优选地,所述对所述SQL进行逻辑分析和物理分析,包括:
对所述SQL进行词法分析和语法分析,所述词法分析是根据预设的语法规则将输入的字符集转换为单词;
在所述词法分析之后,将所述词法分析的结果作为所述语法分析的输入,根据所述语法分判断所述用户输入的单词是否符合语法逻辑,并生成一个抽象语法树,并从所述抽象语法树中提取数据查询时需要的参数,根据参数判断所述SQL对应的查询操作;
通过所述物理分析获取分布式集群中数据的分析结果、排序结果、读取量的大小和/或查询线程的控制结果。
具体的,语义分析阶段包括逻辑分析和物理分析,逻辑分析过程就是要分析用户输入的SQL要执行哪些操作。对用户输入查询SQL进行词法分析和语法分析,词法分析是按照一个确定的有限自动机,可按照我们定义好的语法,将输入的字符集转换为‘单词’。
如:abc=>Identifier(标识符)
‘abc’=>StringLiteral(字符串)
123=>Number(数字)
SELECT=>keyword(关键字)
当我们输入SQL SELECT F00+100FROM POKES,经过词法分析会转换成由单词组成的句子。
(keyword:SELECT)(Identifier:Foo)(keyword:+)(Number:100)(Keyword:FROM)(Identifier:POKES).在词法分析之后,词法分析的结果会作为语法分析的输入,语法分析在词法分析基础来,来判断用户输入的单词是否符合语法逻辑。语法分析过程结束会生成一个抽象语法树。通过编写JAVA程序从抽象语法树据来提取数据查询时需要的参数,跟着这些参数判断,SQL要进行哪些操作的查询。物理分析是分布式集群中数据分析、排序、读取量的大小,查询线程控制等。
优选地,所述对所述SQL进行逻辑分析和物理分析,包括:
将所述SQL解析为抽象语法树(abstract syntax tree,AST),根据所述SQL中的表名查询对应的元数据信息,所述元数据信息包括元数据注册的表明、字段名集物理表名和字段名集存储信息;
分析所述AST语法树,分析结果包括查询字段、统计函数集字段、查询表、查询条件、分组字段、排序字段和返回条数;
若查询数据源为Oracle,所述查询条件中指定起止行,则根据所述起止行组织SQL;
若有facet with条件,则拆成多个条件查询所述SQL;
若所述查询数据源为Hbase或者Solr,且为count或facet with统计查询,则根据元数据确定对象Hbase或者Solr的存储信息。
具体的,系统接收到查询请求,将SQL解析为AST语法树。根据SQL中的表名查询对应的元数据信息:元数据注册的表明、字段名集物理表名、字段名集存储信息等。分析AST语法树,分解结果包含:查询字段、统计函数集字段、查询表、查询条件、分组字段、排序字段、返回条数等。如果查询数据源为oracle,如果条件中指定起止行,则根据起止行组织SQL。如果有facet with条件,则拆成多个条件查询SQL。如果查询数据源为Hbase、solr,并且为count或facet with等统计查询,则根据元数据确定对象Hbase、Solr存储信息。
步骤103,将所述用户查询所需的查询字段转换为元数据中定义的编码,根据所述SQL中的表、存储类型和存储物理表面获取查询结果;
优选地,所述根据所述SQL中的表、存储类型和存储物理表明获取查询结果,包括:
若所述存储物理表面对应多个数据库表时,分别查询各个数据库表,将查询结果合并;
若查询Hbase需要先查询Solr的表面,则从所述Solr中的查询结果中获取存储的表面和rowkey,从所述Hbase查询明细;
若查询数据源为Oracle,则需要从元数据中获取数据库的表名和存储位置。
步骤104,将所述查询结果汇总转换为预设格式,并在所述查询页面进行展示。
具体的,将查询结果汇总转换为json格式,并在页面展示。
本发明实施例提供的一种基于海量数据的查询方法,接收用户通过系统查询页面输入的SQL;对所述SQL进行逻辑分析和物理分析,所述逻辑分析用于对所述SQL进行词法分析和语法分析并获取所述用户的查询操作,所述物理分析用于对分布式集群中的数据进行分析、排序、读取量的大小和/或控制查询线程;将所述用户查询所需的查询字段转换为元数据中定义的编码,根据所述SQL中的表、存储类型和存储物理表面获取查询结果;将所述查询结果汇总转换为预设格式,并在所述查询页面进行展示。从而基于语义分析技术的海量数据查询系统,有助于解决在使用haoop、solr等大数据存储技术时,不能很好的支持SQL查询的难题;在系统设计中采用数据预取技术和哈希查询技术,优化海量数据查询系统的查询性能,提高海量数据的查询实时性。
参考图2,图2是本发明实施例提供的另一种基于海量数据的查询方法的流程示意图。
如图2所示,所述基于海量数据的查询方法包括:
步骤201,接收用户通过系统查询页面输入的SQL;
步骤202,对所述SQL进行逻辑分析和物理分析,所述逻辑分析用于对所述SQL进行词法分析和语法分析并获取所述用户的查询操作,所述物理分析用于对分布式集群中的数据进行分析、排序、读取量的大小和/或控制查询线程;
步骤203,对所述用户查询的SQL进行分析时,若SQL被所述用户查询频繁,则缓存所述SQL,在CPU空闲的时候对缓存的SQL进行查询,并缓存查询结果;在查询海量数据时,采用哈希查找算法,通过计算数据元素的存储地址进行查找,所述哈希查找算法为:数据查询前先将数据映射成对应的哈希值,根据所述哈希值查找数据所在的节点;
具体的,对用户查询的SQL进行分析,如果某个SQL被用户查询频繁,将SQL进行缓存,在CPU空闲的时候对这些SQL进行查询,并缓存查询结果。保证下次用户查询的时候,直接在缓存中读取数据,不再进行数据库查询,这样可以有效减少数据库的访问压力,提高数据查询的实时性。本系统在查询海量数据时,采用哈希查找算法,通过计算数据元素的存储地址进行查找的一种方法。数据查询前先将数据映射成它的哈希值,根据哈希值查找数据所在的节点。通过这种方式避免海量数据查找时进行全盘扫描,可以有效提高海量数据的查询效率。
步骤204,将所述用户查询所需的查询字段转换为元数据中定义的编码,根据所述SQL中的表、存储类型和存储物理表面获取查询结果;
步骤205,将所述查询结果汇总转换为预设格式,并在所述查询页面进行展示。
参考图3,图3是本发明实施例提供的另一种基于海量数据的查询方法的流程示意图。
如图3所示,所述基于海量数据的查询方法包括:
步骤301,若所述海量数据分别存储在ORACLE、SOLR和HBASE数据库中,根据业务划分数据存储方式;其中,SOLR作为索引库,保存数据索引信息,使得用户在SOLR中进行快速查询,通过SOLR查询结果获取HBASE表的rowkey,通过所述rowkey在HBASE进行索引;
具体的,海量数据的查询,为了保证查询效率,需要在存储的时候需要进行再集群进行均匀的划分。数据划分的好坏直接影响到系统的查询性能。我们系统中对数据以键值对的方式组织,采用哈希映射技术,将每个记录映射到相应的存储单元。在数据入库的时候将数据均匀地映射到相应的存储节点。
步骤302,接收用户通过系统查询页面输入的SQL;
步骤303,对所述SQL进行逻辑分析和物理分析,所述逻辑分析用于对所述SQL进行词法分析和语法分析并获取所述用户的查询操作,所述物理分析用于对分布式集群中的数据进行分析、排序、读取量的大小和/或控制查询线程;
步骤304,将所述用户查询所需的查询字段转换为元数据中定义的编码,根据所述SQL中的表、存储类型和存储物理表面获取查询结果;
步骤305,将所述查询结果汇总转换为预设格式,并在所述查询页面进行展示。
同时,本申请还设置SQL规则校验:
(1)、符合标准的SQL语法(语法分析是校验);
(2)、根据元数据注册信息校验:字段名(包含查询字段、条件字段、排序字段、分组字段、函数内的字段等)、表名在元数据注册信息中存在。查询条件字段、分组字段、排序字段在元数据中注册为支持查询(即在索引中存在)。
参考图4,图4是本发明实施例提供的一种基于海量数据的查询装置的功能模块示意图。
如图4所示,所述装置包括:
接收模块401,用于接收用户通过系统查询页面输入的SQL;
第一分析模块402,用于对所述SQL进行逻辑分析和物理分析,所述逻辑分析用于对所述SQL进行词法分析和语法分析并获取所述用户的查询操作,所述物理分析用于对分布式集群中的数据进行分析、排序、读取量的大小和/或控制查询线程;
优选地,所述第一分析模块402,具体用于:对所述SQL进行词法分析和语法分析,所述词法分析是根据预设的语法规则将输入的字符集转换为单词;在所述词法分析之后,将所述词法分析的结果作为所述语法分析的输入,根据所述语法分判断所述用户输入的单词是否符合语法逻辑,并生成一个抽象语法树,并从所述抽象语法树中提取数据查询时需要的参数,根据参数判断所述SQL对应的查询操作;通过所述物理分析获取分布式集群中数据的分析结果、排序结果、读取量的大小和/或查询线程的控制结果;或者,
所述第一分析模块402,还具体用于:将所述SQL解析为AST语法树,根据所述SQL中的表名查询对应的元数据信息,所述元数据信息包括元数据注册的表明、字段名集物理表名和字段名集存储信息;分析所述AST语法树,分析结果包括查询字段、统计函数集字段、查询表、查询条件、分组字段、排序字段和返回条数;若查询数据源为Oracle,所述查询条件中指定起止行,则根据所述起止行组织SQL;若有facet with条件,则拆成多个条件查询所述SQL;若所述查询数据源为Hbase或者Solr,且为count或facet with统计查询,则根据元数据确定对象Hbase或者Solr的存储信息。
获取模块403,用于将所述用户查询所需的查询字段转换为元数据中定义的编码,根据所述SQL中的表、存储类型和存储物理表面获取查询结果;
优选地,所述获取模块403,具体用于:
若所述存储物理表面对应多个数据库表时,分别查询各个数据库表,将查询结果合并;
若查询Hbase需要先查询Solr的表面,则从所述Solr中的查询结果中获取存储的表面和rowkey,从所述Hbase查询明细;
若查询数据源为Oracle,则需要从元数据中获取数据库的表名和存储位置。
展示模块404,用于将所述查询结果汇总转换为预设格式,并在所述查询页面进行展示。
优选地,所述装置还包括:第二分析模块,用于在对所述SQL进行逻辑分析和物理分析之后,对所述用户查询的SQL进行分析时,若SQL被所述用户查询频繁,则缓存所述SQL,在CPU空闲的时候对缓存的SQL进行查询,并缓存查询结果;在查询海量数据时,采用哈希查找算法,通过计算数据元素的存储地址进行查找,所述哈希查找算法为:数据查询前先将数据映射成对应的哈希值,根据所述哈希值查找数据所在的节点;
所述装置还包括:存储模块,用于在所述接收用户通过系统查询页面输入的SQL之前,若所述海量数据分别存储在ORACLE、SOLR和HBASE数据库中,根据业务划分数据存储方式;其中,SOLR作为索引库,保存数据索引信息,使得用户在SOLR中进行快速查询,通过SOLR查询结果获取HBASE表的rowkey,通过所述rowkey在HBASE进行索引。
本发明实施例提供的一种基于海量数据的查询装置,接收用户通过系统查询页面输入的SQL;对所述SQL进行逻辑分析和物理分析,所述逻辑分析用于对所述SQL进行词法分析和语法分析并获取所述用户的查询操作,所述物理分析用于对分布式集群中的数据进行分析、排序、读取量的大小和/或控制查询线程;将所述用户查询所需的查询字段转换为元数据中定义的编码,根据所述SQL中的表、存储类型和存储物理表面获取查询结果;将所述查询结果汇总转换为预设格式,并在所述查询页面进行展示。从而基于语义分析技术的海量数据查询系统,有助于解决在使用haoop、solr等大数据存储技术时,不能很好的支持SQL查询的难题;在系统设计中采用数据预取技术和哈希查询技术,优化海量数据查询系统的查询性能,提高海量数据的查询实时性。
以上结合具体实施例描述了本发明实施例的技术原理。这些描述只是为了解释本发明实施例的原理,而不能以任何方式解释为对本发明实施例保护范围的限制。基于此处的解释,本领域的技术人员不需要付出创造性的劳动即可联想到本发明实施例的其它具体实施方式,这些方式都将落入本发明实施例的保护范围之内。
Claims (10)
1.一种基于海量数据的查询方法,其特征在于,所述方法包括:
接收用户通过系统查询页面输入的SQL;
对所述SQL进行逻辑分析和物理分析,所述逻辑分析用于对所述SQL进行词法分析和语法分析并获取所述用户的查询操作,所述物理分析用于对分布式集群中的数据进行分析、排序、读取量的大小和/或控制查询线程;
将所述用户查询所需的查询字段转换为元数据中定义的编码,根据所述SQL中的表、存储类型和存储物理表面获取查询结果;
将所述查询结果汇总转换为预设格式,并在所述查询页面进行展示。
2.根据权利要求1所述的方法,其特征在于,所述对所述SQL进行逻辑分析和物理分析,包括:
对所述SQL进行词法分析和语法分析,所述词法分析是根据预设的语法规则将输入的字符集转换为单词;
在所述词法分析之后,将所述词法分析的结果作为所述语法分析的输入,根据所述语法分判断所述用户输入的单词是否符合语法逻辑,并生成一个抽象语法树,并从所述抽象语法树中提取数据查询时需要的参数,根据参数判断所述SQL对应的查询操作;
通过所述物理分析获取分布式集群中数据的分析结果、排序结果、读取量的大小和/或查询线程的控制结果。
3.根据权利要求1所述的方法,其特征在于,所述对所述SQL进行逻辑分析和物理分析,包括:
将所述SQL解析为AST语法树,根据所述SQL中的表名查询对应的元数据信息,所述元数据信息包括元数据注册的表明、字段名集物理表名和字段名集存储信息;
分析所述AST语法树,分析结果包括查询字段、统计函数集字段、查询表、查询条件、分组字段、排序字段和返回条数;
若查询数据源为Oracle,所述查询条件中指定起止行,则根据所述起止行组织SQL;
若有facet with条件,则拆成多个条件查询所述SQL;
若所述查询数据源为Hbase或者Solr,且为count或facet with统计查询,则根据元数据确定对象Hbase或者Solr的存储信息。
4.根据权利要求1所述的方法,其特征在于,所述根据所述SQL中的表、存储类型和存储物理表明获取查询结果,包括:
若所述存储物理表面对应多个数据库表时,分别查询各个数据库表,将查询结果合并;
若查询Hbase需要先查询Solr的表面,则从所述Solr中的查询结果中获取存储的表面和rowkey,从所述Hbase查询明细;
若查询数据源为Oracle,则需要从元数据中获取数据库的表名和存储位置。
5.根据权利要求1至4任意一项所述的方法,其特征在于,所述对所述SQL进行逻辑分析和物理分析之后,还包括:
对所述用户查询的SQL进行分析时,若SQL被所述用户查询频繁,则缓存所述SQL,在CPU空闲的时候对缓存的SQL进行查询,并缓存查询结果;
在查询海量数据时,采用哈希查找算法,通过计算数据元素的存储地址进行查找,所述哈希查找算法为:数据查询前先将数据映射成对应的哈希值,根据所述哈希值查找数据所在的节点。
6.根据权利要求1至4任意一项所述的方法,其特征在于,所述接收用户通过系统查询页面输入的SQL之前,还包括:
若所述海量数据分别存储在ORACLE、SOLR和HBASE数据库中,根据业务划分数据存储方式;
其中,SOLR作为索引库,保存数据索引信息,使得用户在SOLR中进行快速查询,通过SOLR查询结果获取HBASE表的rowkey,通过所述rowkey在HBASE进行索引。
7.一种基于海量数据的查询装置,其特征在于,所述装置包括:
接收模块,用于接收用户通过系统查询页面输入的SQL;
第一分析模块,用于对所述SQL进行逻辑分析和物理分析,所述逻辑分析用于对所述SQL进行词法分析和语法分析并获取所述用户的查询操作,所述物理分析用于对分布式集群中的数据进行分析、排序、读取量的大小和/或控制查询线程;
获取模块,用于将所述用户查询所需的查询字段转换为元数据中定义的编码,根据所述SQL中的表、存储类型和存储物理表面获取查询结果;
展示模块,用于将所述查询结果汇总转换为预设格式,并在所述查询页面进行展示。
8.根据权利要求7所述的装置,其特征在于,所述第一分析模块,具体用于:对所述SQL进行词法分析和语法分析,所述词法分析是根据预设的语法规则将输入的字符集转换为单词;在所述词法分析之后,将所述词法分析的结果作为所述语法分析的输入,根据所述语法分判断所述用户输入的单词是否符合语法逻辑,并生成一个抽象语法树,并从所述抽象语法树中提取数据查询时需要的参数,根据参数判断所述SQL对应的查询操作;通过所述物理分析获取分布式集群中数据的分析结果、排序结果、读取量的大小和/或查询线程的控制结果;或者,
所述第一分析模块,还具体用于:将所述SQL解析为AST语法树,根据所述SQL中的表名查询对应的元数据信息,所述元数据信息包括元数据注册的表明、字段名集物理表名和字段名集存储信息;分析所述AST语法树,分析结果包括查询字段、统计函数集字段、查询表、查询条件、分组字段、排序字段和返回条数;若查询数据源为Oracle,所述查询条件中指定起止行,则根据所述起止行组织SQL;若有facet with条件,则拆成多个条件查询所述SQL;若所述查询数据源为Hbase或者Solr,且为count或facet with统计查询,则根据元数据确定对象Hbase或者Solr的存储信息。
9.根据权利要求7所述的装置,其特征在于,所述获取模块,具体用于:
若所述存储物理表面对应多个数据库表时,分别查询各个数据库表,将查询结果合并;
若查询Hbase需要先查询Solr的表面,则从所述Solr中的查询结果中获取存储的表面和rowkey,从所述Hbase查询明细;
若查询数据源为Oracle,则需要从元数据中获取数据库的表名和存储位置。
10.根据权利要求7至9任意一项所述的装置,其特征在于,
所述装置还包括:第二分析模块,用于在对所述SQL进行逻辑分析和物理分析之后,对所述用户查询的SQL进行分析时,若SQL被所述用户查询频繁,则缓存所述SQL,在CPU空闲的时候对缓存的SQL进行查询,并缓存查询结果;在查询海量数据时,采用哈希查找算法,通过计算数据元素的存储地址进行查找,所述哈希查找算法为:数据查询前先将数据映射成对应的哈希值,根据所述哈希值查找数据所在的节点;
所述装置还包括:存储模块,用于在所述接收用户通过系统查询页面输入的SQL之前,若所述海量数据分别存储在ORACLE、SOLR和HBASE数据库中,根据业务划分数据存储方式;其中,SOLR作为索引库,保存数据索引信息,使得用户在SOLR中进行快速查询,通过SOLR查询结果获取HBASE表的rowkey,通过所述rowkey在HBASE进行索引。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611198405.6A CN106682147A (zh) | 2016-12-22 | 2016-12-22 | 一种基于海量数据的查询方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611198405.6A CN106682147A (zh) | 2016-12-22 | 2016-12-22 | 一种基于海量数据的查询方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106682147A true CN106682147A (zh) | 2017-05-17 |
Family
ID=58870384
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611198405.6A Pending CN106682147A (zh) | 2016-12-22 | 2016-12-22 | 一种基于海量数据的查询方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106682147A (zh) |
Cited By (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107220363A (zh) * | 2017-06-07 | 2017-09-29 | 中国科学院信息工程研究所 | 一种支持全局复杂检索的跨地域查询方法及系统 |
CN107273504A (zh) * | 2017-06-19 | 2017-10-20 | 浪潮软件集团有限公司 | 一种基于Kudu的数据查询方法和装置 |
CN107341198A (zh) * | 2017-06-16 | 2017-11-10 | 云南电网有限责任公司信息中心 | 一种基于主题实例的电力海量数据存储和查询方法 |
CN107395412A (zh) * | 2017-07-18 | 2017-11-24 | 浪潮天元通信信息系统有限公司 | 告警信息查询的方法和装置 |
CN107463711A (zh) * | 2017-08-22 | 2017-12-12 | 山东浪潮云服务信息科技有限公司 | 一种数据的标签匹配方法及装置 |
CN107506481A (zh) * | 2017-09-15 | 2017-12-22 | 北京京东尚科信息技术有限公司 | 用于处理信息的方法及装置 |
CN107591195A (zh) * | 2017-09-07 | 2018-01-16 | 北京鑫丰南格科技股份有限公司 | 一种基于护理呼叫系统的医护辅助方法及装置 |
CN107704453A (zh) * | 2017-10-23 | 2018-02-16 | 深圳市前海众兴电子商务有限公司 | 一种文字语义分析方法、文字语义分析终端及存储介质 |
CN107766510A (zh) * | 2017-10-23 | 2018-03-06 | 中国银行股份有限公司 | 一种数据处理方法、数据查询方法及装置 |
CN108182226A (zh) * | 2017-12-26 | 2018-06-19 | 福建中金在线信息科技有限公司 | 一种数据查询的方法以及相关设备 |
CN108197324A (zh) * | 2018-02-06 | 2018-06-22 | 百度在线网络技术(北京)有限公司 | 用于存储数据的方法和装置 |
CN108241735A (zh) * | 2017-12-05 | 2018-07-03 | 新华智云科技有限公司 | 一种数据分析方法及设备 |
CN109831540A (zh) * | 2019-04-12 | 2019-05-31 | 成都四方伟业软件股份有限公司 | 分布式存储方法、装置、电子设备及存储介质 |
CN109947796A (zh) * | 2019-04-12 | 2019-06-28 | 北京工业大学 | 一种分布式数据库系统查询中间结果集的缓存方法 |
CN110019291A (zh) * | 2017-09-04 | 2019-07-16 | 中国移动通信集团浙江有限公司 | 一种sql解析方法和sql解析器 |
CN110019314A (zh) * | 2017-12-29 | 2019-07-16 | 中国移动通信集团湖南有限公司 | 基于数据项分析的动态数据封装方法、客户端和服务端 |
CN110032575A (zh) * | 2019-04-15 | 2019-07-19 | 网易(杭州)网络有限公司 | 数据查询方法、装置、设备和存储介质 |
CN110109870A (zh) * | 2018-01-24 | 2019-08-09 | 江苏友上科技实业有限公司 | 一种基于Solr的海量数据快速检索系统 |
CN110209694A (zh) * | 2019-05-20 | 2019-09-06 | 北京互金新融科技有限公司 | 数据处理方法及装置 |
CN110399388A (zh) * | 2019-07-29 | 2019-11-01 | 中国工商银行股份有限公司 | 数据查询方法、系统和设备 |
CN110569243A (zh) * | 2019-08-22 | 2019-12-13 | 厦门网宿有限公司 | 一种数据查询方法、数据查询插件和数据查询服务器 |
CN110704476A (zh) * | 2019-10-08 | 2020-01-17 | 北京锐安科技有限公司 | 数据处理方法、装置、设备及存储介质 |
CN111309757A (zh) * | 2020-05-14 | 2020-06-19 | 深圳市赢时胜信息技术股份有限公司 | 一种HBase的SQL解释器和优化方法 |
CN111581231A (zh) * | 2020-04-20 | 2020-08-25 | 北京明略软件系统有限公司 | 一种基于异构数据库的查询方法和装置 |
CN111914135A (zh) * | 2020-07-24 | 2020-11-10 | 平安证券股份有限公司 | 数据查询方法、装置、电子设备及存储介质 |
CN113704302A (zh) * | 2021-07-30 | 2021-11-26 | 济南浪潮数据技术有限公司 | 基于hash映射的海量数据检索方法、系统、终端及存储介质 |
CN114625732A (zh) * | 2022-02-09 | 2022-06-14 | 杭州未名信科科技有限公司 | 基于结构化查询语言sql的查询方法和系统 |
CN115686702A (zh) * | 2022-08-24 | 2023-02-03 | 北京数美时代科技有限公司 | 一种数据拉取方法、系统、存储介质和电子设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102799644A (zh) * | 2012-06-28 | 2012-11-28 | 用友软件股份有限公司 | 基于元数据的数据库动态查询系统和数据库动态查询方法 |
-
2016
- 2016-12-22 CN CN201611198405.6A patent/CN106682147A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102799644A (zh) * | 2012-06-28 | 2012-11-28 | 用友软件股份有限公司 | 基于元数据的数据库动态查询系统和数据库动态查询方法 |
Non-Patent Citations (2)
Title |
---|
曾艳梅: ""基于元数据分布式查询与优化方法的应用研究"", 《中国优秀硕士学位论文全文数据库——信息科技辑》 * |
阿里云柳璃: ""SQL解析过程详解"", 《云栖社区--HTTP://BLOG/ALIYUN.COM/733》 * |
Cited By (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107220363B (zh) * | 2017-06-07 | 2020-09-22 | 中国科学院信息工程研究所 | 一种支持全局复杂检索的跨地域查询方法及系统 |
CN107220363A (zh) * | 2017-06-07 | 2017-09-29 | 中国科学院信息工程研究所 | 一种支持全局复杂检索的跨地域查询方法及系统 |
CN107341198A (zh) * | 2017-06-16 | 2017-11-10 | 云南电网有限责任公司信息中心 | 一种基于主题实例的电力海量数据存储和查询方法 |
CN107273504A (zh) * | 2017-06-19 | 2017-10-20 | 浪潮软件集团有限公司 | 一种基于Kudu的数据查询方法和装置 |
CN107395412A (zh) * | 2017-07-18 | 2017-11-24 | 浪潮天元通信信息系统有限公司 | 告警信息查询的方法和装置 |
CN107463711A (zh) * | 2017-08-22 | 2017-12-12 | 山东浪潮云服务信息科技有限公司 | 一种数据的标签匹配方法及装置 |
CN107463711B (zh) * | 2017-08-22 | 2020-07-28 | 山东浪潮云服务信息科技有限公司 | 一种数据的标签匹配方法及装置 |
CN110019291A (zh) * | 2017-09-04 | 2019-07-16 | 中国移动通信集团浙江有限公司 | 一种sql解析方法和sql解析器 |
CN107591195A (zh) * | 2017-09-07 | 2018-01-16 | 北京鑫丰南格科技股份有限公司 | 一种基于护理呼叫系统的医护辅助方法及装置 |
CN107506481A (zh) * | 2017-09-15 | 2017-12-22 | 北京京东尚科信息技术有限公司 | 用于处理信息的方法及装置 |
CN107766510A (zh) * | 2017-10-23 | 2018-03-06 | 中国银行股份有限公司 | 一种数据处理方法、数据查询方法及装置 |
CN107704453A (zh) * | 2017-10-23 | 2018-02-16 | 深圳市前海众兴电子商务有限公司 | 一种文字语义分析方法、文字语义分析终端及存储介质 |
CN107704453B (zh) * | 2017-10-23 | 2021-10-08 | 深圳市前海众兴科研有限公司 | 一种文字语义分析方法、文字语义分析终端及存储介质 |
CN108241735A (zh) * | 2017-12-05 | 2018-07-03 | 新华智云科技有限公司 | 一种数据分析方法及设备 |
CN108182226A (zh) * | 2017-12-26 | 2018-06-19 | 福建中金在线信息科技有限公司 | 一种数据查询的方法以及相关设备 |
CN110019314A (zh) * | 2017-12-29 | 2019-07-16 | 中国移动通信集团湖南有限公司 | 基于数据项分析的动态数据封装方法、客户端和服务端 |
CN110019314B (zh) * | 2017-12-29 | 2022-02-11 | 中国移动通信集团湖南有限公司 | 基于数据项分析的动态数据封装方法、客户端和服务端 |
CN110109870A (zh) * | 2018-01-24 | 2019-08-09 | 江苏友上科技实业有限公司 | 一种基于Solr的海量数据快速检索系统 |
CN108197324B (zh) * | 2018-02-06 | 2021-07-16 | 百度在线网络技术(北京)有限公司 | 用于存储数据的方法和装置 |
CN108197324A (zh) * | 2018-02-06 | 2018-06-22 | 百度在线网络技术(北京)有限公司 | 用于存储数据的方法和装置 |
CN109947796B (zh) * | 2019-04-12 | 2021-04-30 | 北京工业大学 | 一种分布式数据库系统查询中间结果集的缓存方法 |
CN109831540A (zh) * | 2019-04-12 | 2019-05-31 | 成都四方伟业软件股份有限公司 | 分布式存储方法、装置、电子设备及存储介质 |
CN109947796A (zh) * | 2019-04-12 | 2019-06-28 | 北京工业大学 | 一种分布式数据库系统查询中间结果集的缓存方法 |
CN110032575A (zh) * | 2019-04-15 | 2019-07-19 | 网易(杭州)网络有限公司 | 数据查询方法、装置、设备和存储介质 |
CN110209694A (zh) * | 2019-05-20 | 2019-09-06 | 北京互金新融科技有限公司 | 数据处理方法及装置 |
CN110399388A (zh) * | 2019-07-29 | 2019-11-01 | 中国工商银行股份有限公司 | 数据查询方法、系统和设备 |
CN110569243A (zh) * | 2019-08-22 | 2019-12-13 | 厦门网宿有限公司 | 一种数据查询方法、数据查询插件和数据查询服务器 |
CN110569243B (zh) * | 2019-08-22 | 2022-07-01 | 厦门网宿有限公司 | 一种数据查询方法、数据查询插件和数据查询服务器 |
CN110704476A (zh) * | 2019-10-08 | 2020-01-17 | 北京锐安科技有限公司 | 数据处理方法、装置、设备及存储介质 |
CN111581231A (zh) * | 2020-04-20 | 2020-08-25 | 北京明略软件系统有限公司 | 一种基于异构数据库的查询方法和装置 |
CN111309757A (zh) * | 2020-05-14 | 2020-06-19 | 深圳市赢时胜信息技术股份有限公司 | 一种HBase的SQL解释器和优化方法 |
CN111914135A (zh) * | 2020-07-24 | 2020-11-10 | 平安证券股份有限公司 | 数据查询方法、装置、电子设备及存储介质 |
CN111914135B (zh) * | 2020-07-24 | 2024-08-13 | 平安证券股份有限公司 | 数据查询方法、装置、电子设备及存储介质 |
CN113704302A (zh) * | 2021-07-30 | 2021-11-26 | 济南浪潮数据技术有限公司 | 基于hash映射的海量数据检索方法、系统、终端及存储介质 |
CN114625732A (zh) * | 2022-02-09 | 2022-06-14 | 杭州未名信科科技有限公司 | 基于结构化查询语言sql的查询方法和系统 |
CN114625732B (zh) * | 2022-02-09 | 2023-06-20 | 杭州未名信科科技有限公司 | 基于结构化查询语言sql的查询方法和系统 |
CN115686702A (zh) * | 2022-08-24 | 2023-02-03 | 北京数美时代科技有限公司 | 一种数据拉取方法、系统、存储介质和电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106682147A (zh) | 一种基于海量数据的查询方法及装置 | |
CN108932294B (zh) | 基于索引的简历数据处理方法、装置、设备及存储介质 | |
US7895197B2 (en) | Hierarchical metadata generator for retrieval systems | |
CN107783985B (zh) | 一种分布式数据库查询方法、装置及管理系统 | |
CN104516949B (zh) | 网页数据处理方法和装置、查询处理方法及问答系统 | |
CN109947796B (zh) | 一种分布式数据库系统查询中间结果集的缓存方法 | |
CN102930054A (zh) | 数据搜索方法及系统 | |
CN102915380A (zh) | 用于对数据进行搜索的方法和系统 | |
US20230086966A1 (en) | Search systems and methods utilizing search based user clustering | |
JP2015099586A (ja) | データ集約のためのシステム、装置、プログラム、及び方法 | |
US8712999B2 (en) | Systems and methods for online search recirculation and query categorization | |
US9930113B2 (en) | Data retrieval via a telecommunication network | |
US20160292275A1 (en) | System and method for extracting and searching for design | |
CN102819591A (zh) | 一种基于内容的网页分类方法及系统 | |
CN109710767B (zh) | 多语种大数据服务平台 | |
CN106708814B (zh) | 一种基于关系型数据库的检索方法及装置 | |
CN112131295A (zh) | 基于Elasticsearch的数据处理方法及设备 | |
US11010362B2 (en) | Method and system for caching a generated query plan for time series data | |
US8527518B2 (en) | Inverted indexes with multiple language support | |
US20230315727A1 (en) | Cost-based query optimization for untyped fields in database systems | |
US8756246B2 (en) | Method and system for caching lexical mappings for RDF data | |
Knap | Towards Odalic, a Semantic Table Interpretation Tool in the ADEQUATe Project. | |
US10866944B2 (en) | Reconciled data storage system | |
KR100659370B1 (ko) | 시소러스 매칭에 의한 문서 db 형성 방법 및 정보검색방법 | |
US11726972B2 (en) | Directed data indexing based on conceptual relevance |
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: 20170517 |
|
RJ01 | Rejection of invention patent application after publication |