CN110489445B - 一种基于多形态复合的海量数据快速查询方法 - Google Patents
一种基于多形态复合的海量数据快速查询方法 Download PDFInfo
- Publication number
- CN110489445B CN110489445B CN201910710467.8A CN201910710467A CN110489445B CN 110489445 B CN110489445 B CN 110489445B CN 201910710467 A CN201910710467 A CN 201910710467A CN 110489445 B CN110489445 B CN 110489445B
- Authority
- CN
- China
- Prior art keywords
- query
- data
- middleware
- search engine
- mysql database
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24549—Run-time 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
- G06F16/24564—Applying rules; Deductive queries
-
- 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/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2468—Fuzzy queries
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
-
- 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)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Automation & Control Theory (AREA)
- Probability & Statistics with Applications (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于多形态复合的海量数据快速查询方法,包括如下步骤:首先,对需要处理的数据进行识别,判断数据的类型,对数据进行相应处理后存储于MYSQL数据库并同步至Elastic search搜索引擎,重写拦截器并设置查询拦截规则,设计一个查询中间件并对查询中间件进行配置;其次,采用拦截器对查询语句进行拦截并封装,查询中间件解析查询语句和参数,根据查询特征的不同,分别向MYSQL数据库或Elastic search搜索引擎发起请求,进行数据查询;最后,利用查询中间件对查询结果进行格式化和数据集封装,进一步解析查询结果,将最终结果返回呈现给用户前端。这样的设计,提高了数据查询的效率和准确性,减少了数据查询的系统开销,增强了系统查询的综合性能。
Description
技术领域
本发明属于大数据处理领域,特别是涉及一种基于多形态复合的海量数据快速查询方法。
背景技术
随着大数据时代的到来,互联网数据呈现爆发式增长。即使是对于传统的企业级应用来说其产生的数据量也在迅猛增长,单张表的数据量达到千万级、后台系统日志达到亿级是非常常见的事情。通常企业对于这些数据有着强烈的查询分析需求,因为海量数据的“知识”存储量是非常大的,若能在这些查询出来的数据上进行数据挖掘分析出其蕴含的“知识”特征,这对于企业的战略、战术是非常有帮助的。所以如何在数据特征复杂、查询条件繁多的情况下对海量数据进行高效的查询是一个值得探讨的话题。
在数据查询处理中,通常使用MySQL、ORACLE、DBASE等结构化数据库,对于简单数据及数据量不大的数据库进行查询时,查询速度快、准确性高,但是在大数据量或数据结构复杂的情况下进行查询,查询性能会变得较差。目前,很多系统采用Elastic Search分布式搜索引擎的方式,对于大数据量及数据结构复杂的数据进行查询时速度非常快。但是,如果对简单线性数据的查询也采用Elastic Search搜索引擎方式,则系统开销巨大,存在浪费Elastic Search搜索引擎性能的问题。为进一步提高大数据搜索的综合性能,有的系统将结构化数据库与Elastic Search搜索引擎的非结构化数据存储的各自优势结合起来进行查询,但是也存在这样的问题:如何根据Elastic Search搜索引擎特点将结构化数据库的数据同步至Elastic Search搜索引擎,如何对用户前端的查询请求进行解析,为其选择最优的查询方式。
发明内容
本发明的目的在于;针对现有技术的缺点和不足,提出一种基于多形态复合的海量数据快速查询方法,通过设置查询中间件、拦截器及索引表等,解决了结构化与非结构化数据存储的同步以及优化选择查询方式的问题,提高了大数据量和结构复杂数据的查询效率和准确性,增强了系统数据查询的综合性能。
为实现上述目的,本发明采用的技术方案为:
一种基于多形态复合的海量数据快速查询方法,包括如下步骤:
S1:数据特性识别与预处理,即后台程序对需要处理的数据进行识别,判断数据的类型,对数据进行相应处理后存储于MYSQL数据库并同步至Elastic search搜索引擎;在后台程序的数据持久化存储层重写拦截器并设置查询拦截规则,在后台程序与MYSQL数据库、Elastic search搜索引擎之间设计一个查询中间件并对查询中间件进行配置;
S2:数据查询处理,即拦截器对查询语句进行拦截并封装,查询中间件解析查询语句和参数,根据查询特征的不同,分别向MYSQL数据库或Elastic search搜索引擎发起请求,进行数据查询;
S3:查询数据后处理,即查询中间件对查询结果进行格式化和数据集封装,进一步解析查询结果,将最终结果返回呈现给用户前端。
进一步地,步骤S1中所述数据特性识别与预处理的实施流程如下:
S1.1:通过自动EXCEL解析、数据源导入或/和系统业务自动产生的方式获得需要处理的数据;
S1.2:对待处理的数据进行整体及抽样扫描,根据数据总量和字段的复杂度判断数据的类型;
S1.3:如果数据类型为普通数据,则直接将普通数据存储于MYSQL数据库并同步至Elastic search搜索引擎;如果数据类型为复合数据,则将复合数据存储于MYSQL数据库并同步至Elastic search搜索引擎,同时在Elastic search搜索引擎中对复合数据进行预处理;
S1.4:对数据进行更新或删除操作时,后台程序的事务控制层判断数据在MYSQL数据库和Elastic search搜索引擎中同时更新或删除成功,才能提交本次数据更新或删除操作,否则进行回滚;
S1.5:根据数据及查询的复杂度,重写拦截器,设置查询拦截规则;
S1.6:在初始化后台程序时,对查询中间件进行整合配置,将查询中间件的服务器地址、端口及其它相关配置信息写入查询中间件配置文件中,同时,在查询中间件配置文件中也写入MYSQL数据库和Elastic Search搜索引擎的服务器地址、用户名、密码及其它相关配置信息,使得查询中间件可以访问到MYSQL数据库和Elastic Search搜索引擎。
进一步地,步骤S1.3中所述对复合数据进行预处理的实施流程如下:
S1.3.1:创建复合数据对象的索引表,在索引表所有字段末尾增加一个名称为es_index的字段,用于存储一条记录复合数据预处理后的数据;
S1.3.2:将es_index前所有字段的字段名和字段值进行逐一拼接起来,生成一条包含所述复合数据全部记录信息的文本,再将所述文本存储在es_index字段中;
S1.3.3:对索引表中可以模糊查询的特殊字段,对其字段值添加一些模糊查询不同形式的字段分词。
进一步地,步骤S2中所述数据查询处理的实施流程如下:
S2.1:后台程序接收到用户前端查询请求后,在数据持久化存储层构建SQL查询语句;
S2.2:拦截器对数据更新或删除的SQL语句不予拦截,直接放行进行相应的操作;拦截器按照拦截规则对SQL查询语句进行拦截,并以查询中间件所能接受的参数格式对拦截到的SQL查询语句和参数进行格式化封装,将封装好的查询请求发送给查询中间件;
S2.3:采用编译技术构造一张关键词表,将具有深度分页、模糊查询的关键字添加到所述关键词表中;
S2.4:查询中间件获取SQL查询语句和参数后,首先对SQL查询语句进行扫描解析,在关键词表查找是否包含关键词,然后对SQL查询参数进行扫描解析,判断该SQL查询的特征,最后根据扫描解析的结果和数据及查询的复杂度,构建一个SQL查询请求或ES查询请求;
S2.5:如果无法判断数据及查询的复杂度,则对MYSQL数据库或Elastic Search搜索引擎都发起查询请求,并记录两者的查询时间;如果两者的查询时间差异较大,只需记录一次查询时间并将查询时间最短的查询请求构建成相应的SQL查询请求或ES查询请求,否则需要记录若干次两者的查询时间,取若干次查询时间的平均值,将平均查询时间最短的查询请求构建成相应的SQL查询请求或ES查询请求;
S2.6:查询中间件根据构建好的SQL查询请求或ES查询请求,分别向MYSQL数据库或Elastic Search搜索引擎发起查询。
进一步地,步骤S3中所述查询数据后处理的实施流程如下:
S3.1:查询中间件从MYSQL数据库或Elastic Search搜索引擎获得查询数据;
S3.2:查询中间件采用JSON格式对查询数据进行格式化打包,将打包后的查询数据集封装成网络请求,返回给发出查询请求的后台程序;
S3.3:等待查询结果的拦截器获得查询数据集,取出查询数据并进行解析,转化成业务实体类型数据,返回给业务逻辑控制层;
S3.4:业务逻辑控制层进一步解析业务实体类型的查询数据,将最终查询结果数据返回给用户前端。
进一步地,所述后台程序包括业务逻辑控制层、数据持久化存储层、事务控制层,其中:所述业务逻辑控制层位于用户前端与数据持久化存储层之间,用于对用户具体的操作进行业务逻辑处理,将原始数据抽象出逻辑数据,形成一种业务规则;所述数据持久化存储层,用于将后台程序产生的数据及数据库相关的各种操作数据适时进行持久存储;事务控制层位于数据持久化存储层与MYSQL数据库或Elastic Search搜索引擎之间,用于对MYSQL数据库或Elastic Search搜索引擎的操作事务进行控制。
进一步地,所述查询中间件用于对用户前端的查询请求进行分析处理,为其选择最优的查询方式,再对查询结果数据进行解析,向用户前端返回最终的查询结果。
进一步地,所述MYSQL数据库与Elastic search搜索引擎进行数据同步的方式为采用Logstash同步工具实现结构化和非结构化数据存储的同步。
本发明与现有技术相比,具有如下优点与有益效果:
1.在后台程序与MYSQL数据库、Elastic search搜索引擎之间设计一个查询中间件,对SQL查询语句进行扫描解析,根据数据及查询的复杂度不同分别生成SQL查询请求或ES查询请求,为每一次查询请求选择最优的查询方式,大大提高了查询效率,减少了数据查询的系统开销,增强了系统查询的综合性能;
2.通过构建复合数据的索引表及关键词表,进一步标引全文数据文本以及能产生深度分页、模糊查询的关键字,同时设置拦截器,配置拦截规则,对用户前端的查询请求进行分类处理、精确拦截,进一步提高了数据查询的速度和准确性;
3.采用Logstash同步工具,结合复合数据索引表的构建,有效实现了结构化数据到非结构化数据的同步存储。
附图说明
图1为一种基于多形态复合的海量数据快速查询方法流程图;
图2为本发明中复合数据查询处理方案的整体架构示意图;
图3为本发明中数据同步架构的示意图;
图4为本发明在数据对象中增加字段的示意图;
图5为本发明对数据对象进行预处理的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
实施例
如图1至5所示,一种基于多形态复合的海量数据快速查询方法,包括如下步骤:
S1:数据特性识别与预处理,即后台程序对需要处理的数据进行识别,判断数据的类型,对数据进行相应处理后存储于MYSQL数据库并同步至Elastic search搜索引擎;在后台程序的数据持久化存储层重写拦截器并设置查询拦截规则,在后台程序与MYSQL数据库、Elastic search搜索引擎之间设计一个查询中间件并对查询中间件进行配置;
S2:数据查询处理,即拦截器对查询语句进行拦截并封装,查询中间件解析查询语句和参数,根据查询特征的不同,分别向MYSQL数据库或Elastic search搜索引擎发起请求,进行数据查询;
S3:查询数据后处理,即查询中间件对查询结果进行格式化和数据集封装,进一步解析查询结果,将最终结果返回呈现给用户前端。
上述实现中,数据查询主要是考虑数据量和结构差异。对不同的数据结构进行特性识别,采用最高效率的算法设计,对于简单线性的数据通常采用最基本的SQL+普通索引查询,而对复合数据受到其自身设计的限制,结构化数据库在千万级数据上进行查询时可能会存在性能问题,因此引入Elastic Search(简写为ES)搜索引擎来弥补在某些查询条件下结构化数据库的性能缺陷,并且设计一个查询中间件来分析和转发SQL语句的查询。
将MySQL中存储的数据完全同步到Elastic Search中,当用户前端有查询请求到达时,后台程序通过数据持久化存储框架构建SQL查询。当SQL查询构建好后,不直接向数据库发起查询,而是将查询发送到查询中间件,由中间件对查询进行分析。对于简单的查询则直接向MySQL数据库发起查询,对于较为复杂的查询(如同时包含左右模糊的查询)则向Elastic Search发起查询请求,最后将得到的查询结果格式化处理后返回给后台程序。
由于Elastic Search采取的非结构化的数据存储,所以针对结构化MySQL数据库的数据同步要根据Elastic Search引擎的特点进行设计,以便能更好的发挥其快速搜索的优势。其次,整个方案另一个核心步骤在于如何对前端的查询请求进行分析,为其选择最优的查询方式。虽然Elastic Search搜索引擎查询速度相当迅速,但其开销巨大,对于查询结果只有1、2条的简单查询请求来说使用Elastic Search存在资源的浪费。所以不能单纯地将所有查询请求都发给Elastic Search来查询。
进一步地,步骤S1中所述数据特性识别与预处理的实施流程如下:
S1.1:通过自动EXCEL解析、数据源导入或/和系统业务自动产生的方式获得需要处理的数据;
S1.2:对待处理的数据进行整体及抽样扫描,根据数据总量和字段的复杂度判断数据的类型;
S1.3:如果数据类型为普通数据,则直接将普通数据存储于MYSQL数据库并同步至Elastic search搜索引擎;如果数据类型为复合数据,则将复合数据存储于MYSQL数据库并同步至Elastic search搜索引擎,同时在Elastic search搜索引擎中对复合数据进行预处理;
S1.4:对数据进行更新或删除操作时,后台程序的事务控制层判断数据在MYSQL数据库和Elastic search搜索引擎中同时更新或删除成功,才能提交本次数据更新或删除操作,否则进行回滚;
S1.5:根据数据及查询的复杂度,重写拦截器,设置查询拦截规则;
S1.6:在初始化后台程序时,对查询中间件进行整合配置,将查询中间件的服务器地址、端口及其它相关配置信息写入查询中间件配置文件中,同时,在查询中间件配置文件中也写入MYSQL数据库和Elastic Search搜索引擎的服务器地址、用户名、密码及其它相关配置信息,使得查询中间件可以访问到MYSQL数据库和Elastic Search搜索引擎。
上述步骤中,对待处理的数据进行整体及抽样扫描后输出到STREAM管道流中,将普通数据同步至Elastic search搜索引擎时,无需为其在Elastic search搜索引擎建立索引表。
由于Logstash数据同步工具只能进行全量同步和增量同步操作,无法进行更新和删除的同步,因此,采用步骤S1.4的方法实现数据的更新和删除。
进一步地,步骤S1.3中所述对复合数据进行预处理的实施流程如下:
S1.3.1:创建复合数据对象的索引表,在索引表所有字段末尾增加一个名称为es_index的字段,用于存储一条记录复合数据预处理后的数据;
S1.3.2:将es_index前所有字段的字段名和字段值进行逐一拼接起来,生成一条包含所述复合数据全部记录信息的文本,再将所述文本存储在es_index字段中;
S1.3.3:对索引表中可以模糊查询的特殊字段,对其字段值添加一些模糊查询不同形式的字段分词。
上述步骤中,当es_index字段存储了复合数据全部记录信息的文本后,当对复合数据进行简单的查询时,就可以在这个新的字段内进行。对字段进行拼接的具体方式如表1所示。
表1对字段进行拼接的示例表
上述步骤S1.3.3中对特殊字段,如手机号、银行卡号、邮箱等类型可以标识用户信息的字段,由于可以在上面做模糊查询,所以还要对这些字段做进一步的分词处理。如手机号码可以分出前三位、尾号等。经过处理后的最终数据格式如表2所示。
表2模糊查询字段进行分词处理的示例表
进一步地,步骤S2中所述数据查询处理的实施流程如下:
S2.1:后台程序接收到用户前端查询请求后,在数据持久化存储层构建SQL查询语句;
S2.2:拦截器对数据更新或删除的SQL语句不予拦截,直接放行进行相应的操作;拦截器按照拦截规则对SQL查询语句进行拦截,并以查询中间件所能接受的参数格式对拦截到的SQL查询语句和参数进行格式化封装,将封装好的查询请求发送给查询中间件;
S2.3:采用编译技术构造一张关键词表,将具有深度分页、模糊查询的关键字添加到所述关键词表中;
S2.4:查询中间件获取SQL查询语句和参数后,首先对SQL查询语句进行扫描解析,在关键词表查找是否包含关键词,然后对SQL查询参数进行扫描解析,判断该SQL查询的特征,最后根据扫描解析的结果和数据及查询的复杂度,构建一个SQL查询请求或ES查询请求;
S2.5:如果无法判断数据及查询的复杂度,则对MYSQL数据库或Elastic Search搜索引擎都发起查询请求,并记录两者的查询时间;如果两者的查询时间差异较大,只需记录一次查询时间并将查询时间最短的查询请求构建成相应的SQL查询请求或ES查询请求,否则需要记录若干次两者的查询时间,取若干次查询时间的平均值,将平均查询时间最短的查询请求构建成相应的SQL查询请求或ES查询请求;
S2.6:查询中间件根据构建好的SQL查询请求或ES查询请求,分别向MYSQL数据库或Elastic Search搜索引擎发起查询。
上述步骤中,常用的数据持久化存储层框架,如hibernate、Mybatis都提供了拦截器接口,可以在这些拦截方法中得到生成的SQL语句、对SQL语句进行修改。因此,考虑在持久化存储层重写生成拦截器,拦截下SQL查询语句,将其发送到查询中间件。
查询中间件对传来的SQL查询语句进行分析,判断语句的复杂程度,对于简单的、少量数据的查询直接对数据库发起查询请求,对于复杂的、大量数据的查询则向ES发起查询请求。对于一些无法判断复杂度和速度的查询,则向数据库和ES都发起查询。如果两者查询时间差距较大则下次查询时就直接调用查询时间最短的方法;若两者查询时间差距并不大,应该将两者多次(如20次,排除偶然因素的影响)调用的平均时间记录下来(如表3所示),之后调用平均查询时间最短的方法进行查询。
表3查询时间表
上述步骤S2.2中,对SQL查询语句和参数进行格式化封装可以选择构建成RESTful风格的请求。
上述步骤S2.3中,可根据编译技术的相关知识,构造出一张关键词表将“LIMIT”、“LIKE”、“MATCH”等这些可能产生深度分页、模糊查询的关键字加入进去。
查询中间件获取到SQL查询语句和参数后,对SQL语句进行扫描,查找其中是否包含关键词表中包含的关键词。之后再对SQL参数进行扫描,进一步判断该查询的特征,以应用的分页来说,当分页深度过深时,SQL查询可能会存在性能问题。如在MYSQL的查询中加上“LIMIT 200000,20”表示取查询结果从第20万条开始的20条记录,对于这种程度的分页就可能存在性能问题(延迟可能在秒级)。当在扫描SQL语句时扫描到“LIMIT”关键词后,又在查询参数中扫描到分页深度为200000,那么就考虑构建一个ES查询请求。
进一步地,步骤S3中所述查询数据后处理的实施流程如下:
S3.1:查询中间件从MYSQL数据库或Elastic Search搜索引擎获得查询数据;
S3.2:查询中间件采用JSON格式对查询数据进行格式化打包,将打包后的查询数据集封装成网络请求,返回给发出查询请求的后台程序;
S3.3:等待查询结果的拦截器获得查询数据集,取出查询数据并进行解析,转化成业务实体类型数据,返回给业务逻辑控制层;
S3.4:业务逻辑控制层进一步解析业务实体类型的查询数据,将最终查询结果数据返回给用户前端。
进一步地,所述后台程序包括业务逻辑控制层、数据持久化存储层、事务控制层,其中:所述业务逻辑控制层位于用户前端与数据持久化存储层之间,用于对用户具体的操作进行业务逻辑处理,将原始数据抽象出逻辑数据,形成一种业务规则;所述数据持久化存储层,用于将后台程序产生的数据及数据库相关的各种操作数据适时进行持久存储;事务控制层位于数据持久化存储层与MYSQL数据库或Elastic Search搜索引擎之间,用于对MYSQL数据库或Elastic Search搜索引擎的操作事务进行控制。
进一步地,所述查询中间件用于对用户前端的查询请求进行分析处理,为其选择最优的查询方式,再对查询结果数据进行解析,向用户前端返回最终的查询结果。
进一步地,所述MYSQL数据库与Elastic search搜索引擎进行数据同步的方式为采用Logstash同步工具实现结构化和非结构化数据存储的同步。
以上所述仅为本发明的较佳实施例而已,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,皆应属于本发明的保护范围。
Claims (7)
1.一种基于多形态复合的海量数据快速查询方法,其特征在于,包括如下步骤:
S1:数据特性识别与预处理,即后台程序对需要处理的数据进行识别,判断数据的类型,对数据进行相应处理后存储于MYSQL数据库并同步至Elastic search搜索引擎;在后台程序的数据持久化存储层重写拦截器并设置查询拦截规则,在后台程序与MYSQL数据库、Elastic search搜索引擎之间设计一个查询中间件并对查询中间件进行配置;
S2:数据查询处理,即拦截器对查询语句进行拦截并封装,查询中间件解析查询语句和参数,根据查询特征的不同,分别向MYSQL数据库或Elastic search搜索引擎发起请求,进行数据查询;
步骤S2中所述数据查询处理的实施流程如下:
S2.1:后台程序接收到用户前端查询请求后,在数据持久化存储层构建SQL查询语句;
S2.2:拦截器对数据更新或删除的SQL语句不予拦截,直接放行进行相应的操作;拦截器按照拦截规则对SQL查询语句进行拦截,并以查询中间件所能接受的参数格式对拦截到的SQL查询语句和参数进行格式化封装,将封装好的查询请求发送给查询中间件;
S2.3:构造一张关键词表,将具有深度分页、模糊查询的关键字添加到所述关键词表中;
S2.4:查询中间件获取SQL查询语句和参数后,首先对SQL查询语句进行扫描解析,在关键词表查找是否包含关键词,然后对SQL查询参数进行扫描解析,判断该SQL查询的特征,最后根据扫描解析的结果和数据及查询的复杂度,构建一个SQL查询请求或ES查询请求;
S2.5:如果无法判断数据及查询的复杂度,则对MYSQL数据库或Elastic Search搜索引擎都发起查询请求,并记录两者的查询时间;如果两者的查询时间差异大,只需记录一次查询时间并将查询时间最短的查询请求构建成相应的SQL查询请求或ES查询请求,否则需要记录若干次两者的查询时间,取若干次查询时间的平均值,将平均查询时间最短的查询请求构建成相应的SQL查询请求或ES查询请求;
S2.6:查询中间件根据构建好的SQL查询请求或ES查询请求,分别向MYSQL数据库或Elastic Search搜索引擎发起查询;
S3:查询数据后处理,即查询中间件对查询结果进行格式化和数据集封装,进一步解析查询结果,将最终结果返回呈现给用户前端。
2.如权利要求1所述的一种基于多形态复合的海量数据快速查询方法,其特征在于,步骤S1中所述数据特性识别与预处理的实施流程如下:
S1.1:通过自动EXCEL解析、数据源导入或/和系统业务自动产生的方式获得需要处理的数据;
S1.2:对待处理的数据进行整体及抽样扫描,根据数据总量和字段的复杂度判断数据的类型;
S1.3:如果数据类型为普通数据,则直接将普通数据存储于MYSQL数据库并同步至Elastic search搜索引擎;如果数据类型为复合数据,则将复合数据存储于MYSQL数据库并同步至Elastic search搜索引擎,同时在Elastic search搜索引擎中对复合数据进行预处理;
S1.4:对数据进行更新或删除操作时,后台程序的事务控制层判断数据在MYSQL数据库和Elastic search搜索引擎中同时更新或删除成功,才能提交本次数据更新或删除操作,否则进行回滚;
S1.5:根据数据及查询的复杂度,重写拦截器,设置查询拦截规则;
S1.6:在初始化后台程序时,对查询中间件进行整合配置,将查询中间件的服务器地址、端口及其它相关配置信息写入查询中间件配置文件中,同时,在查询中间件配置文件中也写入MYSQL数据库和Elastic Search搜索引擎的服务器地址、用户名、密码及其它相关配置信息,使得查询中间件可以访问到MYSQL数据库和Elastic Search搜索引擎。
3.如权利要求2所述的一种基于多形态复合的海量数据快速查询方法,其特征在于,步骤S1.3中所述对复合数据进行预处理的实施流程如下:
S1.3.1:在搜索引擎中创建复合数据对象的索引表,在索引表所有字段末尾增加一个名称为es_index的字段,用于存储一条记录复合数据预处理后的数据;
S1.3.2:将es_index前所有字段的字段名和字段值进行逐一拼接起来,生成一条包含所述复合数据全部记录信息的文本,再将所述文本存储在es_index字段中;
S1.3.3:对索引表中可以模糊查询的字段,对其字段值添加一些模糊查询不同形式的字段分词。
4.如权利要求1所述的一种基于多形态复合的海量数据快速查询方法,其特征在于,步骤S3中所述查询数据后处理的实施流程如下:
S3.1:查询中间件从MYSQL数据库或Elastic Search搜索引擎获得查询数据;
S3.2:查询中间件采用JSON格式对查询数据进行格式化打包,将打包后的查询数据集封装成网络请求,返回给发出查询请求的后台程序;
S3.3:等待查询结果的拦截器获得查询数据集,取出查询数据并进行解析,转化成业务实体类型数据,返回给业务逻辑控制层;
S3.4:业务逻辑控制层进一步解析业务实体类型的查询数据,将最终查询结果数据返回给用户前端。
5.如权利要求1至4中任一项所述的一种基于多形态复合的海量数据快速查询方法,其特征在于,所述后台程序包括业务逻辑控制层、数据持久化存储层、事务控制层,其中:所述业务逻辑控制层位于用户前端与数据持久化存储层之间,用于对用户具体的操作进行业务逻辑处理,将原始数据抽象出逻辑数据,形成一种业务规则;所述数据持久化存储层,用于将后台程序产生的数据及数据库相关的各种操作数据适时进行持久存储;事务控制层位于数据持久化存储层与MYSQL数据库或Elastic Search搜索引擎之间,用于对MYSQL数据库或Elastic Search搜索引擎的操作事务进行控制。
6.如权利要求1至4中任一项所述的一种基于多形态复合的海量数据快速查询方法,其特征在于,所述查询中间件用于对用户前端的查询请求进行分析处理,为其选择最优的查询方式,再对查询结果数据进行解析,向用户前端返回最终的查询结果。
7.如权利要求1或2所述的一种基于多形态复合的海量数据快速查询方法,其特征在于,所述MYSQL数据库与Elastic search搜索引擎进行数据同步的方式为采用Logstash同步工具实现结构化和非结构化数据存储的同步。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910710467.8A CN110489445B (zh) | 2019-08-02 | 2019-08-02 | 一种基于多形态复合的海量数据快速查询方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910710467.8A CN110489445B (zh) | 2019-08-02 | 2019-08-02 | 一种基于多形态复合的海量数据快速查询方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110489445A CN110489445A (zh) | 2019-11-22 |
CN110489445B true CN110489445B (zh) | 2023-03-21 |
Family
ID=68549308
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910710467.8A Active CN110489445B (zh) | 2019-08-02 | 2019-08-02 | 一种基于多形态复合的海量数据快速查询方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110489445B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111221853A (zh) * | 2019-12-18 | 2020-06-02 | 平安健康保险股份有限公司 | 药品清单异常检测方法、装置、计算机设备和存储介质 |
CN111143460A (zh) * | 2019-12-30 | 2020-05-12 | 智慧神州(北京)科技有限公司 | 基于大数据的经济领域的数据的检索方法、装置与处理器 |
CN111552688A (zh) * | 2020-03-18 | 2020-08-18 | 北京达佳互联信息技术有限公司 | 数据导出方法、装置及电子设备 |
CN111488378B (zh) * | 2020-04-10 | 2023-05-12 | 杭州小影创新科技股份有限公司 | 一种基于Rewriter的MySQL数据库的查询优化方法 |
CN111831755B (zh) * | 2020-07-23 | 2024-01-16 | 北京思特奇信息技术股份有限公司 | 一种跨数据库数据同步方法、系统、介质及设备 |
CN111708749B (zh) * | 2020-07-24 | 2021-01-12 | 深圳市富之富信息科技有限公司 | 操作日志记录方法、装置、计算机设备及存储介质 |
CN111914155A (zh) * | 2020-08-06 | 2020-11-10 | 南京力通达电气技术有限公司 | 一种基于关键词匹配的查询转换系统及其方法 |
CN112182015B (zh) * | 2020-09-28 | 2023-07-21 | 贵州云腾志远科技发展有限公司 | 一种自适应的全局数据快速检索方法 |
CN112487097A (zh) * | 2020-12-11 | 2021-03-12 | 杭州安恒信息技术股份有限公司 | 一种分布式领域数据同步的方法、系统及设备 |
CN112650481A (zh) * | 2020-12-23 | 2021-04-13 | 航天信息股份有限公司 | 一种用于对数据进行处理的方法及系统 |
CN113204588A (zh) * | 2021-05-18 | 2021-08-03 | 绿漫科技有限公司 | 一种基于ElasticSearch快速搭建搜索平台的方法 |
CN114116716A (zh) * | 2021-11-19 | 2022-03-01 | 天翼数字生活科技有限公司 | 一种层次数据检索方法、装置和设备 |
CN113806438A (zh) * | 2021-11-19 | 2021-12-17 | 北京亿赛通网络安全技术有限公司 | 一种基于海量bcp数据文件的入库及预处理方法和系统 |
CN114826944A (zh) * | 2022-04-20 | 2022-07-29 | 中科嘉速(北京)信息技术有限公司 | 一种基于ELK和canal技术的网站运营分析系统及方法 |
CN115062028B (zh) * | 2022-07-27 | 2023-01-06 | 中建电子商务有限责任公司 | 一种OLTP领域多表join查询的方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101706810A (zh) * | 2009-11-23 | 2010-05-12 | 北京中创信测科技股份有限公司 | 一种数据库查询方法及装置 |
WO2018095351A1 (zh) * | 2016-11-28 | 2018-05-31 | 中兴通讯股份有限公司 | 搜索处理方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106844545A (zh) * | 2016-12-30 | 2017-06-13 | 江苏瑞中数据股份有限公司 | 一种基于标准sql的双引擎数据库系统的实现方法 |
CN108399233A (zh) * | 2018-02-24 | 2018-08-14 | 山东汇贸电子口岸有限公司 | 一种基于算法的分布式数据库的查询优化方法 |
CN110019247A (zh) * | 2018-08-16 | 2019-07-16 | 比亚迪股份有限公司 | 数据存储以及查询方法、装置和监控系统 |
CN109213756B (zh) * | 2018-10-22 | 2021-05-28 | 北京锐安科技有限公司 | 数据存储、检索方法、装置、服务器和存储介质 |
-
2019
- 2019-08-02 CN CN201910710467.8A patent/CN110489445B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101706810A (zh) * | 2009-11-23 | 2010-05-12 | 北京中创信测科技股份有限公司 | 一种数据库查询方法及装置 |
WO2018095351A1 (zh) * | 2016-11-28 | 2018-05-31 | 中兴通讯股份有限公司 | 搜索处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110489445A (zh) | 2019-11-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110489445B (zh) | 一种基于多形态复合的海量数据快速查询方法 | |
US7822710B1 (en) | System and method for data collection | |
CN110019218B (zh) | 数据存储与查询方法及设备 | |
EP2874077B1 (en) | Stateless database cache | |
CN110674154B (zh) | 一种基于Spark的对Hive中数据进行插入、更新和删除的方法 | |
CN107644073A (zh) | 一种基于深度优先遍历的字段血缘分析方法、系统及装置 | |
US8661022B2 (en) | Database management method and system | |
CN102426609A (zh) | 一种基于MapReduce编程架构的索引生成方法和装置 | |
CN112269816B (zh) | 一种政务预约事项相关性检索方法 | |
CN111026727A (zh) | 基于日志文件的表维度检索数据同步方法、系统及装置 | |
CN109947796B (zh) | 一种分布式数据库系统查询中间结果集的缓存方法 | |
CN103678694A (zh) | 视频资源的倒排索引文件建立方法及其系统 | |
CN111008020B (zh) | 将逻辑表达式解析为通用查询语句的方法 | |
CN106547828B (zh) | 一种基于神经网络的数据库缓存系统及方法 | |
CN107943952A (zh) | 一种基于Spark框架进行全文检索的实现方法 | |
CN112015741A (zh) | 一种海量数据的分库分表存储方法与装置 | |
CN113297250A (zh) | 一种分布式数据库多表关联查询的方法及系统 | |
CN111177148A (zh) | 一种水电数据库自动建表分表的方法 | |
CN114356971A (zh) | 数据处理方法、装置以及系统 | |
CN108536728A (zh) | 一种数据查询方法和装置 | |
CN109271437A (zh) | 一种海量房租信息的实时查询方法 | |
KR20160071746A (ko) | 규칙 기반 로그 데이터 그룹화를 이용한 개인 맞춤형 로그 분석 시스템 및 그 방법 | |
CN117093599A (zh) | 面向异构数据源的统一sql查询方法 | |
CN117421302A (zh) | 一种数据处理方法及相关设备 | |
CN110008448B (zh) | 将SQL代码自动转换为Java代码的方法和装置 |
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 |