数据处理方法、系统、电子设备及可读存储介质与流程

文档序号:32658222发布日期:2022-12-23 22:31阅读:21来源:国知局
1.本技术涉及计算机
技术领域
:,具体涉及一种数据处理方法、系统、电子设备及计算机可读存储介质。
背景技术
::2.随着计算机技术的飞速发展,庞大的数据量给数据的分析、处理带来了巨大挑战。目前,对大量数据主要存在批处理(也称批计算、离线计算)和流处理(也称流计算、实时计算)这两种处理需求,在相关技术中,数据处理链路的架构大多采用伪流批一体式架构,在该架构中,批计算任务和流计算任务需要分两条链路进行单独处理,如此,使得开发人员在开发数据相关需求时,需要分别维护批处理和流处理这两套代码,因此,降低了数据需求的开发效率。技术实现要素:3.本技术提供了一种数据处理方法、系统、电子设备及计算机可读存储介质,能够在开发数据相关需求时,使批处理和流处理仅通过一套代码即可维护,从而提高数据需求的开发效率。具体方式如下。4.第一方面,本技术提供了一种数据处理方法,应用于数据处理系统中的后端服务子系统,所述系统还包括离线数据子系统和实时数据子系统,所述后端服务子系统、所述离线数据子系统与所述实时数据子系统两两之间相互通信连接,所述后端服务子系统中配置有至少一个虚拟查询表,所述至少一个虚拟查询表与所述离线数据子系统及所述实时数据子系统中存储的数据存在映射关系,所述方法包括:5.接收针对所述虚拟查询表的数据查询指令,其中,所述数据查询指令至少携带有待查询数据的指定时间字段的字段值筛选区间;6.响应于所述数据查询指令,将所述字段值筛选区间拆分为预设时刻之前的第一时间子区间,以及所述预设时刻以后的第二时间子区间;7.从所述离线数据子系统中读取所述指定时间字段的字段值满足所述第一时间子区间的第一数据,以及从所述实时数据子系统中读取所述指定时间字段的字段值满足所述第二时间子区间的第二数据;8.根据所述第一数据和所述第二数据,输出数据查询结果。9.第二方面,本技术实施例还提供了一种数据处理系统,所述系统包括两两之间相互通信连接的后端服务子系统、离线数据子系统和实时数据子系统,所述后端服务子系统中配置有至少一个虚拟查询表,所述至少一个虚拟查询表与所述离线数据子系统及所述实时数据子系统中存储的数据存在映射关系;10.所述离线数据子系统,用于存储指定时间字段的字段值在预设时刻之前的数据;11.所述实时数据子系统,用于存储所述指定时间字段的字段值在所述预设时刻以后的数据;12.所述后端服务子系统,用于接收针对所述虚拟查询表的数据查询指令,其中,所述数据查询指令至少携带有待查询数据的指定时间字段的字段值筛选区间;响应于所述数据查询指令,将所述字段值筛选区间拆分为预设时刻之前的第一时间子区间,以及所述预设时刻以后的第二时间子区间;从所述离线数据子系统中读取所述指定时间字段的字段值满足所述第一时间子区间的第一数据,以及从所述实时数据子系统中读取所述指定时间字段的字段值满足所述第二时间子区间的第二数据;根据所述第一数据和所述第二数据,输出数据查询结果。13.第三方面,本技术实施例还提供了一种电子设备,包括:14.处理器;以及15.存储器,用于存储数据处理程序,该电子设备通电并通过所述处理器运行该程序后,执行如第一方面任一项所述的方法。16.第四方面,本技术实施例还提供了一种计算机可读存储介质,存储有数据处理程序,该程序被处理器运行,执行如第一方面任一项所述的方法。17.与现有技术相比,本技术具有以下优点:18.在本技术实施例提供的数据处理方法中,后端服务子系统接收到用户针对虚拟查询表的数据查询指令后,以预设时刻为划分节点,对数据查询指令中携带的时间筛选条件进行分区,从而拆分为预设时刻之前的第一时间子区间,以及预设时刻以后的第二时间子区间,进而从离线数据子系统中读取指定时间字段的字段值满足第一时间子区间的离线数据,以及从实时数据子系统中读取指定时间字段的字段值满足第二时间子区间的实时数据,并根据读取的数据输出查询结果。19.由于后端服务子系统中配置的虚拟查询表,与离线数据子系统及实时数据子系统中存储的数据存在映射关系,因此,在用户层面,用户可以仅对虚拟查询表进行数据查询操作,形成查询指令,便可使数据处理系统在底层实现层面,通过数据筛选条件的时间拆分,将用户需求转化为离线部分和实时部分的双数据源操作,因此,在本技术实施例中,用户在开发数据任务时,仅需针对一套基于虚拟查询表的代码进行开发和维护即可,提高了数据需求的开发效率,并实现了用户对分离计算无感知的流批一体,且能够保证较佳的处理性能和吞吐量。附图说明20.图1是本技术实施例提供的一种数据处理系统的架构框图;21.图2是本技术实施例提供的一种数据处理方法的流程图;22.图3是本技术实施例提供的另一种数据处理系统的架构框图;23.图4是本技术实施例提供的另一种数据处理方法的流程图;24.图5是本技术实施例提供的第三种数据处理方法的流程图;25.图6是本技术实施例提供的第四种数据处理方法的流程图;26.图7是本技术实施例提供的用于实现数据处理的电子设备的逻辑结构示意图。具体实施方式27.在下面的描述中阐述了很多具体细节以便于充分理解本技术。但是本技术能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本技术内涵的情况下做类似推广,因此本技术不受下面公开的具体实施的限制。28.在详细说明本技术的实施方式之前,首先对相关技术进行进一步介绍。29.随着流批一体概念的热门化,除
背景技术
:中提及的伪流批一体式架构之外,还出现了一些想要兼顾批处理和流处理的方案,如下:30.方案a:kappa架构。在kappa架构中,流批一体的实现主要是流处理和批处理,均采用流处理的计算方式。31.方案b:数据湖存储技术。在如hudi、iceberg、deltalake等数据湖平台中,可以通过某种数据存储格式去存储数据,这些格式提供时间线(timeline)功能,支持按时间顺序回溯或者流读。32.然而,上述方案虽然可以通过一套代码进行维护,但是仍然存在不足之处。33.对于方案a,kappa架构的存储设计主要是为流处理而设计,存储方式对于批处理、随机查询等性能存在瓶颈。34.对于方案b,数据湖存储技术虽然能够提供时间线功能,但实时读取粒度、吞吐量等性能都存在局限性。35.上述方案a和方案b,虽然能够通过一套代码进行维护,但是却在一定程度上牺牲了批处理或流处理的性能。因此,不论是
背景技术
:中的伪流批一体式方案,还是上述方案a和方案b,都无法在通过一套代码即可维护的同时,又不牺牲流批处理的性能。36.为解决上述问题,本技术提供了一种数据处理方法,该方法应用于如图1所示的数据处理系统1000中的后端服务子系统1001,该系统1000还包括离线数据子系统1002和实时数据子系统1003,后端服务子系统1001、离线数据子系统1002与实时数据子系统1003两两之间相互通信连接。37.在本技术中,后端服务子系统1001可以是将后端开发者等相关技术人员作为主要服务对象、用于进行后端数据需求开发及维护的电子设备,其具有与所服务对象进行交互的交互平台,如图1所示,技术人员可以通过该交互平台,进行数据需求的开发及后期维护。在一具体实施方式中,该交互平台具体可以是sql(structuredquerylanguage,结构化查询语言)交互平台,sql交互平台可以通过用户输入的sql语句进行相关操作,实现人机交互。38.需要事先说明的是,在本技术中,将采用“用户”一词,指代后端服务子系统1001所面向的服务对象,包括后端的开发人员、测试人员等相关技术人员,本技术并不旨在对其进行限定。39.在本技术中,参照图1,数据处理系统1000的控制核心可以是olap(onlineanalyticalprocessing,联机分析处理)引擎,相应地,后端服务子系统1001则可以是olap引擎对应的引擎服务器。40.离线数据子系统1002可用于存储离线数据,其中,离线数据可作为批处理的源数据。实时数据子系统1003可用于存储实时数据,其中,实时数据可作为流处理所需的源数据。在实际应用中,所存储的数据可以通过至少一个时间字段来表示每个数据的生产时间,例如时间戳(timestamp)字段,日期戳(datestamp)字段等。因此,在本技术中,离线数据与实时数据的划分依据可以是一个预设时刻,若一个数据的某个指定时间字段(如日期戳)的字段值在该预设时刻之前,则该数据即为离线数据,需存储在离线数据子系统1002中;若一个数据的某个指定时间字段(如日期戳)的字段值在该预设时刻以后,则该数据即为实时数据,需存储在实时数据子系统1003中。41.需要说明的是,在本技术中,该预设时刻为一可调值,或者是一个可以根据设置的规则变化的值。在一具体示例中,该预设时刻可以是当天的0点,也即当时间跨过0点时,预设时刻随之变为今日0点,昨日整日的数据将从实时数据转为离线数据,昨日整日的数据的存储位置,也将从实时数据子系统1003迁移至离线数据子系统1002。42.在一具体实施方式中,离线数据子系统1002具体可以为离线数据仓库(数据仓库,简称数仓),例如hive数仓。离线数仓对于离线数据的批处理需求具有优势。43.在一具体实施方式中,实时数据子系统1003具体可以为实时数据仓库,例如kafka数仓。实时数仓对于实时数据的流处理需求具有优势。44.在本技术中,后端服务子系统1001、离线数据子系统1002和实时数据子系统1003的实体形式可以是电子设备,单体电子设备、电子设备集群等形式均可,本技术对此并不进行具体限定。45.还需说明的是,为避免理解偏差,在本技术中,“xx时刻之前”和“xx时刻之后”,统一指不包含xx时刻本身,“xx时刻以前”和“xx时刻以后”,统一指包含xx时刻本身,类似的表述其含义同上。46.基于上述数据处理系统,本技术提供了一种数据处理方法,该方法应用于上述数据处理系统中的后端服务子系统。其中,后端服务子系统中配置有至少一个虚拟查询表,该至少一个虚拟查询表与离线数据子系统及实时数据子系统中存储的数据存在映射关系,如此,通过对虚拟查询表进行查表,便能够读取离线数据子系统及实时数据子系统中存储的数据。47.需要说明的是,该至少一个虚拟查询表与离线数据及实时数据之间的映射关系,可以是直接的映射关系,也可以是间接的映射关系。48.如图2所示,该方法包括以下步骤s110~步骤s140。49.步骤s110:接收针对虚拟查询表的数据查询指令,其中,数据查询指令至少携带有待查询数据的指定时间字段的字段值筛选区间。50.在本技术实施例中,用户可以通过后端服务子系统中的交互平台,进行针对任一虚拟查询表的数据查询操作,形成查询指令,也即对任一虚拟查询表进行查表。其中,后端服务子系统中的交互平台可以向用户提供各虚拟查询表的可查询字段,用户可以依据所查虚拟查询表的可查询字段,输入数据的筛选条件,以获得满足筛选条件的离线数据和/或实时数据。51.由于各数据的生产时间不同,因此,用户输入数据的筛选条件时,至少需要提供能够区分不同生产时间的筛选条件,在本技术实施例中,不同的生产时间可通过指定时间字段的不同字段值(如日期戳)表示。52.在具体实现中,不同的虚拟查询表可以通过不同的表名进行区分,用户在进行数据查询操作,形成查询指令时,除数据的筛选条件之外,还可以输入所要查询的虚拟查询表的表名,以使后端服务子系统能够确定需要对哪个虚拟查询表进行查表。53.在本技术实施例中,不同的虚拟查询表所映射的数据可以不存在交集,也即通过不同的虚拟查询表,可以查询到不同的数据。在此种情况下,进一步可选地,每个虚拟查询表均可以映射至一部分离线数据及一部分实时数据,且所有虚拟查询表的映射,可覆盖全部的离线数据和实时数据,也即每个离线数据或实时数据,都可以通过对某一个虚拟查询表的查表读取出来。54.以下举例说明上述映射关系。在一示例中,离线数据子系统中的全部离线数据可以划分为不存在交叠的n个离线数据集,分别是离线数据集a1-an,实时数据子系统中的全部实时数据也可以划分为不存在交叠的n个实时数据集,分别是实时数据集b1-bn,相应地,后端服务子系统中可以配置n个虚拟查询表,分别是虚拟查询表tv1-tvn。其中,虚拟查询表tv1与离线数据集a1和实时数据集b1中的数据存在映射关系,也即离线数据集a1中的任一离线数据,以及实时数据集b1中的任一实时数据,均可以通过针对虚拟查询表tv1的数据查询指令进行读取。类似地,虚拟查询表tv2与离线数据集a2和实时数据集b2中的数据存在映射关系,依次类推,此处不再赘述。55.如此,能够通过虚拟查询表管理所有离线数据和实时数据,同时,还无需对同一数据维护两个以上的虚拟查询表,降低了虚拟查询表的维护成本。56.当然,在具体应用中,随着数据处理需求的不断变化,不同的虚拟查询表所映射的数据也可以存在交集,从而可满足更多的数据处理需求。57.当后端服务子系统接收到针对虚拟查询表的数据查询指令时,则执行下述步骤s120。58.步骤s120:响应于数据查询指令,将该字段值筛选区间拆分为预设时刻之前的第一时间子区间,以及预设时刻以后的第二时间子区间。59.由于虚拟查询表与离线数据和实时数据存在映射关系,因此,后端服务子系统响应于数据查询指令,需要根据离线数据和实时数据的区分节点(即预设时刻),对待查询数据的指定时间字段的字段值筛选区间进行拆分,也即对用户输入的时间筛选条件进行分区,从而将对离线数据和实时数据的时间筛选区间,拆分为对离线数据的时间筛选区间(即预设时刻之前的第一时间子区间),以及对实时数据的时间筛选区间(即预设时刻以后的第二时间子区间)。60.步骤s130:从离线数据子系统中读取指定时间字段的字段值满足第一时间子区间的第一数据,以及从实时数据子系统中读取指定时间字段的字段值满足第二时间子区间的第二数据。61.在本步骤中,后端服务子系统可以从离线数据子系统中,读取指定时间字段的字段值满足第一时间子区间的第一数据,从而获得用户所查询数据中的离线数据。后端服务子系统还可以从实时数据子系统中,读取指定时间字段的字段值满足第二时间子区间的第二数据,从而获得用户所查询数据中的实时线数据。62.如此,在用户层面,用户仅通过数据筛选条件,对虚拟查询表进行一次查表操作,便可使数据处理系统在底层实现层面,通过数据筛选条件的时间拆分,将用户需求转化为离线部分和实时部分的双数据源操作,因此,在本技术实施例中,用户在开发数据任务时,仅需针对一套基于虚拟查询表的代码进行开发和维护即可,从而实现了用户对分离计算无感知的流批一体。63.在实际应用中,后端服务子系统从离线数据子系统中读取第一数据的步骤,与后端服务子系统从实时数据子系统中读取第二数据的步骤,可以并行执行,当然,也可以串行执行,在具体应用时结合具体情况进行选择即可,本技术对此不作具体限定。64.步骤s140:根据第一数据和第二数据,输出数据查询结果。65.在本步骤中,后端服务子系统可以将第一数据和第二数据进行整合,整合所得的数据即为数据查询结果,进而后端服务子系统可以将数据查询结果输出,以供用户查看。在一可选的实施方式中,后端服务子系统可以通过数据查询结果界面,将数据查询结果展示给用户。66.在本技术实施例提供的数据处理方法中,后端服务子系统接收到用户针对虚拟查询表的数据查询指令后,以预设时刻为划分节点,对数据查询指令中携带的时间筛选条件进行分区,从而拆分为预设时刻之前的第一时间子区间,以及预设时刻以后的第二时间子区间,进而从离线数据子系统中读取指定时间字段的字段值满足第一时间子区间的离线数据,以及从实时数据子系统中读取指定时间字段的字段值满足第二时间子区间的实时数据,并根据读取的数据输出查询结果。67.由于后端服务子系统中配置的虚拟查询表,与离线数据子系统及实时数据子系统中存储的数据存在映射关系,因此,在用户层面,用户可以仅对虚拟查询表进行数据查询操作,形成查询指令,便可使数据处理系统在底层实现层面,通过数据筛选条件的时间拆分,将用户需求转化为离线部分和实时部分的双数据源操作,因此,在本技术实施例中,用户在开发数据任务时,仅需针对一套基于虚拟查询表的代码进行开发和维护即可,提高了数据需求的开发效率,并实现了用户对分离计算无感知的流批一体,且能够保证较佳的处理性能和吞吐量。68.在一种实施方式中,上述离线数据子系统和实时数据子系统中存储的数据,可以是游戏应用的用户数据。69.进一步地,在一种可选的实施方式中,该至少一个虚拟查询表与离线数据及实时数据之间的映射关系,可以是间接的映射关系,参照图3,具体如下:70.离线数据子系统1002中可配置有至少一个离线数据查询表tb,该至少一个离线数据查询表tb与离线数据子系统1002中存储的数据存在映射关系;71.实时数据子系统1003中可配置有至少一个实时数据查询表ts,该至少一个实时数据查询表ts与实时数据子系统1003中存储的数据存在映射关系;72.相应地,虚拟查询表tv与具有相同表名的离线数据查询表tb及实时数据查询表ts存在映射关系。也即一个虚拟查询表实质上映射为了一个离线数据查询表和一个实时数据查询表。73.在该实施方式中,离线数据查询表tb与离线数据存在映射关系,而虚拟查询表tv又与具有相同表名的离线数据查询表tb存在映射关系,因此,通过上述两个直接的映射关系,实现了虚拟查询表tv与离线数据之间的间接映射关系。同样地,实时数据查询表ts与实时数据存在映射关系,而虚拟查询表tv又与具有相同表名的实时数据查询表ts存在映射关系,因此,通过上述两个直接的映射关系,实现了虚拟查询表tv与实时数据之间的间接映射关系。如此,能够将针对某个虚拟查询表tv的数据查询指令,转化为分别对相同表名的离线数据查询表tb的数据查询指令,以及对相同表名的实时数据查询表ts的数据查询指令。74.在实际应用中,离线数据子系统和实时数据子系统中均存储有大量的数据,因此,需要各自建立用于管理自身数据的表,以便于离线数据子系统和实时数据子系统的单独维护、数据迁移等。75.基于此,在该实施方式中,离线数据子系统中存储的离线数据可以通过离线数据查询表tb进行管理,实时数据子系统中存储的实时数据可以通过实时数据查询表ts进行管理,后端服务子系统再通过虚拟查询表tv对离线数据查询表tb和实时数据查询表ts进行管理。相较于通过虚拟查询表直接对离线数据和实时数据进行管理的方案,该实施方式能够在离线数据子系统和实时数据子系统本身的数据管理方式的基础上,直接构建基于虚拟查询表的流批一体方案,从而可以直接利用现有的离线数据子系统和实时数据子系统,减少了离线数据子系统和实时数据子系统的底层开发,节约了整个数据处理系统的开发成本,降低了数据处理系统的维护难度。76.在一可选的具体示例中,离线数据子系统可采用hive数仓,实时数据子系统可采用kafka数仓,相应地,一个离线数据查询表具体可以是一个hive表,一个实时数据查询表具体可以是一个kafkatopic(主题),也即一个虚拟查询表可映射为一个kafkatopic和一个hive表。在该示例中,可选地,虚拟查询表的元数据可以存储在离线数据子系统(如hivemetastore)中进行管理,hivemetastore主要是hive元数据的集中存放地,这里也可以用于存储虚拟查询表的元数据。77.在具体实现过程中,为便于与后端服务子系统的开发衔接,可以对kafkatopic中的数据格式进行统一规定,例如kafkatopic中的数据格式可采用json方式序列化存储。78.基于在上述实施方式,进一步地,数据查询指令还需携带有待查询的虚拟查询表的表名,通过该表名,可以确定用户所要查询的具体是哪个虚拟查询表tv,之后进一步可以确定,需要查询哪个离线数据查询表tb及哪个实时数据查询表ts。79.参照图4,在数据查询指令还携带有待查询的虚拟查询表的表名的情况下,步骤s130中的步骤“从离线数据子系统中读取指定时间字段的字段值满足第一时间子区间的第一数据”,具体可以通过以下步骤s131~s132实现。80.步骤s131:从与虚拟查询表具有相同表名的离线数据查询表中,查询指定时间字段的字段值满足第一时间子区间的第一数据的存储信息。81.步骤s132:根据第一数据的存储信息,从离线数据子系统中读取第一数据。82.在一具体示例中,数据查询指令可以携带有待查询的虚拟查询表tv1的表名mytable1,相应地,后端服务子系统可以从表名同样为mytable1的离线数据查询表中,查询日期戳满足第一时间子区间的第一数据的存储信息,从而可以根据该存储信息,从离线数据子系统中读取第一数据,也即用户所查询数据中的离线数据部分。83.如此,可以通过统一的表名,缩小在离线数据子系统中的数据查询范围,快速通过表名锁定在某个离线数据查询表tb中进行数据查询,从而提高了数据查询效率。84.参照图4,在数据查询指令还携带有待查询的虚拟查询表的表名的情况下,步骤s130中的步骤“从实时数据子系统中读取指定时间字段的字段值满足第二时间子区间的第二数据”,具体可以通过以下步骤s133~s134实现。85.步骤s133:从与虚拟查询表具有相同表名的实时数据查询表中,查询指定时间字段的字段值满足第二时间子区间的第二数据的存储信息。86.步骤s134:根据第二数据的存储信息,从实时数据子系统中读取第二数据。87.在一具体示例中,数据查询指令可以携带有待查询的虚拟查询表的表名mytable1,相应地,后端服务子系统可以从表名同样为mytable1的实时数据查询表中,查询日期戳满足第二时间子区间的第二数据的存储信息,从而可以根据该存储信息,从实时数据子系统中读取第二数据,也即用户所查询数据中的实时数据部分。88.如此,可以通过统一的表名,缩小在实时数据子系统中的数据查询范围,快速通过表名锁定在某个实时数据查询表ts中进行数据查询,从而提高了数据查询效率。89.需要说明的是,在实际应用中,除上述各实施方式中提及的时间筛选条件和虚拟查询表表名之外,数据查询指令中还可以携带有其他更具体的筛选条件,如某个应用账号,从而筛选出该应用账号的相关数据。本技术对于数据查询指令所携带的其他筛选条件不作具体限定,用户可根据实际需求进行输入。90.在上述实施方式中,之所以能够通过相同的表名关联三个子系统中的三种表,是因为三种表的创建、数据写入过、删除等过程,都是通过相同表名进行关联的,从而才使得上述的数据查询过程中,能够通过后端服务子系统中的某个虚拟查询表的表名,关联到离线数据子系统中的某个离线数据查询表,以及实时数据子系统中的某个实时数据查询表。91.以下具体介绍虚拟查询表、离线数据查询表和实时数据查询表的创建过程、数据写入过程和删除过程,以体现相同表名的三种表之间的关联性。92.一、表的创建过程s150,包括以下步骤s151~s152:93.步骤s151:接收虚拟查询表创建指令,其中,虚拟查询表创建指令至少携带有待创建的虚拟查询表的表名。94.后端服务子系统可以通过交互平台,接收用户的虚拟查询表创建指令,其中,用户需提供待创建的虚拟查询表的表名,示例性地,如mytable1,意味着用户想要创建一个表名为mytable1的虚拟查询表。95.步骤s152:响应于虚拟查询表创建指令,以该表名创建虚拟查询表,并在离线数据子系统中以该表名创建离线数据查询表,以及在实时数据子系统中以该表名创建实时数据查询表。96.后端服务子系统响应于该虚拟查询表创建指令,在用户层面,可以创建一个表名为mytable1的虚拟查询表,在底层实现层面,可以在离线数据子系统中同样创建一个表名为mytable1的离线数据查询表,以及在实时数据子系统中同样创建一个表名为mytable1的实时数据查询表。这样,在三个子系统中,分别存在同名的三种表,表名为mytable1的虚拟查询表的创建,在底层实现上映射为表名为mytable1的一个离线数据查询表的创建,以及表名为mytable1的一个实时数据查询表的创建,而用户对分离的两个底层创建操作无感知。97.在一具体实施例中,离线数据查询表具体为hive表,实时数据查询表具体为kafkatopic,当需要创建一个表名为mytable1虚拟查询表时,后端服务子系统会自动在hive数仓中创建一个表名为mytable1的hive表,以及在kafka数仓中创建一个表名为mytable1的topic。98.二、表的数据写入过程s160,包括以下步骤s161~s164:99.步骤s161:接收针对虚拟查询表的数据写入指令,其中,数据写入指令至少携带有虚拟查询表的表名和待写入的目标数据的指定时间字段的字段值。100.后端服务子系统可以通过交互平台,接收用户针对某个虚拟查询表的数据写入指令,其中,用户需提供待写入数据的虚拟查询表的表名,示例性地,如mytable1,意味着用户想要在表名为mytable1的虚拟查询表中写入数据。当然,用户还需提供待写入的目标数据,尤其是该目标数据的指定时间字段的字段值,后端服务子系统后续需要根据该字段值,判断需要将目标数据写入表名为mytable1的离线数据查询表,还是表名为mytable1的实时数据查询表。101.步骤s162:响应于数据写入指令,在该字段值处于预设时刻之前的情况下,将目标数据存储至离线数据子系统中,并将目标数据的存储信息写入具有该表名的离线数据查询表中。102.其中,目标数据指满足写入要求的任意数据。103.在本步骤中,后端服务子系统对数据写入指令所携带的信息进行解析,可以获得待写入数据的虚拟查询表的表名,以及待写入的目标数据及其指定时间字段的字段值,进而后端服务子系统可以根据该字段值与当前的预设时刻之间的大小关系,判断需要将目标数据写入与虚拟查询表的表名相同的离线数据查询表,还是写入与虚拟查询表的表名相同的实时数据查询表。104.若该字段值处于预设时刻之前,则后端服务子系统将目标数据存储至离线数据子系统中,并将目标数据的存储信息写入与虚拟查询表的表名相同的离线数据查询表中。105.在一具体实施例中,指定时间字段为时间戳字段,当前的预设时刻为2022-06-23的0:00:00,数据写入指令携带有虚拟查询表的表名mytable1和待写入的目标数据的时间戳字段值2022-06-21,10:00:00,该时间戳字段值处于当前的预设时刻之前,则后端服务子系统会将目标数据存储至离线数据子系统中,作为2022-06-23的0点之前的离线数据,并将目标数据的存储信息写入表名为mytable1的离线数据查询表中。106.步骤s163:响应于数据写入指令,在该字段值处于预设时刻以后的情况下,将目标数据存储至实时数据子系统中,并将目标数据的存储信息写入具有该表名的实时数据查询表中。107.若该字段值处于预设时刻以后,则后端服务子系统将目标数据存储至实时数据子系统中,并将目标数据的存储信息写入与虚拟查询表的表名相同的实时数据查询表中。108.在一具体实施例中,指定时间字段为时间戳字段,当前的预设时刻为2022-06-23的0:00:00,数据写入指令携带有虚拟查询表的表名mytable1和待写入的目标数据的时间戳字段值2022-06-23,10:00:00,该时间戳字段值处于当前的预设时刻以后,则后端服务子系统会将目标数据存储至实时数据子系统中,作为2022-06-23的0点以后的实时数据,并将目标数据的存储信息写入表名为mytable1的离线数据查询表中。109.步骤s164:将目标数据的存储信息同步至具有该表名的虚拟查询表中,以更新虚拟查询表的元数据。110.在本技术实施例中,虚拟查询表是直接面向用户的,因此,在将目标数据的存储信息写入离线数据查询表或实时数据查询表之后,还需要将目标数据的存储信息同步至相同表名的虚拟查询表中。从而在用户层面上,实现对虚拟查询表的数据写入。111.类似地,当需要删除某个虚拟查询表中的某个数据时,会在与该虚拟查询表相同表名的离线数据查询表和实时数据查询表中,同步删除该数据,本技术实施例再次不再赘述。112.三、表的删除过程s170,包括以下步骤s171~s172:113.步骤s171:接收目标虚拟查询表的删除指令,其中,删除指令至少携带有目标虚拟查询表的表名。114.其中,目标虚拟查询表指后端服务子系统中的任意虚拟查询表。115.与虚拟查询表的创建过程类似,后端服务子系统可以通过交互平台,接收用户针对目标虚拟查询表的删除指令,其中,用户需提供待删除的虚拟查询表的表名,示例性地,如mytable1,意味着用户想要删除一个表名为mytable1的虚拟查询表。116.步骤s172:响应于删除指令,删除目标虚拟查询表,并从离线数据子系统中删除与目标虚拟查询表的表名相同的离线数据查询表,以及从实时数据子系统中删除与目标虚拟查询表的表名相同的实时数据查询表。117.后端服务子系统响应于对目标虚拟查询表的删除指令,在用户层面,可以将表名为mytable1的虚拟查询表删除,在底层实现层面,可以将离线数据子系统中表名同样为mytable1的离线数据查询表删除,以及将实时数据子系统中表名同样为mytable1的实时数据查询表删除。这样,在三个子系统中,分别删除了同名的三个表,表名为mytable1的虚拟查询表的删除,在底层实现上映射为表名为mytable1的一个离线数据查询表的删除,以及表名为mytable1的一个实时数据查询表的删除,而用户对分离的两个底层删除操作无感知。118.在一具体实施例中,离线数据查询表具体为hive表,实时数据查询表具体为kafkatopic,当需要删除表名为mytable1虚拟查询表时,后端服务子系统会自动在hive数仓中删除表名为mytable1的hive表,以及在kafka数仓中删除表名为mytable1的topic。119.在具体应用时,由于存在批处理和流处理两种数据处理需求,因此,数据可以进行批式读取(可简称批读)和流式读取(可简称流读)这两种数据读取方式。其中,当需要获得一个特定时间段的计算结果时,适合采用批式读取方式。例如,需要计算截止至当前时刻,最近24小时之内的某游戏玩家的总登录次数,这是一个固定值,因此适合采用批式读取方式。当需要获得一个持续性的计算结果时,适合采用流式读取方式。例如,需要持续计算某应用游戏项目的总流水,而总流水在每时每刻都在不停变化,因此需要持续计算得到不断变化的结果值,因此适合采用流式读取方式。120.在本技术实施例中,用户可以根据实际需求,选择适合的数据读取方式。121.因此,在另一种可选的实施方式中,数据处理系统可以为用户提供批读模式和流读模式的选择设置,从而方便用户根据实际需求,选择采用批式读取的数据读取方式或者流式读取的数据读取方式。对于批式读取方式,后端服务子系统还可以相应支持静态查询结果的输出,也即输出一次批式计算结果,对于流式读取方式,后端服务子系统还可以相应支持动态查询结果的输出,也即持续输出最新的流式计算结果。122.在实际应用中,还可选地,用户可以将批读模式和流读模式中的一种设置为默认的数据读取方式。123.在一具体实施例中,以后端服务子系统采用sql平台为例,用户可以使用如“setruntime-mode=‘streaming’”的sql语句,切换至批读模式,以将数据读取方式切换为批式读取方式;用户还可以使用如“setruntime-mode=‘batch’”的sql语句,切换至流读模式,以将数据读取方式切换为流式读取方式。124.需要说明的是,以上sql语句仅为一种示例,并不对本技术构成限定。125.在一种实施方式中,参照图5,在数据读取方式被配置为批式读取、且数据查询指令未携带有字段值筛选区间的末尾时间节点的情况下,步骤s133具体可以包括以下步骤s1331。126.步骤s1331:从与虚拟查询表具有相同表名的实时数据查询表中,查询数据查询指令的接收时刻以前存储至实时数据子系统中的、且指定时间字段的字段值满足第二时间子区间的第二数据。127.在该实施方式中,在数据读取方式被配置为批式读取的情况下,当用户想要查询从某时刻截止至当前时刻的批式计算结果时,用户可以只输入字段值筛选区间的起始时间节点,而无需输入字段值筛选区间的末尾时间节点,从而后端服务子系统可以基于批式读取方式,将字段值筛选区间的末尾时间节点默认为是数据查询指令的接收时刻,进而读取从该起始时间节点至该接收时刻之间的数据。128.相应地,如图5所示,步骤s140则可以通过以下步骤s141~s142实现。129.步骤s141:将第一数据和第二数据进行整合,获得数据查询结果。130.在本步骤中,后端服务子系统可以将从离线数据子系统中读取的第一数据,以及从实时数据子系统中读取的第二数据,通过拼接操作(如sql中的join操作)进行整合,从而获得整合后的数据,也即数据查询结果。具体地,可以是按照指定时间字段的字段值,按序进行拼接,例如按照日期戳顺序进行拼接。131.步骤s142:显示包括该数据查询结果的数据查询结果界面。132.在本步骤中,后端服务子系统整合得到数据查询结果之后,可以显示数据查询结果界面,以将数据查询结果展示给用户。133.在另一种实施方式中,参照图6,在数据读取方式被配置为流式读取、且数据查询指令未携带有字段值筛选区间的末尾时间节点的情况下,在步骤s142之后,还可以包括以下步骤s181~s182。134.步骤s181:实时监测在数据查询指令的接收时刻之后存储至实时数据子系统中的最新数据。135.步骤s182:当该最新数据的指定时间字段的字段值满足第二时间子区间时,从实时数据子系统中读取该最新数据。136.在该实施方式中,在数据读取方式被配置为流式读取的情况下,当用户想要查询从某时刻不断截止至最新时刻的流式计算结果时,用户同样可以只输入字段值筛选区间的起始时间节点,而无需输入字段值筛选区间的末尾时间节点,从而后端服务子系统可以基于流式读取方式,将字段值筛选区间的末尾时间节点默认为是最新时刻,而不是数据查询指令的接收时刻,进而持续读取从该起始时间节点至最新时刻之间的数据。137.如果采用流读模式,则数据计算任务会以流任务的形式长期运行,因此,除步骤s1331读取到的数据之外,一旦有新数据在用户提交查询之后进入实时数据子系统,后端服务子系统也会立刻将其读出进行处理。138.相应地,如图6所示,在步骤s182之后,还可以包括以下步骤s191~s192。139.步骤s191:将该最新数据与数据查询结果进行整合,获得更新的数据查询结果。140.在流读模式下,一旦有新数据在用户提交查询之后存入实时数据子系统,则后端服务子系统可以将最新数据,与本次流任务中前一次计算得到的数据查询结果进行整合,从而获得当前最新的数据查询结果。141.步骤s192:根据更新的数据查询结果,刷新数据查询结果界面。142.在本步骤中,后端服务子系统可以根据更新的数据查询结果,刷新数据查询结果界面,以使刷新后的数据查询结果界面显示最新的数据查询结果。143.在步骤s142之后,可以持续计算最新的数据查询结果,并及时刷新数据查询结界面,直至用户主动停止该流任务。144.在上述两种实施方式中,在批读模式下,可以支持静态查询结果的计算和输出,在流读模式下,可以支持动态查询结果的动态计算和动态输出。相较于前文中会牺牲流处理或批处理性能的方案a和方案b,本技术实施例提供的数据处理方法,可以在通过一套代码维护的同时,又不牺牲流批处理的性能,该数据处理方法的流批处理性能和吞吐量,与现有技术中流批处理分开开发的方案没有较大差异。145.以下对用户与后端服务子系统的人机交互方式进行具体介绍。146.在一种可选的实施方式中,步骤s110具体可以通过以下步骤s111~s112实现。147.步骤s111:显示数据查询界面,其中,数据查询界面中包括各虚拟查询表的可查询字段。148.在本步骤中,后端服务子系统可以显示一数据查询界面,作为与用户的交互界面,以供用户进行数据查询。其中,后端服务子系统需要通过该数据查询界面,向用户展示各虚拟查询表的可查询字段,从而用户可以根据显示的可查询字段,输入对可查询字段的筛选条件,以及其他查询所需的要素,例如虚拟查询表的表名。149.步骤s112:在数据查询界面中接收输入的数据查询语句,其中,数据查询语句中包括待查询的虚拟查询表的表名,以及待查询数据的指定时间属性的字段值筛选区间。150.用户可以将待查询的虚拟查询表的表名、待查询数据的指定时间属性的字段值筛选区间,以及其他查询所需的要素整理为数据查询语句,其中,该数据查询语句为后端服务子系统所支持的数据查询语句。151.在一具体实现方式中,后端服务子系统可以支持sql语句,用户可以在数据查询界面中输入具体的sql查询语句,从而通过sql查询语句进行数据查询。152.在该实施方式中,后端服务子系统可以提供可视化的数据查询界面,从而与用户进行交互,用户则可以通过数据查询语句的输入,与后端服务子系统进行交互,从而在用户层面,隐藏了与离线数据子系统和实时数据子系统的底层交互,使得用户操作更加便利,提高了用户体验。153.在上述实施方式的基础上,进一步地,步骤s120具体可以通过以下步骤s121~s122实现。154.步骤s121:响应于数据查询语句的输入,对数据查询语句进行解析,以获得表名和字段值筛选区间。155.在本步骤中,后端服务子系统配置有对数据查询语句的解析功能,从而可以对用户输入的数据查询语句进行解析,从而解析得到所查询的虚拟查询表的表名,以及所查询数据的指定时间字段的字段值筛选区间。156.在一具体实现方式中,后端服务子系统的交互平台可以支持sql语句,用户可以在数据查询界面中输入具体的sql查询语句,交互平台可以配置有sql分析器,后端服务子系统可通过数据查询界面,接收用户输入的sql查询语句,并通过sql分析器去分析sql语法,从而解析出sql查询语句中的虚拟查询表表名、待查询数据的指定时间属性的字段值筛选区间等要素。157.步骤s122:将字段值筛选区间拆分为预设时刻之前的第一时间子区间,以及预设时刻以后的第二时间子区间。158.在本步骤中,后端服务子系统将解析得到的字段值筛选区间,拆分为预设时刻之前的第一时间子区间,以及预设时刻以后的第二时间子区间,进而从离线数据子系统中读取指定时间字段的字段值满足第一时间子区间的第一数据,以及从实时数据子系统中读取指定时间字段的字段值满足第二时间子区间的第二数据。159.例如,用户可以输入包括如下内容的数据查询语句,即“select*frommytable1whereds》=2022-06-28”(假设查询当日为2022-07-01),以期从表名为mytable1的虚拟查询表中,查询ds(即日期戳)为2022-06-28至当前时刻的数据。在预设时刻为2022-07-01的0点的情况下,2022-06-28、2022-06-29、2022-06-30的数据(即第一数据),需要依据表名为mytable1的离线数据查询表,从离线数据子系统中读取,2022-07-01的0点至当前时刻的数据(即第二数据),需要依据表名为mytable1的实时数据查询表,从实时数据子系统中读取。160.在该实施方式中,后端服务子系统可以通过解析用户输入的数据查询语句,获得字段值筛选区间,进而根据预设时刻对该字段值筛选区间进行时间分区,而无需用户自己进行时间分区后,再分别通过两个数据查询语句进行分离的数据查询操作,如此,使得用户操作更加便利,提高了用户体验。161.与本技术第一实施例提供的数据处理方法相对应的,本技术第二实施例提供一种数据处理系统。如图1和图3所示,所述系统1000包括两两之间相互通信连接的后端服务子系统1001、离线数据子系统1002和实时数据子系统1003,所述后端服务子系统1001中配置有至少一个虚拟查询表,所述至少一个虚拟查询表与所述离线数据子系统1002及所述实时数据子系统1003中存储的数据存在映射关系;162.所述离线数据子系统1002,用于存储指定时间字段的字段值在预设时刻之前的数据;163.所述实时数据子系统1003,用于存储所述指定时间字段的字段值在所述预设时刻以后的数据;164.所述后端服务子系统1001,用于接收针对所述虚拟查询表的数据查询指令,其中,所述数据查询指令至少携带有待查询数据的指定时间字段的字段值筛选区间;响应于所述数据查询指令,将所述字段值筛选区间拆分为预设时刻之前的第一时间子区间,以及所述预设时刻以后的第二时间子区间;从所述离线数据子系统1002中读取所述指定时间字段的字段值满足所述第一时间子区间的第一数据,以及从所述实时数据子系统1003中读取所述指定时间字段的字段值满足所述第二时间子区间的第二数据;根据所述第一数据和所述第二数据,输出数据查询结果。165.与本技术第一实施例提供的数据处理方法相对应的,本技术第三实施例还提供了一种用于处理数据的电子设备。如图7所示,所述电子设备包括:处理器701;以及存储器702,用于存储数据处理方法的程序,该设备通电并通过所述处理器运行该数据处理方法的程序后,执行如下步骤:166.接收针对所述虚拟查询表的数据查询指令,其中,所述数据查询指令至少携带有待查询数据的指定时间字段的字段值筛选区间;167.响应于所述数据查询指令,将所述字段值筛选区间拆分为预设时刻之前的第一时间子区间,以及所述预设时刻以后的第二时间子区间;168.从所述离线数据子系统中读取所述指定时间字段的字段值满足所述第一时间子区间的第一数据,以及从所述实时数据子系统中读取所述指定时间字段的字段值满足所述第二时间子区间的第二数据;169.根据所述第一数据和所述第二数据,输出数据查询结果。170.与本技术第一实施例提供的数据处理方法相对应的,本技术第四实施例提供一种计算机可读存储介质,存储有数据处理方法的程序,该程序被处理器运行,执行下述步骤:171.接收针对所述虚拟查询表的数据查询指令,其中,所述数据查询指令至少携带有待查询数据的指定时间字段的字段值筛选区间;172.响应于所述数据查询指令,将所述字段值筛选区间拆分为预设时刻之前的第一时间子区间,以及所述预设时刻以后的第二时间子区间;173.从所述离线数据子系统中读取所述指定时间字段的字段值满足所述第一时间子区间的第一数据,以及从所述实时数据子系统中读取所述指定时间字段的字段值满足所述第二时间子区间的第二数据;174.根据所述第一数据和所述第二数据,输出数据查询结果。175.需要说明的是,对于本技术实施例提供的数据处理系统、电子设备及计算机可读存储介质的详细描述可以参考对本技术第一实施例中对数据处理方法的相关描述,这里不再赘述。176.本技术虽然以较佳实施例公开如上,但其并不是用来限定本技术,任何本领域技术人员在不脱离本技术的精神和范围内,都可以做出可能的变动和修改,因此本技术的保护范围应当以本技术权利要求所界定的范围为准。177.在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。178.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。179.1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他属性的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储介质或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。180.2、本领域技术人员应明白,本技术的实施例可提供为方法、系统或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。181.本技术虽然以较佳实施例公开如上,但其并不是用来限定本技术,任何本领域技术人员在不脱离本技术的精神和范围内,都可以做出可能的变动和修改,因此本技术的保护范围应当以本技术权利要求所界定的范围为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1