CN113568892A - 一种基于内存计算对数据源进行数据查询的方法和设备 - Google Patents
一种基于内存计算对数据源进行数据查询的方法和设备 Download PDFInfo
- Publication number
- CN113568892A CN113568892A CN202110924867.6A CN202110924867A CN113568892A CN 113568892 A CN113568892 A CN 113568892A CN 202110924867 A CN202110924867 A CN 202110924867A CN 113568892 A CN113568892 A CN 113568892A
- Authority
- CN
- China
- Prior art keywords
- data
- data source
- query
- memory
- connector
- 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
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/21—Design, administration or maintenance of databases
- G06F16/214—Database migration support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- 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
-
- 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
-
- 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/2471—Distributed 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/25—Integrating or interfacing systems involving database management systems
- G06F16/254—Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
-
- 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
-
- 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
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)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Fuzzy Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于内存计算对数据源进行数据查询的方法和设备,应用于包括多个并行连接的内存数据库的分布式***中,当存在至少一个数据源接入***且接收到数据查询请求时,根据数据查询请求生成执行计划;若已连接数据源的连接器的数量为多个,基于多个所述连接器将执行计划分别下推至各数据源执行;基于各连接器从各数据源获取与所述执行计划对应的多个初步数据;根据多个初步数据获取与查询请求对应的结果数据,并将结果数据返回用户或应用;其中,连接器是用于连接***与各数据源的进程,连接器是根据数据源的类型创建的,从而在避免投入较高成本的基础上,提高了对不同数据源进行数据查询的效率和安全性。
Description
技术领域
本申请涉及数据库技术领域,更具体地,涉及一种基于内存计算对数据源进行数据查询的方法和设备。
背景技术
随着互联网、物联网的快速发展,各种智能终端设备的广泛应用,以及数据处理技术的创新日新月异,数据对当今社会进步、经济发展和企业业务数字化升级等所带来的价值越来越凸显,如精准营销、实时监测、实时预警、趋势预测等。然而,在人们享受数据价值的同时,也同时面临一个问题:数据以多种格式和存储方式出现,数据源越来越多、数据量越来越庞大、数据类型也更加繁杂,如有些数据源是文本文件,有些数据源是Key-Value数据库,有的数据源是关系型数据库,有的数据源是NoSQL及数据仓库,而有些数据源是一些智能终端设备实时产生的持续数据流。面对庞大的数据量以及各异的数据源,往往需要使用各数据源提供的连接客户端进行单独访问,无法使用一个连接对多个数据源进行同时访问,也无法在一次连接中将不同的数据源中的数据进行关联。因此,跨多种异构数据源的数据统一连接已经成为多数据源连接面临的一大关键问题。
由于存储结构及数据格式不同,如图1所示,现有技术中一般通过构建本地数据库***对不同数据源进行访问。构建本地数据源首先需要购买较多的服务器、存储等硬件设备,及操作***、数据库管理***、中间件等软件,在本地完成数据库库***的软硬件平台建设。本地数据库管理***建成后,通过ETL工具、数据迁移、数据同步复制或数据异步备份等方式,完成数据库格式统一转换后将不同数据源中的源数据统一存储或更新到在本地数据源中。在访问、处理或分析数据时,***再将本地数据库***中的数据加载至内存中进行处理和分析,并将处理分析结果反馈给用户,从而完成跨不同数据源的数据访问、处理和分析。在没有更好的方法之前,该方法及***解决多数据源数据共享、访问的难题,但该方法及***存在如下三大问题:
(1)建设成本较高
该方法需要构建本地数据库***,以满足不同数据源中源数据汇聚存储的要求,因此需要购买软、硬件设备,投入人力、财力和物力进行建设及后期运维,而且随着数据量的增长,投入成本也会持续增长。这对对成本较为敏感的用户来说,该方法的投入成本十分高昂,不符合企业的业务发展和能力要求。
(2)伴随数据量增长,延迟愈加明显
由于本地数据库***采用磁盘介质,以及数据使用时数据必须加载至内存后才能进行处理的处理机制,随着数据量的增长,该方法及***带来的延迟也会呈线性增长,如用户提交一个请求需要较长时间才能得到响应或结果反馈,企业或政府部门生成报表需要等待较长时间等,延迟往往达到小时级,最快也只能到分钟级。在大数据时代,这样的处理速度,显然不能满足用户对数据实时处理、查询和展示的时效性要求。
(3)数据安全存在风险
数据在由数据源迁移至本地数据库***的过程中可能会发生数据丢失或泄露,使得数据安全存在一定的风险。对用户核心业务数据,如客户信息、交易数据、核心业务数据等,该方法及***本身很难为数据安全提供可靠保障。
(4)本地数据无法真正与源数据保持同步更新
不论是数据迁移,还是数据同步复制或异步备份中的任何一种方式,不同数据源的数据更新至本地数据库***都会有一定的时间间隔,这意味着本地数据库***中的数据无法与数据源中的源数据保持同步更新。在一些实时性要求较高的应用场景中,如经济运行分析、股市分析等,数据无法同步更新会严重影响分析的结果,导致决策者无法掌控实时的动态信息,是的决策者在有误差数据的误导下做出错误判断,从而影响决策,给企业发展带来巨大损失、错失转瞬即逝的宝贵商业机会。
因此,如何在避免投入较高成本的基础上提高对不同数据源进行数据查询的效率和安全性,是目前亟待解决的技术问题。
发明内容
本发明提供一种基于内存计算对数据源进行数据查询的方法,用以解决现有技术中对不同数据源进行数据查询时成本高,效率低和安全性低的技术问题,该方法应用于包括多个并行连接的内存数据库的分布式***中,该方法包括:
当存在至少一个数据源接入所述***且接收到用户或应用发送的数据查询请求时,根据所述数据查询请求生成执行计划;
若已连接数据源的连接器的数量为多个,基于多个所述连接器将所述执行计划分别下推至各所述数据源执行;
基于各所述连接器从各所述数据源获取与所述执行计划对应的多个初步数据;
根据多个所述初步数据获取与所述查询请求对应的结果数据,并将所述结果数据返回所述用户或所述应用;
其中,所述连接器是用于连接所述***与各所述数据源的进程,所述连接器是根据所述数据源的类型创建的。
在本申请一些实施例中,所述方法还包括:
当检测到待接入数据源发送的接入请求时,确定所述待接入数据源的第一数量和与所述待接入数据源的类型对应的数据源连接池内的空闲连接器的第二数量;
若所述第一数量不大于所述第二数量,基于所述空闲连接器将所述待接入数据源接入所述***;
若所述第一数量大于所述第二数量,根据预设数量或用户输入的创建数量创建新的空闲连接器。
在本申请一些实施例中,根据所述数据查询请求生成执行计划,具体为:
对所述数据查询请求进行解析并生成初始查询计划;
根据元数据、查询代价和索引对所述初始查询计划进行优化并确定最优索引;
根据所述最优索引生成所述执行计划;
其中,所述元数据表征了各所述数据源中存储的数据内容,所述查询代价表征了查询的资源消耗和执行时长,所述索引是根据所述查询请求确定的,所述最优索引为各所述索引中查询代价最小并与各数据源中存储的数据匹配的索引。
在本申请一些实施例中,所述***包括多个分布式的内存计算节点,单个所述内存计算节点可运行一个或多个所述连接器。
在本申请一些实施例中,基于各所述连接器从各所述数据源获取与所述执行计划对应的多个初步数据,具体为:
基于各所述连接器从各所述数据源获取与所述执行计划对应的多个执行结果;
基于各所述连接器将分别将各所述执行结果按预设格式转换为各所述初步数据。
在本申请一些实施例中,根据多个所述初步数据获取与所述查询请求对应的结果数据,具体为:
将多个所述初步数据加载至内存,并在内存中对多个所述初步数据进行数据清洗后进行数据合并;
根据数据合并的结果获取所述结果数据。
在本申请一些实施例中,在内存中对多个所述初步数据进行数据清洗后进行数据合并,具体为:
获取进入所述内存的初步数据的数量;
若进入所述内存的初步数据的数量达到预设数量,将进入所述内存的初步数据进行数据清洗后进行数据合并,并依次与之后进入所述内存的初步数据进行数据清洗后进行数据合并;
其中,所述预设数量小于所述各所述初步数据的总数量。
在本申请一些实施例中,在根据所述数据查询请求生成执行计划之后,所述方法还包括:
若已连接数据源的连接器的数量为一个,基于所述连接器将所述执行计划下推至所述数据源执行;
基于所述连接器从所述数据源获取与所述查询请求对应的结果数据,并将所述结果数据返回所述用户或所述应用。
在本申请一些实施例中,基于所述连接器从所述数据源获取与所述查询请求对应的结果数据,具体为:
基于所述连接器从所述数据源获取与所述执行计划对应的执行结果;
基于所述连接器将所述执行结果按预设格式转换为初步数据;
将所述初步数据加载至内存,并对所述初步数据进行数据清洗后获取所述结果数据。
在本申请一些实施例中,所述预设格式为CSV格式。
相应的,本发明还提出了一种基于内存计算对数据源进行数据查询的设备,所述设备应用于包括多个并行连接的内存数据库的分布式***中,所述设备包括:
生成模块,用于当存在至少一个数据源接入所述***且接收到用户或应用发送的数据查询请求时,根据所述数据查询请求生成执行计划;
下推模块,用于若已连接数据源的连接器的数量为多个,基于多个所述连接器将所述执行计划分别下推至各所述数据源执行;
第一获取模块,用于基于各所述连接器从各所述数据源获取与所述执行计划对应的多个初步数据;
第二获取模块,用于根据多个所述初步数据获取与所述查询请求对应的结果数据,并将所述结果数据返回所述用户或所述应用;
其中,所述连接器是用于连接所述***与各所述数据源的进程,所述连接器是根据所述数据源的类型创建的。
相应的,本发明还提出了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备执行如上所述的基于内存计算对数据源进行数据查询的方法。
通过应用以上技术方案,在包括多个并行连接的内存数据库的分布式***中,当存在至少一个数据源接入所述***且接收到用户或应用发送的数据查询请求时,根据所述数据查询请求生成执行计划;若已连接数据源的连接器的数量为多个,基于多个所述连接器将所述执行计划分别下推至各所述数据源执行;基于各所述连接器从各所述数据源获取与所述执行计划对应的多个初步数据;根据多个所述初步数据获取与所述查询请求对应的结果数据,并将所述结果数据返回所述用户或所述应用;其中,所述连接器是用于连接所述***与各所述数据源的进程,所述连接器是根据所述数据源的类型创建的,通过在数据库***和数据源之间设置连接器,可以不需要将获取的数据存储在本地数据库,而是基于连接器从不同的数据源获取查询结果,从而在避免投入较高成本的基础上,提高了对不同数据源进行数据查询的效率和安全性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地 ,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了现有技术中基于本地数据库***对不同数据源进行访问的架构示意图;
图2示出了本发明实施例提出的一种基于内存计算对数据源进行数据查询的方法的流程示意图;
图3示出了本发明另一实施例提出的一种基于内存计算对数据源进行数据查询的方法的流程示意图;
图4示出了本发明实施例中单个计算节点运行一个连接器的体系架构图;
图5示出了本发明实施例中单个计算节点运行多个连接器的体系架构图;
图6示出了本发明实施例中对各数据源的查询结果进行合并的示意图;
图7示出了本发明实施例提出的一种基于内存计算对数据源进行数据查询的设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供一种基于内存计算对数据源进行数据查询的方法,所述方法应用于包括多个并行连接的内存数据库的分布式***中,如图2所示,所述方法包括以下步骤:
步骤S101,当存在至少一个数据源接入所述***且接收到用户或应用发送的数据查询请求时,根据所述数据查询请求生成执行计划。
本实施例中,该***预先完成接入至少一个数据源,数据源可包括但不限于文本文件,或Key-Value数据库,或关系型数据库,或NoSQL及数据仓库,或持续数据流。当接收到用户或应用发送的数据查询请求时,对与所述查询请求对应的SQL(Structured QueryLanguage,结构化查询语言)语句进行解析和优化后,生成执行计划,执行计划的形式可以为执行计划树,其中,可通过***中的解析器对SQL语句进行解析,通过优化器进行优化,具体的过程对于本领域技术人员是显而易见的,在此不再赘述。
为了提高查询效率,在本申请一些实施例中,根据所述数据查询请求生成执行计划,具体为:
对所述数据查询请求进行解析并生成初始查询计划;
根据元数据、查询代价和索引对所述初始查询计划进行优化并确定最优索引;
根据所述最优索引生成所述执行计划;
其中,所述元数据表征了各所述数据源中存储的数据内容,所述查询代价表征了查询的资源消耗和执行时长,所述索引是根据所述查询请求确定的,所述最优索引为各所述索引中查询代价最小并与各数据源中存储的数据匹配的索引。
本实施例中,根据元数据、查询代价和索引对所述初始查询计划进行优化,并将各索引中查询代价最小并与各数据源中存储的数据匹配的索引确定为最优索引,根据该最优索引生成所述执行计划,从而提高了查询效率。
步骤S102,若已连接数据源的连接器的数量为多个,基于多个所述连接器将所述执行计划分别下推至各所述数据源执行。
本实施例中,***与各数据源之间设置有连接器,通过连接器进行数据传输,该连接器是用于连接***与各数据源的进程,连接器是根据数据源的类型创建的,若已连接数据源的连接器的数量为多个,基于多个连接器将执行计划分别下推至各数据源执行。
为了可靠的对数据源进行数据查询,在本申请一些实施例中,所述方法还包括:
当检测到待接入数据源发送的接入请求时,确定所述待接入数据源的第一数量和与所述待接入数据源的类型对应的数据源连接池内的空闲连接器的第二数量;
若所述第一数量不大于所述第二数量,基于所述空闲连接器将所述待接入数据源接入所述***;
若所述第一数量大于所述第二数量,根据预设数量或用户输入的创建数量创建新的空闲连接器。
本实施例中,需要预先接入至少一个数据源,以便根据用户或应用发送的查询请求对数据源进行数据查询,所述***中设置有与数据源的类型对应的数据源连接池,数据连接池内预先创建有预设数量的空闲连接器,即同一数据连接池内的空闲连接器只能与对应类型的数据源进行连接,当检测到待接入数据源发送的接入请求时,确定待接入数据源的第一数量和与待接入数据源的类型对应的数据源连接池内的空闲连接器的第二数量,并对第一数量和第二数量进行比较,若第一数量不大于第二数量,说明数据源连接池内的空闲连接器足够接入全部的待接入数据源,基于各空闲连接器将各待接入数据源接入***,可依次接入,也可同时接入;若第一数量大于第二数量,说明数据源连接池内的空闲连接器无法接入全部的待接入数据源,需要创建与待接入数据源的类型对应的新的空闲连接器,可以基于预设的数量进行自动创建,用户也可以根据需要手动创建,即基于用户输入的创建数量进行创建,然后基于空闲的连接器接入待接入数据源。
为了提高对数据源进行数据查询时的灵活性,在本申请一些实施例中,所述***包括多个分布式的内存计算节点,单个所述内存计算节点可运行一个或多个所述连接器。
本实施例中,连接器运行在内存计算节点上,在本申请具体的应用场景中,单个所述内存计算节点可只运行一个连接器,如图4所示;单个所述内存计算节点也可运行多个连接器,如图5所示节点1与连接器1和连接器2连接,其中,图4和图5中的节点1-f即分布式的内存计算节点1-f。单个内存计算节点上运行连接器的数量可根据内存计算节点的计算资源确定,本领域技术人员可灵活设定。
步骤S103,基于各所述连接器从各所述数据源获取与所述执行计划对应的多个初步数据。
本实施例中,各数据源根据该执行计划进行数据查询,完成数据查询后,各连接从各数据源获取与执行计划对应的多个初步数据,该初步数据和与查询请求对应的结果数据是不同的,还需要进一步处理。
为了准确的获取该初步数据,在本申请一些实施例中,基于各所述连接器从各所述数据源获取与所述执行计划对应的多个初步数据,具体为:
基于各所述连接器从各所述数据源获取与所述执行计划对应的多个执行结果;
基于各所述连接器将分别将各所述执行结果按预设格式转换为各所述初步数据。
本实施例中,先基于各连接器从各数据源获取与执行计划对应的多个执行结果,为了提高处理效率,然后基于各连接器将分别将各执行结果按预设格式转换为各初步数据。
本领域技术人员可根据实际需要选用不同的预设格式,这并不影响本申请的保护范围,在本申请优选的实施例中,所述预设格式为CSV(Comma-Separated Values,字符分隔值)格式。
步骤S104,根据多个所述初步数据获取与所述查询请求对应的结果数据,并将所述结果数据返回所述用户或所述应用。
本步骤中,根据多个初步数据获取与所述查询请求对应的结果数据,并将结果数据返回用户或应用。然后可释放为所述查询请求分配的计算、存储、网络等资源,等待下一次的查询请求。用户可根据需求对结果数据进行删除或存储,存储可以存储在内存中,也可以存储在磁盘上。
为了准确的获取结果数据,在本申请一些实施例中,根据多个所述初步数据获取与所述查询请求对应的结果数据,具体为:
将多个所述初步数据加载至内存,并在内存中对多个所述初步数据进行数据清洗后进行数据合并;
根据数据合并的结果获取所述结果数据。
本实施中,先将多个所述初步数据加载至内存,并在内存中对多个初步数据进行数据清洗,数据清洗包括清除重复数据和异常数据,然后将完成数据清洗后的数据进行数据合并,根据数据合并的结果获取结果数据。
为了进一步提高数据查询效率,在本申请一些实施例中,在内存中对多个所述初步数据进行数据清洗后进行数据合并,具体为:
获取进入所述内存的初步数据的数量;
若进入所述内存的初步数据的数量达到预设数量,将进入所述内存的初步数据进行数据清洗后进行数据合并,并依次与之后进入所述内存的初步数据进行数据清洗后进行数据合并;
其中,所述预设数量小于所述各所述初步数据的总数量。
本实施例中,在部分初步数据进入内存时即进行数据清洗和数据合并,从而提高了数据合并的速度。优选的,所述预设数量为2。在本申请具体的应用场景中,如图6所述,图中的查询数据A-N即多个初步数据,当查询结果A和查询结果B进入内存时,将查询结果A和查询结果B合并得到结果数据AB,在查询结果M进入内存时,将结果数据AB和查询结果M进行合并得到结果数据ABM,以此类推。
为了可靠的对数据源进行数据查询,在本申请一些实施例中,在根据所述数据查询请求生成执行计划之后,所述方法还包括:
若已连接数据源的连接器的数量为一个,基于所述连接器将所述执行计划下推至所述数据源执行;
基于所述连接器从所述数据源获取与所述查询请求对应的结果数据,并将所述结果数据返回所述用户或所述应用。
本实施例中,若已连接数据源的连接器的数量为一个,可基于所述连接器直接将执行计划下推至用户或应用,然后基于连接器从数据源获取与所述查询请求对应的结果数据,并将结果数据返回用户或应用。
为了准确的获取结果数据,在本申请一些实施例中,基于所述连接器从所述数据源获取与所述查询请求对应的结果数据,具体为:
基于所述连接器从所述数据源获取与所述执行计划对应的执行结果;
基于所述连接器将所述执行结果按预设格式转换为初步数据;
将所述初步数据加载至内存,并对所述初步数据进行数据清洗后获取所述结果数据。
本实施例中,先基于连接器从数据源获取与执行计划对应的执行结果,为了提高处理效率,在基于连接器将执行结果按预设格式转换为初步数据,该初步数据和与查询请求对应的结果数据是不同的,还需要进一步处理,再将初步数据加载至内存,并在内存中对初步数据进行数据清洗后获取结果数据,数据清洗可包括清除重复数据和异常数据。在本申请优选的实施例中,所述预设格式为CSV格式。
通过应用以上技术方案,在包括多个并行连接的内存数据库的分布式***中,当存在至少一个数据源接入所述***且接收到用户或应用发送的数据查询请求时,根据所述数据查询请求生成执行计划;若已连接数据源的连接器的数量为多个,基于多个所述连接器将所述执行计划分别下推至各所述数据源执行;基于各所述连接器从各所述数据源获取与所述执行计划对应的多个初步数据;根据多个所述初步数据获取与所述查询请求对应的结果数据,并将所述结果数据返回所述用户或所述应用;其中,所述连接器是用于连接所述***与各所述数据源的进程,所述连接器是根据所述数据源的类型创建的,通过在数据库***和数据源之间设置连接器,可以不需要将获取的数据存储在本地数据库,而是基于连接器从不同的数据源获取查询结果,从而在避免投入较高成本的基础上,提高了对不同数据源进行数据查询的效率和安全性。
为了进一步阐述本发明的技术思想,现结合具体的应用场景,对本发明的技术方案进行说明。
本申请实施例提供一种基于内存计算对数据源进行数据查询的方法,应用于包括多个并行连接的内存数据库的分布式***中,该***中还存储着由多个内存数据库并行操作的至少一个内存数据库实例,如图3所示,该方法包括以下步骤:
步骤S201,接收用户/应用发送的查询请求。
在执行步骤S201之前,还包括以下步骤:
S1.***实时地接收至少一个数据源接入事件,即远程数据源接入该***的请求事件,并向内存数据库实例发送通知。
S2.内存数据库实例实时地接收数据源接入事件的通知。
S3.内存数据库实例在接收到数据源接入事件的通知后,会同步判断数据源的类型,并根据数据源的类型提供对应的连接器,将数据源接入所述***。多个数据源逐一完成此操作,即完成了多个数据源的跨源统一连接。所述连接器由***预先创建,同一类型的连接器存储在同一类型的数据源连接池内,同一类型数据源连接池内可以预先创建至少一个连接器,所创建的连接器的数量可以预设的默认值,默认值可以由用户根据需求设置。
当预先创建的连接器数量少于待接入的数据源个数时,会根据用户设置的默认值自动创建增加新的连接器,用户也可以根据实际需求手动创建,新增的数量同样由用户自定义。其中,连接器运行在所述***的分布式内存计算节点上,一个内存计算节点可以运行一个连接器,也可以运行多个连接器。
S4.所述***至少成功接入一个数据源后,所述***会实时接收用户或应用发送的查询请求。
步骤S202,对与查询请求对应的SQL语句进行解析、优化,并生成对应的执行计划。
本步骤中,将执行计划同步并发的传递至所述***中已经连接数据源的连接器,并判断当前已连接数据源的连接器的数量。
步骤S203,判断已连接数据源的连接器的数量是否为多个,若是执行步骤S204,否则执行步骤S206。
步骤S204,将执行计划通过连接各个数据源的连接器下推至各个数据源中并执行,根据条件查询源数据。
本步骤中,当已连接数据源的连接器的数量有多个时,每个连接器将接收到相同的执行计划,并分别下推至各个连接器连接的对应数据源中执行,在多个数据源中均根据执行计划同步查找并读取满足查询条件的源数据。其中,所述执行计划由所述***中多个内存计算节点下推至多个所述数据源的。
步骤S205,通过连接器将查询结果转换成统一的数据格式(如CSV),并完成合并后统一反馈给用户,并执行步骤S208。
本步骤中,获取源数据后,各个连接器再分别将从对应数据源中获取的源数据统一转换成CSV格式后,内存数据库实例再将这些CSV格式的初步数据统一加载至内存,在内存中进行数据清洗和数据合并,最后将合并的结果数据反馈给用户或应用。
步骤S206,直接将执行计划通过连接器下推至对应数据源中执行,根据条件查询源数据。
本步骤中,当已连接数据源的连接器的数量仅有一个时,连接器直接将接收到的执行计划下推至数据源中执行,根据执行计划查找并读取满足查询条件的源数据。
步骤S207,通过连接器将查询结果转换成统一的数据格式(如CSV),反馈给用户,并执行步骤S208。
本步骤中,连接器先将取出的数据转换成CSV格式后,内存数据库实例再将该CSV格式的初步数据统一加载至内存,在内存中进行数据清洗后获取结果数据,并将结果数据反馈给用户或应用。
步骤S208,查询结束,释放占用的内存、网络、计算等资源,等待新的查询请求,取出的结果数据,根据用户的需求进行删除或存储。
通过应用以上技术方案,仅通过连接器使用单一的SQL语句即可完成跨多个不同类型数据源的统一连接,不需要通过数据迁移、同步复制或异步备份的方式数据存储至本地数据库***才能进行处理。连接数据源后,当接收到查询请求时,可直接跨多个不同数据源将源数据通过SQL访问的方式加载至内存中获取结果数据。因此,在进行跨多个不同数据源进行查询时,无论数据量的大小或增长速度有多快,用户不需要投入较高的TCO(TotalCost of Ownership,即总拥有成本)建设本地数据库***。同时,获取的源数据不需要存储在本地数据库***,而是直接加载到内存中,减少现有同类实现方法中的中间环节,大大提升了数据的读取和处理效率,将现有同类技术存在的延迟由小时级、分钟级提升至秒级,甚至毫秒级,进而大幅提升数据库管理***处理数据的时效性,无限接近数据实时查询及处理的目标。
另外,由于直接从数据源中读取数据,去掉数据迁移、备份、落盘再加载等中间环节,避免了数据因迁移、备份、传输等带来的数据丢失或泄露等安全风险。更重要的是,每次获取的数据都是数据源中最新数据,即查询的数据能够与源数据保持同步更新,从而使用户请求所获得的数据处理结果能够完全体现实时更新的真实情况。
不仅如此,采用内存计算技术,可以快速搭建跨源异构数据统一连接、查询及数据处理的分布式集群,也可以直接利用用户原有的分布式集群资源,并应用于各行业的数据共享、数据即时展示等领域,实现计算节点的在线按需动态扩展,确保用户数据处理平台及数据库***的性能始终保持高性能,轻松地应对多源异构数据快速增长带来的负载和处理压力。
与本申请实施例中的一种基于内存计算对数据源进行数据查询的方法相对应,本申请实施例还提出了一种基于内存计算对数据源进行数据查询的设备,所述设备应用于包括多个并行连接的内存数据库的分布式***中,如图7所示,所述设备包括:
生成模块701,用于当存在至少一个数据源接入所述***且接收到用户或应用发送的数据查询请求时,根据所述数据查询请求生成执行计划;
下推模块702,用于若已连接数据源的连接器的数量为多个,基于多个所述连接器将所述执行计划分别下推至各所述数据源执行;
第一获取模块703,用于基于各所述连接器从各所述数据源获取与所述执行计划对应的多个初步数据;
第二获取模块704,用于根据多个所述初步数据获取与所述查询请求对应的结果数据,并将所述结果数据返回所述用户或所述应用;
其中,所述连接器是用于连接所述***与各所述数据源的进程,所述连接器是根据所述数据源的类型创建的。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (10)
1.一种基于内存计算对数据源进行数据查询的方法,其特征在于,所述方法应用于包括多个并行连接的内存数据库的分布式***中,所述方法包括:
当存在至少一个数据源接入所述***且接收到用户或应用发送的数据查询请求时,根据所述数据查询请求生成执行计划;
若已连接数据源的连接器的数量为多个,基于多个所述连接器将所述执行计划分别下推至各所述数据源执行;
基于各所述连接器从各所述数据源获取与所述执行计划对应的多个初步数据;
根据多个所述初步数据获取与所述查询请求对应的结果数据,并将所述结果数据返回所述用户或所述应用;
其中,所述连接器是用于连接所述***与各所述数据源的进程,所述连接器是根据所述数据源的类型创建的。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
当检测到待接入数据源发送的接入请求时,确定所述待接入数据源的第一数量和与所述待接入数据源的类型对应的数据源连接池内的空闲连接器的第二数量;
若所述第一数量不大于所述第二数量,基于所述空闲连接器将所述待接入数据源接入所述***;
若所述第一数量大于所述第二数量,根据预设数量或用户输入的创建数量创建新的空闲连接器。
3.如权利要求1所述的方法,其特征在于,根据所述数据查询请求生成执行计划,具体为:
对所述数据查询请求进行解析并生成初始查询计划;
根据元数据、查询代价和索引对所述初始查询计划进行优化并确定最优索引;
根据所述最优索引生成所述执行计划;
其中,所述元数据表征了各所述数据源中存储的数据内容,所述查询代价表征了查询的资源消耗和执行时长,所述索引是根据所述查询请求确定的,所述最优索引为各所述索引中查询代价最小并与各数据源中存储的数据匹配的索引。
4.如权利要求1所述的方法,其特征在于,基于各所述连接器从各所述数据源获取与所述执行计划对应的多个初步数据,具体为:
基于各所述连接器从各所述数据源获取与所述执行计划对应的多个执行结果;
基于各所述连接器将分别将各所述执行结果按预设格式转换为各所述初步数据。
5.如权利要求4所述的方法,其特征在于,根据多个所述初步数据获取与所述查询请求对应的结果数据,具体为:
将多个所述初步数据加载至内存,并在内存中对多个所述初步数据进行数据清洗后进行数据合并;
根据数据合并的结果获取所述结果数据。
6.如权利要求5所述的方法,其特征在于,在内存中对多个所述初步数据进行数据清洗后进行数据合并,具体为:
获取进入所述内存的初步数据的数量;
若进入所述内存的初步数据的数量达到预设数量,将进入所述内存的初步数据进行数据清洗后进行数据合并,并依次与之后进入所述内存的初步数据进行数据清洗后进行数据合并;
其中,所述预设数量小于所述各所述初步数据的总数量。
7.如权利要求1所述的方法,其特征在于,在根据所述数据查询请求生成执行计划之后,所述方法还包括:
若已连接数据源的连接器的数量为一个,基于所述连接器将所述执行计划下推至所述数据源执行;
基于所述连接器从所述数据源获取与所述查询请求对应的结果数据,并将所述结果数据返回所述用户或所述应用。
8.如权利要求7所述的方法,其特征在于,基于所述连接器从所述数据源获取与所述查询请求对应的结果数据,具体为:
基于所述连接器从所述数据源获取与所述执行计划对应的执行结果;
基于所述连接器将所述执行结果按预设格式转换为初步数据;
将所述初步数据加载至内存,并对所述初步数据进行数据清洗后获取所述结果数据。
9.一种基于内存计算对数据源进行数据查询的设备,其特征在于,所述设备应用于包括多个并行连接的内存数据库的分布式***中,所述设备包括:
生成模块,用于当存在至少一个数据源接入所述***且接收到用户或应用发送的数据查询请求时,根据所述数据查询请求生成执行计划;
下推模块,用于若已连接数据源的连接器的数量为多个,基于多个所述连接器将所述执行计划分别下推至各所述数据源执行;
第一获取模块,用于基于各所述连接器从各所述数据源获取与所述执行计划对应的多个初步数据;
第二获取模块,用于根据多个所述初步数据获取与所述查询请求对应的结果数据,并将所述结果数据返回所述用户或所述应用;
其中,所述连接器是用于连接所述***与各所述数据源的进程,所述连接器是根据所述数据源的类型创建的。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备执行如权利要求1-8任一项所述的基于内存计算对数据源进行数据查询的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110924867.6A CN113568892A (zh) | 2021-08-12 | 2021-08-12 | 一种基于内存计算对数据源进行数据查询的方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110924867.6A CN113568892A (zh) | 2021-08-12 | 2021-08-12 | 一种基于内存计算对数据源进行数据查询的方法和设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113568892A true CN113568892A (zh) | 2021-10-29 |
Family
ID=78171363
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110924867.6A Pending CN113568892A (zh) | 2021-08-12 | 2021-08-12 | 一种基于内存计算对数据源进行数据查询的方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113568892A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115309726A (zh) * | 2022-09-27 | 2022-11-08 | 北京奥星贝斯科技有限公司 | 数据库实例的访问方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103207908A (zh) * | 2013-03-29 | 2013-07-17 | 成都康赛电子科大信息技术有限责任公司 | 多数据源动态隔离访问方法 |
CN103365929A (zh) * | 2012-04-10 | 2013-10-23 | 阿里巴巴集团控股有限公司 | 一种数据库连接的管理方法及*** |
CN106934001A (zh) * | 2017-03-03 | 2017-07-07 | 广州天源迪科信息技术有限公司 | 分布式快速清单查询***及方法 |
CN111581234A (zh) * | 2020-05-09 | 2020-08-25 | 中国银行股份有限公司 | Rac多节点数据库查询方法、装置及*** |
CN111666279A (zh) * | 2020-04-14 | 2020-09-15 | 阿里巴巴集团控股有限公司 | 查询数据处理方法、装置、电子设备及计算机存储介质 |
-
2021
- 2021-08-12 CN CN202110924867.6A patent/CN113568892A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103365929A (zh) * | 2012-04-10 | 2013-10-23 | 阿里巴巴集团控股有限公司 | 一种数据库连接的管理方法及*** |
CN103207908A (zh) * | 2013-03-29 | 2013-07-17 | 成都康赛电子科大信息技术有限责任公司 | 多数据源动态隔离访问方法 |
CN106934001A (zh) * | 2017-03-03 | 2017-07-07 | 广州天源迪科信息技术有限公司 | 分布式快速清单查询***及方法 |
CN111666279A (zh) * | 2020-04-14 | 2020-09-15 | 阿里巴巴集团控股有限公司 | 查询数据处理方法、装置、电子设备及计算机存储介质 |
CN111581234A (zh) * | 2020-05-09 | 2020-08-25 | 中国银行股份有限公司 | Rac多节点数据库查询方法、装置及*** |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115309726A (zh) * | 2022-09-27 | 2022-11-08 | 北京奥星贝斯科技有限公司 | 数据库实例的访问方法及装置 |
CN115309726B (zh) * | 2022-09-27 | 2023-01-13 | 北京奥星贝斯科技有限公司 | 数据库实例的访问方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107506451B (zh) | 用于数据交互的异常信息监控方法及装置 | |
US8719271B2 (en) | Accelerating data profiling process | |
US8190599B2 (en) | Stream data processing method and system | |
CN103514223A (zh) | 一种数据仓库数据同步方法和*** | |
CN111339073A (zh) | 实时数据处理方法、装置、电子设备及可读存储介质 | |
WO2019109854A1 (zh) | 分布式数据库数据处理方法、装置、存储介质及电子装置 | |
US11249975B2 (en) | Data archiving method and system using hybrid storage of data | |
CN115374102A (zh) | 数据处理方法及*** | |
CN113407600B (zh) | 一种动态实时同步多源大表数据的增强实时计算方法 | |
US11182386B2 (en) | Offloading statistics collection | |
CN113760847A (zh) | 日志数据处理方法、装置、设备及存储介质 | |
CN115640300A (zh) | 一种大数据管理方法、***、电子设备和存储介质 | |
CN115757616A (zh) | 一种基于二进制日志的数据一致性校验方法、装置及介质 | |
CN113641739B (zh) | 一种基于Spark的智能数据转换方法 | |
CN115329011A (zh) | 数据模型的构建方法、数据查询的方法、装置及存储介质 | |
CN113568892A (zh) | 一种基于内存计算对数据源进行数据查询的方法和设备 | |
WO2023015809A1 (zh) | 一种分布式内存数据查询优化的方法和设备 | |
CN115510139A (zh) | 数据查询方法和装置 | |
CN115599871A (zh) | 基于湖仓一体的数据处理***和方法 | |
CN115391286A (zh) | 一种链路追踪数据管理方法、装置、设备及存储介质 | |
CN113485763A (zh) | 一种数据处理方法、装置、电子设备及计算机可读介质 | |
JP6626198B2 (ja) | 管理装置、実行環境設定方法、ストリームデータ処理システム | |
CN117390040B (zh) | 基于实时宽表的业务请求处理方法、设备及存储介质 | |
CN118377768A (zh) | 一种基于业务流的数据etl方法、装置、设备及介质 | |
CN116244384A (zh) | 数据同步方法、数据同步装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20211029 |
|
RJ01 | Rejection of invention patent application after publication |