掌桥专利:专业的专利平台
掌桥专利
首页

数据处理方法及装置、计算机设备和存储介质

文献发布时间:2023-06-19 11:22:42


数据处理方法及装置、计算机设备和存储介质

技术领域

本公开涉及数据处理技术领域,尤其涉及一种数据处理方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。

背景技术

随着互联网技术的发展以及移动设备、传感设备等的不断普及,各行各业产生了大量数据。在一些情况中,用户希望对已有的数据进行分析处理,以从中提取出自己需要的信息。当待处理的数据量较大或数据存储位置多样时,数据处理耗时较长,难以令用户满意。

在此部分中描述的方法不一定是之前已经设想到或采用的方法。除非另有指明,否则不应假定此部分中描述的任何方法仅因其包括在此部分中就被认为是现有技术。类似地,除非另有指明,否则此部分中提及的问题不应认为在任何现有技术中已被公认。

发明内容

提供一种缓解、减轻或甚至消除上述问题中的一个或多个的机制将是有利的。

根据本公开的一方面,提供了一种数据处理方法,包括:接收数据处理请求,数据处理请求包括输入数据的源存储位置、对应于至少一个数据处理操作的至少一个算子、以及输出数据的目标存储位置;根据上述源存储位置、目标存储位置和至少一个算子来确定数据处理请求的执行引擎;以及将数据处理请求提交至执行引擎,以便执行引擎对输入数据执行上述至少一个数据处理操作以得到输出数据,并将输出数据存储至目标存储位置。

根据本公开的另一方面,提供了一种数据处理装置,包括:接收模块,被配置为接收数据处理请求,数据处理请求包括输入数据的源存储位置、对应于至少一个数据处理操作的至少一个算子、以及输出数据的目标存储位置;引擎选择模块,被配置为根据源存储位置、目标存储位置和上述至少一个算子来确定数据处理请求的执行引擎;以及执行模块,被配置为将数据处理请求提交至执行引擎,以便执行引擎对输入数据执行上述至少一个数据处理操作以得到输出数据,并将输出数据存储至目标存储位置。

根据本公开的另一方面,提供了一种计算机设备,包括:存储器、处理器以及存储在该存储器上的计算机程序。该处理器被配置为执行该计算机程序以实现上述数据处理方法的步骤。

根据本公开的另一方面,提供了一种非暂态计算机可读存储介质,其上存储有计算机程序。该计算机程序被处理器执行时实现上述数据处理方法的步骤。

根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序。该计算机程序被处理器执行时实现上述数据处理方法的步骤。

根据本公开的实施例,服务器接收客户端设备发来的数据处理请求,根据数据处理请求的源存储位置、算子和目标存储位置来确定执行引擎,实现了执行引擎的自适应选择。所选择的执行引擎与数据处理请求的内容相适应,能够对数据处理请求进行快速处理,提高了数据处理的效率。对于数据量较大或者源存储位置、目标存储位置多样等情况,也能达到快速处理效果,减少用户的等待时间,提高用户体验。

根据在下文中所描述的实施例,本公开的这些和其它方面将是清楚明白的,并且将参考在下文中所描述的实施例而被阐明。

附图说明

在下面结合附图对于示例性实施例的描述中,本公开的更多细节、特征和优点被公开,在附图中:

图1是图示出根据示例性实施例的可以在其中实施本文描述的各种方法的示例系统的示意图;

图2是图示出根据示例性实施例的数据处理方法的流程图;

图3是图示出根据示例性实施例的在客户端设备处的示例性交互组件配置界面的示意图;

图4是图示出根据示例性实施例的确定执行引擎的流程图;

图5是图示出根据另一示例性实施例的数据处理方法的流程图;

图6是图示出根据示例性实施例的数据处理装置的示意性框图;

图7是图示出能够应用于示例性实施例的示例性计算机设备的框图。

具体实施方式

在本公开中,除非另有说明,否则使用术语“第一”、“第二”等来描述各种要素不意图限定这些要素的位置关系、时序关系或重要性关系,这种术语只是用于将一个元件与另一元件区分开。在一些示例中,第一要素和第二要素可以指向该要素的同一实例,而在某些情况下,基于上下文的描述,它们也可以指代不同实例。

在本公开中对各种所述示例的描述中所使用的术语只是为了描述特定示例的目的,而并非旨在进行限制。除非上下文另外明确地表明,如果不特意限定要素的数量,则该要素可以是一个也可以是多个。如本文使用的,术语“多个”意指两个或更多,并且术语“基于”应解释为“至少部分地基于”。此外,术语“和/或”以及“……中的至少一个”涵盖所列出的项目中的任何一个以及全部可能的组合方式。

在介绍本公开的示例性实施例之前,首先对本文中使用的若干术语进行解释。

1、数据库

数据库(Database)是一种长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。根据数据组织方式的不同,数据库可以被划分为关系型数据库和非关系型数据库两类。

关系型数据库(Relational Database)由一个或多个数据表组成,表与表之间可以有复杂的关联关系。通常遵循结构化查询语言(Structured Query Language,简称SQL)标准。

非关系型数据库(NoSQL Database)的数据之间没有关联关系,是一种易扩展、高性能的数据组织方式。非关系型数据库进一步可以划分为键值(Key-Value)存储数据库、列存储数据库、文档型数据库、图形(Graph)数据库等类型。

2、数据库管理系统

数据库管理系统(Database Management System,简称DBMS)是一种用于操纵和管理数据库的软件。根据所管理的数据库类型的不同,数据库管理系统被划分为关系型数据库管理系统和非关系型数据库管理系统两类。

关系型数据库管理系统(Relational Database Management System,简称RDBMS)用于操纵和管理关系型数据库。常用的关系型数据库管理系统包括MySQL、TiDB、Oracle、DB2、Hive等。(需要说明的是,尽管Hive是一种数据仓库工具,不属于传统意义上的RDBMS,但是其也可以提供关系型数据的存储以及SQL查询功能。因此在本公开的实施例中,可以将Hive理解为一种广义上的RDBMS)

非关系型数据库管理系统用于操纵和管理非关系型数据库。常用的非关系型数据库管理系统包括Redis、HBase、MongoDB、InfoGrid等。

下面结合附图详细描述本公开的示例性实施例。

图1是图示出根据示例性实施例的可以在其中实施本文描述的各种方法的示例系统100的示意图。参考图1,该系统100包括客户端设备110、服务器120以及将客户端设备110与服务器120通信地耦合的网络150。

客户端设备110包括显示器和可经由显示器显示的客户端应用(APP)112。客户端应用112可以为运行前需要下载和安装的应用程序,或者作为运行于浏览器中的网页版程序(webapp),又或者作为轻量化应用程序的小程序(liteapp)。在客户端应用112为运行前需要下载和安装的应用程序的情况下,客户端应用112可以被预先安装在客户端设备110上并被激活。在客户端应用112为运行于浏览器中的网页版程序的情况下,用户102可以通过在浏览器中访问特定的站点来直接运行客户端应用112,而无需安装客户端应用112。在客户端应用112为小程序的情况下,用户102可以通过在宿主应用中搜索客户端应用112(例如,通过客户端应用112的名称等)或扫描客户端应用112的图形码(例如,条形码、二维码等)等方式,在客户端设备110上直接运行客户端应用112,而无需安装客户端应用112。在一些实施例中,客户端设备110可以是任何类型的移动计算机设备,包括移动计算机、移动电话、可穿戴式计算机设备(例如智能手表、头戴式设备,包括智能眼镜,等)或其他类型的移动设备。在一些实施例中,客户端设备110可以替换地是固定式计算机设备,例如台式机、服务器计算机或其他类型的固定式计算机设备。

在一些实施例中,客户端设备110还包括一个或多个数据库管理系统114。用户通过在数据库管理系统114中进行操作,可以在客户端设备110本地创建一个或多个数据库116-1、116-1、…、116-N,并对这些数据库中的数据进行访问、修改、删除、分析处理等。在一些实施例中,用户也可以通过在数据库管理系统114中进行操作在远离客户端设备110的位置(例如存储设备130中)创建一个或多个数据库,并对这些远程数据库中的数据进行访问、修改、删除、分析处理等。数据库管理系统114可以是任意关系型数据库管理系统(RDBMS),也可以是任意非关系型数据库管理系统。

服务器120典型地为由互联网服务提供商(ISP)或互联网内容提供商(ICP)部署的服务器。服务器120可以代表单台服务器、多台服务器的集群、分布式系统、或者提供基础云服务(诸如云数据库、云计算、云存储、云通信)的云服务器。将理解的是,虽然图1中示出服务器120与仅一个客户端设备110通信,但是服务器120可以同时为多个客户端设备110提供后台服务。服务端程序122是服务器120中部署的用于为客户端设备110提供服务的应用程序。

在一些实施例中,服务器120还包括一个或多个数据库管理系统124。数据库管理系统124用于对服务器120本地的数据库126-1、126-1、…、126-N进行管理,或者对远程的数据库(例如存储设备130中的数据库)进行管理。数据库126-1~126-N中例如可以存储有供服务器120中部署的服务端程序122以及其他应用使用的数据。在一些实施例中,数据库126-1、126-1、…、126-N中的一个或多个可以是图数据库。

服务器120还包括内存计算引擎128。内存计算引擎128为用于进行数据处理的应用程序。具体地,内存计算引擎128将所有待处理的数据加载至内存中,从而便于向处理器(CPU)提供更快的数据访问,加快数据处理速度。

网络150的示例包括局域网(LAN)、广域网(WAN)、个域网(PAN)、和/或诸如互联网之类的通信网络的组合。网络130可以是有线或无线网络。在一些实施例中,使用包括超文本标记语言(HTML)、可扩展标记语言(XML)等的技术和/或格式来处理通过网络130交换的数据。此外,还可以使用诸如安全套接字层(SSL)、传输层安全(TLS)、虚拟专用网络(VPN)、网际协议安全(IPsec)等加密技术来加密所有或者一些链路。在一些实施例中,还可以使用定制和/或专用数据通信技术来取代或者补充上述数据通信技术。

如图1所示,系统100还可以包括一个或多个存储设备130,即130-1~130-N。存储设备130可以用于存储数据和其他信息。例如,存储设备130中的一个或多个可用于存储诸如文本、图像、视频、音频等信息。存储设备130可以驻留在各种位置。例如,存储设备130可以与客户端设备110或服务器120部署在同一位置,或者可以远离客户端设备110和服务器120且可以经由基于网络或专用的连接与客户端设备110和/或服务器120通信。多个存储设备130可以组成分布式存储系统。存储设备130中可以安装有不同的数据库管理系统,用户可以通过客户端设备110中安装的同类型的数据库管理系统来存储、更新以及查询相应存储设备130中的数据。

如图1所示,系统100还可以包括一个或多个分布式计算设备140,即140-1~140-N。当存在多个分布式计算设备140时,多个分布式计算设备140可以驻留在不同的位置。分布式计算设备140包括分布式计算引擎142,分布式计算引擎142是一种用于实现集群分布式计算的软件,其例如可以是Spark计算引擎、Impala计算引擎、Flink计算引擎等,但不限于此。基于分布式计算引擎142,多个分布式计算设备140可以组成分布式计算系统,提交至该分布式计算系统中的计算任务被分解成多个部分,各个分布式计算设备140并行地执行该计算任务的一部分,从而节约整体计算时间,提高计算效率。

为了本公开实施例的目的,在图1所示的实施例中,客户端应用112可以为数据处理应用程序,该应用程序可以提供数据分析处理功能。例如,用户可以通过客户端应用112构建数据分析模型,并运行该模型以对本地数据库116-1~116-N中存储的数据,或者对远程存储设备130-1~130-N中存储的数据进行分析处理。与此相应,服务器120可以是与数据处理应用程序一起使用的服务器。该服务器120通过服务端程序122向客户端设备110中运行的客户端应用112提供数据处理服务。具体地,服务器120接收客户端设备110发来的数据处理请求,确定该数据处理请求的执行引擎,将数据处理请求发送至执行引擎进行处理。通过为数据处理请求选择合适的执行引擎,可以加快数据处理速度,提高数据处理效率。在一些实施例中,执行引擎例如可以是位于客户端设备110或存储设备130中的关系型数据库管理系统、位于服务器120本地的内存计算引擎128、或者位于分布式计算设备140中的分布式计算引擎142。

图2是图示出根据示例性实施例的数据处理方法200的流程图。方法200可以在服务器(例如,图1中所示的服务器120)处执行,也即,方法200的各个步骤的执行主体可以是图1中所示的服务器120。

如图2所示,方法200包括步骤210至230。在步骤210,接收数据处理请求,数据处理请求包括输入数据的源存储位置、对应于至少一个数据处理操作的至少一个算子、以及输出数据的目标存储位置。随后,在步骤220,根据源存储位置、目标存储位置和上述至少一个算子来确定数据处理请求的执行引擎。随后,在步骤230,将数据处理请求提交至执行引擎,以便执行引擎对输入数据执行上述至少一个数据处理操作以得到输出数据,并将输出数据存储至目标存储位置。

根据本公开的实施例,服务器接收客户端设备发来的数据处理请求,根据数据处理请求的源存储位置、算子和目标存储位置来确定执行引擎,实现了执行引擎的自适应选择。所选择的执行引擎与数据处理请求的内容相适应,能够对数据处理请求进行快速处理,提高了数据处理的效率。对于数据量较大或者源存储位置、目标存储位置多样等情况,也能达到快速处理效果,减少用户的等待时间,提高用户体验。

此外,根据数据处理请求的源存储位置、算子和目标存储位置来选择合适的执行引擎,不同的数据处理请求可以由不同的执行引擎处理,实现了数据处理请求的分流,降低了服务器端的数据存储和计算压力。

下文详细描述方法200的各个步骤。

参考图2,在步骤210,接收数据处理请求,数据处理请求包括输入数据的源存储位置、对应于至少一个数据处理操作的至少一个算子、以及输出数据的目标存储位置。

数据处理请求由客户端设备(例如图1中的客户端设备110)发送。具体地,由客户端设备中的客户端应用发送(例如图1客户端设备110中的客户端应用112)。相应地,在步骤210中,服务器接收客户端设备发来的数据处理请求。

输入数据的源存储位置指的是输入数据在数据库中的存储位置。例如,源存储位置可以是一个或一些数据库,或者是数据库中的一个或一些数据表。进一步地,源存储位置所在的数据库可以位于客户端设备本地(例如位于图1客户端设备110处的数据库116中),也可以位于其他计算机设备中(例如位于图1的存储设备130中)。

类似地,输出数据的目标存储位置指的是输出数据在数据库中的存储位置。例如,目标存储位置可以是一个或一些数据库,或者是数据库中的一个或一些数据表。进一步地,这些数据表可以是已存在的数据表,或者是针对当前数据处理请求新建的数据表。

算子(operator)是用于标识数据处理操作类型的标识符。通常地,一个算子对应于一种数据处理操作。例如,连接算子(JOIN)对应于对多个数据表取交集的操作,分组算子(Group by)对应于根据一个或多个字段对数据进行分组的操作,过滤算子(Filter)对应于数据筛选操作(从已有数据中筛选出符合或不符合给定条件的数据),并集算子(Union)对应于合并数据查询结果的操作,图数据库查询算子(Graph Query)对应于图数据库查询操作,等等。图数据库例如可以是服务器的本地数据库,用于实现关系节点的快速查询。应当理解,算子的数量和类型可以由本领域技术人员根据实际需要来配置,本公开不限制数据处理请求所包括的算子的数量和类型。

根据一些实施例,数据处理请求可以是响应于用户对交互组件的配置而生成的。交互组件例如包括用于配置输入数据的源存储位置的数据源组件、用于配置上述至少一个算子的算子组件以及用于配置输出数据的目标存储位置的输出组件。

图3示出了在客户端设备处的客户端应用中显示的示例性交互组件配置界面300的示意图。如图3所示,界面300包括交互组件选择区310、编辑区320和工具区330。

交互组件选择区310用于呈现可选用的交互组件。例如,图3中示出了用于配置输入数据的源存储位置的数据源组件311、用于配置输出数据的目标存储位置的输出组件312以及多个算子组件313~317。算子组件313~317分别用于配置连接算子、图数据库查询算子、过滤算子、并集算子和分组算子。

编辑区320用于编辑数据处理模型。用户例如可以通过点击、拖动等交互操作来将交互组件选择区310中的交互组件拖动至编辑区,对编辑区320内的交互组件进行组合和配置,构建数据处理模型,数据处理模型用于执行数据处理任务。

例如,在图3中,用户当前已构建了一个名称为“新发放贷款利率情况”的数据处理模型340,该数据处理模型包括:数据源组件341、342、345、347,这四个数据源组件指示的输入数据的源存储位置分别为“重点企业名单”数据表(存储有企业名称、组织机构代码等信息)、“对公活期存款分户账”数据表(存储有企业名称、组织机构代码、活期存款账户等信息)、“对公信贷借据”数据表(存储有企业活期存款账户、对公信贷借据号、合同编号等信息)和“对公信贷明细”数据表(存储有对公信贷借据号、贷款金额、用途、利率等信息);连接算子组件343、346、348,过滤算子组件344;和输出组件349,该输出组件指示输出数据的目标存储位置为“重点企业利率情况”数据表。

该模型所执行的数据处理任务是:将“重点企业名单”数据表(341)与“对公活期存款分户账”数据表(342)通过“组织机构代码”字段进行连接(343),得到中间表1;过滤(344)掉中间表1中“活期存款账户”字段为空的企业,得到中间表2;将中间表2与“对公信贷借据”数据表(345)通过“活期存款账户”字段连接(346),得到中间表3;将中间表3与“对公信贷明细”数据表(347)通过“对公信贷借据号”字段连接(348),得到中间表4;将中间表4中的“企业名称”字段和“利率”字段的数据作为输出数据,存储至“重点企业利率情况”数据表(349)。

工具区330包括多个组件331~337,用于对编辑区320中构建的数据处理模型进行操作。例如,名称编辑组件331用于编辑数据处理模型的名称,运行组件332用于运行模型,保存组件333用于保存模型,参数组件334用于设置模型的参数,验证组件335用于对模型进行验证,运行记录组件336用于查看模型的运行记录,退出组件337用于退出当前界面。

例如,用户在编辑区320构建了数据处理模型。当用户点击运行组件332时,即触发客户端设备向服务器发送数据处理请求,请求执行该数据处理模型中配置的数据处理任务。相应地,服务器接收该数据处理请求,并在后续步骤220中确定用于处理该数据处理请求的执行引擎。

如上文所述,数据处理请求包括输入数据的源存储位置、对应于至少一个数据处理操作的至少一个算子、以及输出数据的目标存储位置。根据一些实施例,在步骤210接收数据处理请求之前,方法200还包括步骤:接收预验证请求,预验证请求包括输入数据的源存储位置、输入数据的一部分和所述至少一个算子;以及对输入数据的所述一部分执行所述至少一个算子对应的所述至少一个数据处理操作以得到预输出数据;并且,步骤210中的数据处理请求是基于用户对所述预输出数据的确认而接收到的。

根据上述实施例,用户可以在客户端设备处构建数据处理模型,并在向服务器发送数据处理请求以请求运行该模型之前,向服务器发送预验证请求,以便验证数据处理模型的正确性。服务器采样输入数据的一部分(采样比例例如可以由用户自行设置),并对该部分数据执行模型中的算子所定义的所有数据处理操作,得到预输出数据,将预输出数据返回给客户端设备并呈现给用户,以便用户根据该预输出数据来判断数据处理模型能否正确运行。若用户确认预输出数据正确,则向服务器发送数据处理请求,请求完整地执行该数据处理模型,即对全部输入数据执行模型中的算子所定义的所有数据操作。若用户确认预输出数据错误,则可以对数据处理模型进行修改,并基于修改后的模型再次向服务器发送预验证请求,来验证模型的正确性。模型的修改和验证的过程可以循环执行多次,直至用户确认预输出数据正确,并发送数据处理请求。

例如,仍参考图3,用户在编辑区320构建数据模型340后,可以先点击保存组件333来保存该模型。随后,点击验证组件335,客户端设备向服务器发送预验证请求,请求对输入数据的一部分执行各算子所定义的数据处理操作,以验证模型的正确性。服务器接收到预验证请求后,对用户选定的部分输入数据执行各算子所定义的数据处理操作,得到预输出数据,并在界面300上将预输出数据呈现给用户。若用户确认预输出数据正确,则可以点击运行组件332,触发客户端设备向服务器发送数据处理请求,请求完整地执行该数据处理模型。相应地,服务器执行步骤210,接收客户端设备发来的数据处理请求。

继续参考图2,当步骤210接收到数据处理请求后,继续执行步骤220。

在步骤220,根据源存储位置、目标存储位置和上述至少一个算子来确定数据处理请求的执行引擎。

步骤220旨在从多个候选执行引擎中选择出能够快速处理当前数据处理请求的执行引擎。通常地,在处理该数据处理请求的过程中,需要进行网络传输的数据量越少、存储于内存中的数据量越大,数据处理速度越快。候选执行引擎例如包括输入数据和输出数据所在的关系型数据库管理系统、服务器本地的内存计算引擎、以及分布式计算引擎等。

根据一些实施例,步骤220包括:响应于确定源存储位置和目标存储位置属于同一个关系型数据库管理系统,且上述至少一个数据处理操作为关系型数据库查询操作,将该关系型数据库管理系统作为执行引擎。

源存储位置和目标存储位置属于同一个关系型数据库管理系统,指的是源存储位置和目标存储位置位于同一个计算机设备中且所属的数据库类型相同,即受同一种关系型数据库管理系统管理。安装于不同计算机设备中的两个关系型数据库管理系统不是同一个关系型数据库管理系统。

例如,源存储位置为计算机设备A处的数据库db中的表table1,目标存储位置为计算机设备A处的数据库db中的表table2,数据库db为MySQL类型的数据库,受关系型数据库管理系统MySQL的管理,源存储位置和目标存储位置属于同一个关系型数据库管理系统。

又例如,源存储位置为计算机设备A处的数据库db1中的表table1,目标存储位置为计算机设备A处的数据库db2中的表table2,数据库db1、db2均为MySQL类型的数据库,受关系型数据库管理系统MySQL的管理,源存储位置和目标存储位置属于同一个关系型数据库管理系统。

又例如,源存储位置为计算机设备A处的数据库db1中的表table1,目标存储位置为计算机设备B处的数据库db2中的表table2,数据库db1、db2均为MySQL类型的数据库,受关系型数据库管理系统MySQL的管理。由于源存储位置和目标存储位置位于不同的计算机设备,因此不属于同一个关系型数据库管理系统。

又例如,源存储位置为计算机设备A处的数据库db1中的表table1,目标存储位置为计算机设备A处的数据库db2中的表table2,数据库db1为MySQL类型的数据库,受关系型数据库管理系统MySQL的管理,数据库db2为TiDB类型的数据库(或者为Oracle、Redis等其他不同于MySQL类型的数据库),受关系型数据库管理系统TiDB的管理(或者受Oracle、Redis等管理)。由于源存储位置和目标存储位置的数据库类型不同,因此不属于同一个关系型数据库管理系统。

又例如,源存储位置为计算机设备A处的数据库db1中的表table1,目标存储位置为计算机设备A处的数据库db2中的表table2,数据库db1、db2均为MongoDB类型的数据库,受关系型数据库管理系统MongoDB的管理,源存储位置和目标存储位置虽属于同一个数据库管理系统MongoDB,但MongoDB不是关系型数据库管理系统,因此源存储位置和目标存储位置不属于同一个关系型数据库管理系统。

数据处理操作为关系型数据库查询操作,指的是数据处理操作遵循结构化查询语言(SQL)标准,能够转化为可被关系型数据库管理系统执行的查询语句(即SQL语句)。

根据上述实施例,当输入数据的源存储位置和输出数据的目标存储位置属于同一个关系型数据库管理系统,且数据处理操作均为关系型数据库查询操作时,将该关系型数据库管理系统作为执行引擎。由输入数据、输出数据所在的关系型数据库管理系统直接进行数据处理,避免了数据的网络传输,提高了数据处理的速度和执行效率。

根据一些实施例,步骤220进一步包括:响应于确定以下情况中的任一,确定执行数据处理请求过程中的最大数据量,根据最大数据量来确定执行引擎:源存储位置和目标存储位置不属于同一个关系型数据库管理系统;或者源存储位置和目标存储位置属于同一个关系型数据库管理系统,且上述至少一个数据处理操作之一不是关系型数据库查询操作。

根据上述实施例,若源存储位置和目标存储位置不属于同一个关系型数据库管理系统,或者虽属于同一个关系型数据库管理系统,但数据处理操作不全是关系型数据库查询操作(即数据处理操作不能完全转化为SQL语句,例如,数据处理操作包括图数据库查询操作、特殊函数等),则不能由关系型数据库管理系统来执行数据处理,需要根据执行数据处理请求过程中产生的最大数据量来确定执行引擎。

根据一些实施例,最大数据量是根据输入数据的数据量和上述至少一个算子对应的至少一个数据处理操作预测得出的。例如,可以根据输入数据的数据量和各算子对应的数据处理操作,预测出执行每一个算子对应的数据处理操作后所得到的数据量和输出数据的数据量。输入数据的数据量、执行每个算子对应的数据处理操作后得到的数据量、输出数据的数据量中的最大值即为执行数据处理请求过程中产生的最大数据量。数据量例如可以是数据所占的存储空间(单位为Bytes),或者是数据包括的行数。

例如,输入数据为2020全年的某项指标值,其数据量为48GB,算子所对应的数据处理操作为从输入数据中筛选出2020年8月份的数据,通过分析输入数据的特征(即提取数据指纹),得出2020年8月份的数据量为9GB,即预测输出数据的数据量为9GB。相应地,执行数据处理请求过程中产生的最大数据量为输入数据的数据量,即48GB。

又例如,输入数据为两个数据表(表1、表2)中的多年的某项指标值,表1、表2分别包括100万行数据。算子对应的数据处理操作为将表1、表2通过时间字段连接。在预测最大数据量时,可以分别取表1、表2中数据量最大的10个月的数据,表1中数据量最大的10个月共有1千行数据,表2中数据量最大的10个月共有1万行数据,二者的笛卡尔乘积为1千万行(1千行*1万行)数据。将笛卡尔乘积得到的数据量作为预测的最大数据量(笛卡尔乘积是最坏的预测结果,在实际连接操作中,两数据表连接得到的数据量通常小于二者的笛卡尔乘积)。

根据一些实施例,响应于确定最大数据量小于等于预设的数据量阈值,将本地内存计算引擎作为执行引擎。

响应于确定最大数据量大于预设的数据量阈值,将分布式计算引擎作为执行引擎。

数据量阈值例如可以是根据本地内存容量来确定的,即根据服务器的内存容量来确定。数据量阈值可以是数据所占用的存储空间的阈值,或者是数据行数的阈值。当数据量阈值为数据所占用的存储空间的阈值时,可以将数据量阈值设置为与服务器的本地内存容量相同;当数据量阈值为数据行数的阈值时,可以将数据量阈值设置为本地内存容量与每行数据量的商。例如,服务器的内存容量为64G,相应地,可以设置数据量阈值为64G,或者设置数据量阈值为64G/2K≈3355万行(2K为每行数据量)。

根据上述实施例,当预测执行数据处理请求过程中产生的数据量较小(小于等于数据量阈值)时,将全部数据存放于服务器的内存中并完成计算,减少磁盘IO,提高数据处理效率。当预测执行数据处理请求过程中产生的数据量较大(大于数据量阈值)时,采用分布式计算引擎来执行数据处理任务,通过并行计算来加快数据处理速度,提高数据处理效率。

图4示出了根据示例性实施例的确定执行引擎的过程400的流程图。如图4所示,在步骤410中,获取数据处理请求中的源存储位置、目标存储位置和所有算子。

在步骤420中,判断源存储位置和目标存储位置是否属于同一个关系型数据库管理系统。若是,则执行步骤430,进一步判断算子对应的数据处理操作是否均为关系型数据库查询操作(即是否可转化为SQL语句);若否,则执行步骤450,估计数据处理过程中的最大数据量。

在步骤430中,判断算子对应的数据处理操作是否均为关系型数据库查询操作。若是,则执行步骤440,将输入数据和输出数据所在的关系型数据库管理系统作为执行引擎;若否,则执行步骤450。

在步骤450中,估计数据处理过程中的最大数据量。随后,执行步骤460。

在步骤460中,判断最大数据量是否小于等于数据量阈值。若是,则执行步骤470,将本地内存计算引擎作为执行引擎;若否,则执行步骤480,将分布式计算引擎作为执行引擎。

根据上述实施例,根据数据处理请求的源存储位置、算子和目标存储位置来确定执行引擎,实现了执行引擎的自适应选择。所选择的执行引擎与数据处理请求的内容相适应,能够对数据处理请求进行快速处理,提高了数据处理的效率。对于数据量较大或者源存储位置、目标存储位置多样等情况,也能达到快速处理效果,减少用户的等待时间,提高用户体验。

继续参考图2,在步骤220确定执行引擎后,执行步骤230。

在步骤230,将数据处理请求提交至执行引擎,以便执行引擎对输入数据执行上述至少一个数据处理操作以得到输出数据,并将输出数据存储至目标存储位置。

根据一些实施例,若执行引擎为输入数据和输出数据所属的关系型数据库管理系统,则确定数据处理请求所对应的查询语句(SQL语句),将查询语句发送至执行引擎,以便执行引擎执行该查询语句从而执行该数据处理操作。

例如,针对图3实施例的数据处理请求,对应的查询语句可以是:

根据一些实施例,若执行引擎为本地内存计算引擎(例如为图1服务器120本地的内存计算引擎128),则将数据处理请求提交至该内存计算引擎。若执行引擎为分布式计算引擎(例如图1分布式计算设备140中的分布式计算引擎142),则通过网络将数据处理请求提交至该分布式计算引擎。

根据本公开的实施例,服务器接收客户端设备发来的数据处理请求,根据数据处理请求的源存储位置、算子和目标存储位置来确定执行引擎,实现了执行引擎的自适应选择。所选择的执行引擎与数据处理请求的内容相适应,能够对数据处理请求进行快速处理,提高了数据处理的效率。对于数据量较大或者源存储位置、目标存储位置多样等情况,也能达到快速处理效果,减少用户的等待时间,提高用户体验。

此外,根据数据处理请求的源存储位置、算子和目标存储位置来选择合适的执行引擎,不同的数据处理请求可以由不同的执行引擎处理,实现了数据处理请求的分流,降低了服务器端的数据存储和计算压力。

图5示出了根据另一示例性实施例的数据处理方法500的流程图。如图5所示,在步骤502中,用户在客户端设备110处创建数据处理模型。

随后,在步骤504中,保存数据处理模型。

在步骤506中,向服务器120发送预验证请求,来验证模型的正确性。

在步骤508中,服务器120返回响应于预验证请求而计算得出的预输出数据。

在步骤510中,用户判断预输出数据不正确,因此修改模型。修改模型后,返回执行步骤504~510,对修改后的模型进行保存和验证。步骤504~510可能循环执行多次,直至用户确认预输出数据正确为止。当用户确认预输出数据正确后,执行步骤512。

在步骤512中,客户端设备110向服务器120发送数据处理请求,数据处理请求包括输入数据的源存储位置、对应于数据处理操作的算子和输出数据的目标存储位置。

在步骤514中,服务器120根据源存储位置、算子和目标存储位置确定数据处理请求的执行引擎。执行引擎可能有三种情况:

在情况A中,服务器120确定执行引擎为输入数据和输出数据所在的关系型数据库管理系统(RDBMS)。这种情况下,服务器120执行步骤516A,将数据处理请求转化为SQL语句,并执行步骤518A,将SQL语句发送至RDBMS所在的计算机设备,即输入数据和输出数据所在的计算机设备。该计算机设备例如可以是图1中的存储设备130(如图5中的实线所示),也可以是客户端设备110本身(如图5中虚线所示)。在步骤520A,由存储设备130或客户端设备110中的RDBMS来执行数据处理,得到输出数据。在步骤522A,将输出数据存储至目标存储位置。

在情况B中,服务器120确定执行引擎为本地内存计算引擎。这种情况下,服务器120执行步骤516B,由本地内存计算引擎来执行数据处理,得到输出数据;并在步骤518B中,将输出数据存储至目标存储位置。

在情况C中,服务器120确定执行引擎为分布式计算引擎。这种情况下,服务器120执行步骤516C,将数据处理请求发送至分布式计算设备140,以便分布式计算设备140中的分布式计算引擎来执行数据处理。在步骤518C中,分布式计算设备140中的分布式计算引擎执行数据处理,得到输出数据;在步骤520C中,将输出数据存储至目标存储位置。

根据本公开的实施例,服务器接收客户端设备发来的数据处理请求,根据数据处理请求的源存储位置、算子和目标存储位置来确定执行引擎,实现了执行引擎的自适应选择。所选择的执行引擎与数据处理请求的内容相适应,能够对数据处理请求进行快速处理,提高了数据处理的效率。对于数据量较大或者源存储位置、目标存储位置多样等情况,也能达到快速处理效果,减少用户的等待时间,提高用户体验。

此外,根据数据处理请求的源存储位置、算子和目标存储位置来选择合适的执行引擎,不同的数据处理请求可以由不同的执行引擎处理,实现了数据处理请求的分流,降低了服务器端的数据存储和计算压力。

图6示出了根据示例性实施例的数据处理装置600的示意性框图。如图6所示,装置600包括接收模块610、引擎选择模块620和执行模块630。

接收模块610被配置为接收数据处理请求,数据处理请求包括输入数据的源存储位置、对应于至少一个数据处理操作的至少一个算子、以及输出数据的目标存储位置。

引擎选择模块620被配置为根据源存储位置、目标存储位置和上述至少一个算子来确定数据处理请求的执行引擎。

执行模块630被配置为将数据处理请求提交至执行引擎,以便执行引擎对输入数据执行上述至少一个数据处理操作以得到输出数据,并将输出数据存储至目标存储位置。。

根据本公开的实施例,通过根据数据处理请求的源存储位置、算子和目标存储位置来确定执行引擎,实现了执行引擎的自适应选择。所选择的执行引擎与数据处理请求的内容相适应,能够对数据处理请求进行快速处理,提高了数据处理的效率。对于数据量较大或者源存储位置、目标存储位置多样等情况,也能达到快速处理效果,减少用户的等待时间,提高用户体验。

此外,根据数据处理请求的源存储位置、算子和目标存储位置来选择合适的执行引擎,不同的数据处理请求可以由不同的执行引擎处理,实现了数据处理请求的分流,降低了服务器端的数据存储和计算压力。

应当理解,图6中所示装置600的各个模块可以与参考图2描述的方法200中的各个步骤相对应。由此,上面针对方法200描述的操作、特征和优点同样适用于装置600及其包括的模块。为了简洁起见,某些操作、特征和优点在此不再赘述。

虽然上面参考特定模块讨论了特定功能,但是应当注意,本文讨论的各个模块的功能可以分为多个模块,和/或多个模块的至少一些功能可以组合成单个模块。本文讨论的特定模块执行动作包括该特定模块本身执行该动作,或者替换地该特定模块调用或以其他方式访问执行该动作(或结合该特定模块一起执行该动作)的另一个组件或模块。因此,执行动作的特定模块可以包括执行动作的该特定模块本身和/或该特定模块调用或以其他方式访问的、执行动作的另一模块。例如,上面描述的接收模块610和执行模块630在一些实施例中可以组合成单个模块。又例如,引擎选择模块620在一些实施例中可以包括执行模块630。如本文使用的,短语“实体A发起动作B”可以是指实体A发出执行动作B的指令,但实体A本身并不一定执行该动作B。例如,“引擎选择模块620被配置为根据源存储位置、目标存储位置和上述至少一个算子来确定数据处理请求的执行引擎”可以是指引擎选择模块620指示处理器来根据源存储位置、目标存储位置和上述至少一个算子来确定数据处理请求的执行引擎,而引擎选择模块620本身不需要执行“确定数据处理请求的执行引擎”的动作。

还应当理解,本文可以在软件硬件元件或程序模块的一般上下文中描述各种技术。上面关于图6描述的各个模块可以在硬件中或在结合软件和/或固件的硬件中实现。例如,这些模块可以被实现为计算机程序代码/指令,该计算机程序代码/指令被配置为在一个或多个处理器中执行并存储在计算机可读存储介质中。可替换地,这些模块可以被实现为硬件逻辑/电路。例如,在一些实施例中,接收模块610、引擎选择模块620、执行模块630中的一个或多个可以一起被实现在片上系统(System on Chip,SoC)中。SoC可以包括集成电路芯片(其包括处理器(例如,中央处理单元(Central Processing Unit,CPU)、微控制器、微处理器、数字信号处理器(Digital Signal Processor,DSP)等)、存储器、一个或多个通信接口、和/或其他电路中的一个或多个部件),并且可以可选地执行所接收的程序代码和/或包括嵌入式固件以执行功能。

根据本公开的一方面,提供了一种计算机设备,其包括存储器、处理器以及存储在存储器上的计算机程序。该处理器被配置为执行计算机程序以实现上文描述的任一方法实施例的步骤。

根据本公开的一方面,提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上文描述的任一方法实施例的步骤。

根据本公开的一方面,提供了一种计算机程序产品,其包括计算机程序,该计算机程序被处理器执行时实现上文描述的任一方法实施例的步骤。

在下文中,结合图7描述这样的计算机设备、非暂态计算机可读存储介质和计算机程序产品的说明性示例。

图7示出了可以被用来实施本文所描述的方法的计算机设备700的示例配置。举例来说,图1中所示的客户端设备110和/或服务器120可以包括类似于计算机设备700的架构。上述数据处理装置600也可以全部或至少部分地由计算机设备700或类似设备或系统实现。

计算机设备700可以是各种不同类型的设备,例如服务提供商的服务器、与客户端(例如,客户端设备)相关联的设备、片上系统、和/或任何其它合适的计算机设备或计算系统。计算机设备700的示例包括但不限于:台式计算机、服务器计算机、笔记本电脑或上网本计算机、移动设备(例如,平板电脑、蜂窝或其他无线电话(例如,智能电话)、记事本计算机、移动台)、可穿戴设备(例如,眼镜、手表)、娱乐设备(例如,娱乐器具、通信地耦合到显示设备的机顶盒、游戏机)、电视或其他显示设备、汽车计算机等等。因此,计算机设备700的范围可以从具有大量存储器和处理器资源的全资源设备(例如,个人计算机、游戏控制台)到具有有限的存储器和/或处理资源的低资源设备(例如,传统的机顶盒、手持游戏控制台)。

计算机设备700可以包括能够诸如通过系统总线714或其他适当的连接彼此通信的至少一个处理器702、存储器704、(多个)通信接口706、显示设备708、其他输入/输出(I/O)设备710以及一个或更多大容量存储设备712。

处理器702可以是单个处理单元或多个处理单元,所有处理单元可以包括单个或多个计算单元或者多个核心。处理器702可以被实施成一个或更多微处理器、微型计算机、微控制器、数字信号处理器、中央处理单元、状态机、逻辑电路和/或基于操作指令来操纵信号的任何设备。除了其他能力之外,处理器702可以被配置成获取并且执行存储在存储器704、大容量存储设备712或者其他计算机可读介质中的计算机可读指令,诸如操作系统716的程序代码、应用程序718的程序代码、其他程序720的程序代码等。

存储器704和大容量存储设备712是用于存储指令的计算机可读存储介质的示例,所述指令由处理器702执行来实施前面所描述的各种功能。举例来说,存储器704一般可以包括易失性存储器和非易失性存储器二者(例如RAM、ROM等等)。此外,大容量存储设备712一般可以包括硬盘驱动器、固态驱动器、可移除介质、包括外部和可移除驱动器、存储器卡、闪存、软盘、光盘(例如CD、DVD)、存储阵列、网络附属存储、存储区域网等等。存储器704和大容量存储设备712在本文中都可以被统称为存储器或计算机可读存储介质,并且可以是能够把计算机可读、处理器可执行程序指令存储为计算机程序代码的非暂态介质,所述计算机程序代码可以由处理器702作为被配置成实施在本文的示例中所描述的操作和功能的特定机器来执行。

多个程序模块可以存储在大容量存储设备712上。这些程序包括操作系统716、一个或多个应用程序718、其他程序720和程序数据722,并且它们可以被加载到存储器704以供执行。这样的应用程序或程序模块的示例可以包括例如用于实现以下部件/功能的计算机程序逻辑(例如,计算机程序代码或指令):客户端应用112(包括接收模块610、引擎选择模块620和执行模块630)、方法200(包括方法200的任何合适的步骤)、和/或本文描述的另外的实施例。

虽然在图7中被图示成存储在计算机设备700的存储器704中,但是模块716、718、720和722或者其部分可以使用可由计算机设备700访问的任何形式的计算机可读介质来实施。如本文所使用的,“计算机可读介质”至少包括两种类型的计算机可读介质,也就是计算机存储介质和通信介质。

计算机存储介质包括通过用于存储信息的任何方法或技术实施的易失性和非易失性、可移除和不可移除介质,所述信息诸如是计算机可读指令、数据结构、程序模块或者其他数据。计算机存储介质包括而不限于RAM、ROM、EEPROM、闪存或其他存储器技术,CD-ROM、数字通用盘(DVD)、或其他光学存储装置,磁盒、磁带、磁盘存储装置或其他磁性存储设备,或者可以被用来存储信息以供计算机设备访问的任何其他非传送介质。

与此相对,通信介质可以在诸如载波或其他传送机制之类的已调数据信号中具体实现计算机可读指令、数据结构、程序模块或其他数据。本文所定义的计算机存储介质不包括通信介质。

计算机设备700还可以包括一个或更多通信接口706,以用于诸如通过网络、直接连接等等与其他设备交换数据,正如前面所讨论的那样。这样的通信接口可以是以下各项中的一个或多个:任何类型的网络接口(例如,网络接口卡(NIC))、有线或无线(诸如IEEE802.11无线LAN(WLAN))无线接口、全球微波接入互操作(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、Bluetooth

在一些示例中,可以包括诸如监视器之类的显示设备708,以用于向用户显示信息和图像。其他I/O设备710可以是接收来自用户的各种输入并且向用户提供各种输出的设备,并且可以包括触摸输入设备、手势输入设备、摄影机、键盘、遥控器、鼠标、打印机、音频输入/输出设备等等。

虽然在附图和前面的描述中已经详细地说明和描述了本公开,但是这样的说明和描述应当被认为是说明性的和示意性的,而非限制性的;本公开不限于所公开的实施例。通过研究附图、公开内容和所附的权利要求书,本领域技术人员在实践所要求保护的主题时,能够理解和实现对于所公开的实施例的变型。在权利要求书中,词语“包括”不排除未列出的其他元件或步骤,并且词语“一”或“一个”不排除多个。在相互不同的从属权利要求中记载了某些措施的仅有事实并不表明这些措施的组合不能用来获益。

相关技术
  • 数据处理方法、装置、计算机设备和计算机可读存储介质
  • 数据处理方法、装置、计算机可读存储介质和计算机设备
技术分类

06120112901147