CN113190532A - 数据处理方法、装置、设备及计算机可读存储介质 - Google Patents

数据处理方法、装置、设备及计算机可读存储介质 Download PDF

Info

Publication number
CN113190532A
CN113190532A CN202110553321.4A CN202110553321A CN113190532A CN 113190532 A CN113190532 A CN 113190532A CN 202110553321 A CN202110553321 A CN 202110553321A CN 113190532 A CN113190532 A CN 113190532A
Authority
CN
China
Prior art keywords
data
service system
data set
service
data processing
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
Application number
CN202110553321.4A
Other languages
English (en)
Inventor
周辉
梁思健
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202110553321.4A priority Critical patent/CN113190532A/zh
Publication of CN113190532A publication Critical patent/CN113190532A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/219Managing data history or versioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2358Change logging, detection, and notification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, 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)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供了一种数据处理方法、装置、设备及计算机可读存储介质;该方法包括:获取与第一服务系统异构的第二服务系统的数据处理请求,数据处理请求包括第二服务系统中使用的待处理的数据集的版本信息和针对数据集的数据处理逻辑;其中,数据集中的数据记录为从第一服务系统中同步得到的;从第一服务系统使用的数据集中,确定与数据集的版本信息匹配的待处理的第一数据记录;基于数据集的数据处理逻辑,对第一数据记录进行处理。通过本申请,可以避免第一服务系统与第二服务系统之间数据未同步导致的数据处理不准确的问题,从而可以可靠地在异构系统中完成对数据集中数据记录的处理逻辑,保证数据处理逻辑最终结果的一致性。

Description

数据处理方法、装置、设备及计算机可读存储介质
技术领域
本申请涉及但不限于计算机信息技术领域,尤其涉及一种数据处理方法、装置、设备及计算机可读存储介质。
背景技术
在互联网环境下,不同服务系统或设备之间经常存在需要对同一数据集中的数据记录进行查询、修改等处理的情况。对于异构的多个服务系统或设备,需要在不同服务系统或设备中会分别存储一份该数据集,并定期对数据集中的数据记录进行同步。但是,由于异构的多个服务系统或设备之间的数据可能无法保证完全实时同步,因而对数据进行处理的过程中,可能会出现由于不同服务系统或设备所使用的数据不一致导致的数据处理逻辑以及处理结果不一致的问题。
发明内容
本申请实施例提供一种数据处理方法、装置、设备及计算机可读存储介质,能够避免第一服务系统与第二服务系统之间数据未同步导致的数据处理不准确的问题,从而可以可靠地在异构系统中完成对数据集中数据记录的处理逻辑,保证数据处理逻辑最终结果的一致性。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种数据处理方法,包括:获取与第一服务系统异构的第二服务系统的数据处理请求,所述数据处理请求包括所述第二服务系统中使用的待处理的数据集的版本信息和针对所述数据集的数据处理逻辑;其中,所述数据集中的数据记录为从所述第一服务系统中同步得到的;从所述第一服务系统使用的数据集中,确定与所述数据集的版本信息匹配的待处理的第一数据记录;基于所述数据集的数据处理逻辑,对所述第一数据记录进行处理。
本申请实施例提供一种数据处理方法,包括:
获取第二服务系统中使用的待处理的数据集中的各数据记录和所述数据集的版本信息;其中,所述数据集中的数据记录为从与所述第二服务系统异构的第一服务系统中同步得到的;
基于所述数据集中的各数据记录,确定针对所述数据集的数据处理逻辑;
基于所述版本信息和所述数据集的数据处理逻辑,确定数据处理请求,并将所述数据处理请求发送至所述第一服务系统,以使所述第一服务系统从所述第一服务系统使用的数据集中,确定与所述版本信息匹配的待处理的第一数据记录,并基于所述数据集的数据处理逻辑,对所述第一数据记录进行处理。
在一些实施例中,所述方法还包括:定时将所述第一服务系统使用的数据集中的数据记录同步至所述第二服务系统使用的数据集中,并获取所述第一服务系统使用的数据集当前的版本信息。
在一些实施例中,所述数据集中的每一数据记录具有一属性值,在所述第一服务系统向所述数据集中新增数据记录的过程中,每一新增的数据记录的所述属性值相对前一新增的数据记录的所述属性值是单调变化的,所述获取第二服务系统中使用的待处理的数据集中的各数据记录和所述数据集的版本信息,包括:获取所述第二服务系统中使用的待处理的数据集中的每一数据记录;基于每一所述数据记录的所述属性值,确定所述数据集的版本信息。
在一些实施例中,在所述第一服务系统向所述数据集中新增数据记录的过程中,每一新增的数据记录的所述属性值相对前一新增的数据记录的所述属性值是单调递增的,所述基于每一所述数据记录的所述属性值,确定所述数据集的版本信息,包括:将各数据记录的所述属性值中的最大值,确定为所述数据集的版本信息。
在一些实施例中,所述第一服务系统包括数据处理服务,所述第二服务系统包括业务逻辑服务,所述基于所述数据集中的各数据记录,确定针对所述数据集的数据处理逻辑,包括:所述业务逻辑服务基于所述数据集中的各数据记录,确定针对所述数据集的数据处理逻辑;所述基于所述版本信息和所述数据集的数据处理逻辑,确定数据处理请求,并将所述数据处理请求发送至所述第一服务系统,包括:所述业务逻辑服务基于所述版本信息和所述数据集的数据处理逻辑,确定数据处理请求;所述业务逻辑服务将所述数据处理请求发送至所述数据处理服务,以使所述数据处理服务从所述第一服务系统使用的数据集中,确定与所述版本信息匹配的待处理的第一数据记录,并基于所述数据集的数据处理逻辑,对所述第一数据记录进行处理。
在一些实施例中,所述第一服务系统还包括数据访问服务,所述第二服务系统还包括数据同步服务,所述方法还包括:所述数据同步服务接收所述数据访问服务发送的所述第一服务系统中使用的数据集中的每一数据记录和所述数据集当前的版本信息,所述数据集当前的版本信息为所述数据访问服务基于每一所述数据记录的所述属性值确定的;所述数据同步服务利用每一所述数据记录更新所述第二服务系统中使用的数据集。
本申请实施例提供一种数据处理装置,包括:
第一获取模块,用于获取与第一服务系统异构的第二服务系统的数据处理请求,所述数据处理请求包括所述第二服务系统中使用的待处理的数据集的版本信息和针对所述数据集的数据处理逻辑;其中,所述数据集中的数据记录为从所述第一服务系统中同步得到的;
第一确定模块,用于从所述第一服务系统使用的数据集中,确定与所述数据集的版本信息匹配的待处理的第一数据记录;
第一处理模块,用于基于所述数据集的数据处理逻辑,对所述第一数据记录进行处理。
本申请实施例提供一种数据处理装置,包括:
第四获取模块,用于获取第二服务系统中使用的待处理的数据集中的各数据记录和所述数据集的版本信息;其中,所述数据集中的数据记录为从与所述第二服务系统异构的第一服务系统中同步得到的;
第五确定模块,用于基于所述数据集中的各数据记录,确定针对所述数据集的数据处理逻辑;
第二发送模块,用于基于所述版本信息和所述数据集的数据处理逻辑,确定数据处理请求,并将所述数据处理请求发送至所述第一服务系统,以使所述第一服务系统从所述第一服务系统使用的数据集中,确定与所述版本信息匹配的待处理的第一数据记录,并基于所述数据集的数据处理逻辑,对所述第一数据记录进行处理。
本申请实施例提供一种数据处理设备,包括:存储器,用于存储可执行指令;处理器,用于执行所述存储器中存储的可执行指令时,实现本申请实施例提供的方法。
本申请实施例提供一种计算机可读存储介质,存储有可执行指令,用于引起处理器执行时,实现本申请实施例提供的方法。
本申请实施例具有以下有益效果:
通过获取与第一服务系统异构的第二服务系统的数据处理请求,数据处理请求包括第二服务系统中使用的待处理的数据集的版本信息和针对数据集的数据处理逻辑;其中,数据集中的数据记录为从第一服务系统中同步得到的;从第一服务系统使用的数据集中,确定与数据集的版本信息匹配的待处理的第一数据记录;基于数据集的数据处理逻辑,对第一数据记录进行处理。这样,由于在异构的第一服务系统与第二服务系统之间进行数据处理逻辑交互的过程中携带了待处理的数据集的版本信息,基于该版本信息确定第一服务系统使用的数据集中待处理的第一数据记录,可以避免第一服务系统与第二服务系统之间数据未同步导致的数据处理不准确的问题,从而可以可靠地在异构系统中完成对数据集中数据记录的处理逻辑,保证数据处理逻辑最终结果的一致性。
附图说明
图1是本申请实施例提供的数据处理系统的一个可选的架构示意图;
图2A是本申请实施例提供的数据处理设备的一个可选的结构示意图;
图2B是本申请实施例提供的数据处理设备的一个可选的结构示意图;
图3是本申请实施例提供的数据处理方法的一个可选的流程示意图;
图4是本申请实施例提供的数据处理方法的一个可选的流程示意图;
图5是本申请实施例提供的数据处理方法的一个可选的流程示意图;
图6是本申请实施例提供的数据处理方法的一个可选的流程示意图;
图7是本申请实施例提供的数据处理方法的一个可选的流程示意图;
图8A是本申请实施例提供的一种数据处理方法的实现架构示意图;
图8B是本申请实施例提供的一种基于数据集合中每一数据记录的产生时间确定数据集合的版本信息的实现示意图;
图8C是本申请实施例提供的一种基于数据集合中每一数据记录的自增数据ID确定数据集合的版本信息的实现示意图;
图8D是本申请实施例提供的一种数据处理方法的实现流程示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
如果申请文件中出现“第一/第二”的类似描述则增加以下的说明,在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
为了更好地理解本申请实施例提供的数据处理方法,下面先对相关技术中的数据处理方案进行说明。
相关技术中,异构的多个服务系统之间通常通过接口进行数据集同步,并在各服务系统中分别存储需要处理的数据集,不同的服务系统可以根据业务需求分别基于各自存储的数据集确定数据处理逻辑,并将相应的数据处理逻辑发送至其他服务系统,以使其他服务系统能基于该数据处理逻辑对存储的数据集进行相应的数据处理。比如,一些提供基础服务的数据管理系统会定期或实时地与外部业务系统进行数据集中数据记录的同步,同时外部业务系统也会根据自身的业务需求对数据管理系统中使用的数据集进行配置或调整等处理。在这种场景下,由于数据管理系统中使用的数据集中的数据记录可能会随时动态的增减或修改,外部业务系统同步到的数据集中的数据记录不一定是最新的,从而可能会导致数据处理逻辑不一致或最终的处理结果不一致的异常。
以规则系统基于外部业务系统确定的规则配置逻辑实现规则不生效配置的过程为例,在相关技术中,外部业务系统通常会通过规则系统的数据同步接口定期(或者在进行规则不生效配置之前)拉取全量的规则数据集,而后外部业务系统会根据业务需求,以最近拉取的规则数据集为基准,确定配置规则不生效的规则配置逻辑,并通过规则系统的规则配置接口向规则系统发送规则配置请求,以使规则系统基于该规则配置逻辑,对规则系统中使用的规则数据集中的规则进行规则不生效的配置。
在上述相关技术的规则不生效配置方案中,存在如下几方面的问题:1)外部业务系统从完成规则数据同步到发送规则配置请求之间存在一个时间窗口,在该时间窗口内规则系统可能会随时增减规则,因而无法保证两个系统之间规则数据的一致性及规则不生效的配置逻辑结果的一致性;2)由于规则数据的一致性无法保证,外部业务系统在确定规则不生效的配置逻辑时,可能规则系统中已经新增了一些规则,新的规则因为不被外部业务系统所感知,将无法参与到本次的规则不生效的配置中,最终导致新规则误生效;3)规则系统中对于规则数据缺少版本管理机制,因此在接收到规则配置请求时,无法比对出与外部业务系统之间规则数据集的差异,更无法分辨出当前规则数据集中新增的规则,从而对新增的规则执行与其他规则同样的配置逻辑,进而可能导致出现非预期的规则配置结果。
本申请实施例提供一种数据处理方法、装置、设备和计算机可读存储介质,能够避免第一服务系统与第二服务系统之间数据未同步导致的数据处理不准确的问题,从而可以可靠地在异构系统中完成对数据集中数据记录的处理逻辑,保证数据处理逻辑最终结果的一致性。下面说明本申请实施例提供的数据处理设备的示例性应用,本申请实施例提供的数据处理设备可以实施为笔记本电脑,平板电脑,台式计算机,机顶盒,移动设备(例如,移动电话,便携式音乐播放器,个人数字助理,专用消息设备,便携式游戏设备)等各种类型的用户终端,也可以实施为服务器。下面,将说明本申请实施例提供的数据处理设备实施为第一服务器或第二服务器时的示例性应用。
参见图1,图1是本申请实施例提供的数据处理系统100的一个可选的架构示意图,可以可靠地在异构系统中完成对数据集中数据记录的处理逻辑,终端(示例性示出了终端400-1和终端400-2)通过网络301连接第二服务器202,第二服务器202通过网络302连接第一服务器201,网络301和网络302可以是广域网或者局域网,又或者是二者的组合,网络301和网络302可以是同一网络也可以是不同的网络。
终端用于:在图形界面(示例性示出了图形界面410-1和图形界面410-2)显示用户进行数据处理逻辑配置的交互界面,接收用户的数据处理逻辑配置操作,并向第二服务器202中部署的第二服务系统发送配置的数据处理逻辑。
第一服务器201用于部署第一服务系统,所述第一服务系统用于:获取与第一服务系统异构的第二服务系统的数据处理请求,所述数据处理请求包括所述第二服务系统中使用的待处理的数据集的版本信息和针对所述数据集的数据处理逻辑;其中,所述数据集中的数据记录为从所述第一服务系统中同步得到的;从所述第一服务系统使用的数据集中,确定与所述数据集的版本信息匹配的待处理的第一数据记录;基于所述数据集的数据处理逻辑,对所述第一数据记录进行处理。
第二服务器202用于部署第二服务系统,所述第二服务系统用于:获取第二服务系统中使用的待处理的数据集中的各数据记录和所述数据集的版本信息;其中,所述数据集中的数据记录为从与所述第二服务系统异构的第一服务系统中同步得到的;基于所述数据集中的各数据记录,确定针对所述数据集的数据处理逻辑;基于所述版本信息和所述数据集的数据处理逻辑,确定数据处理请求,并将所述数据处理请求发送至所述第一服务系统,以使所述第一服务系统从所述第一服务系统使用的数据集中,确定与所述版本信息匹配的待处理的第一数据记录,并基于所述数据集的数据处理逻辑,对所述第一数据记录进行处理。
在一些实施例中,第一服务器201和第二服务器202均可以是独立的物理服务器,也可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本发明实施例中不做限制。
此外,本申请实施例涉及的数据处理系统也可以是应用于区块链系统的分布式系统,第一服务器201和第二服务器202均可以实施为区块链上的节点。该分布式系统可以是由多个节点和客户端形成的分布式节点,节点可以是接入网络中的任意形式的计算设备,如服务器、用户终端等,节点之间形成点对点(P2P,Peer To Peer)网络。
参见图2A,图2A是本申请实施例提供的数据处理设备201的结构示意图,图2A所示的数据处理设备201包括:至少一个处理器210、存储器250、至少一个网络接口220和用户接口230。数据处理设备201中的各个组件通过总线系统240耦合在一起。可理解,总线系统240用于实现这些组件之间的连接通信。总线系统240除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2A中将各种总线都标为总线系统240。
处理器210可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
用户接口230包括使得能够呈现媒体内容的一个或多个输出装置231,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口230还包括一个或多个输入装置232,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
存储器250可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器250可选地包括在物理位置上远离处理器210的一个或多个存储设备。
存储器250包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本申请实施例描述的存储器250旨在包括任意适合类型的存储器。
在一些实施例中,存储器250能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统251,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块252,用于经由一个或多个(有线或无线)网络接口220到达其他计算设备,示例性的网络接口220包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等;
呈现模块253,用于经由一个或多个与用户接口230相关联的输出装置231(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作外围设备和显示内容和信息的用户接口);
输入处理模块254,用于对一个或多个来自一个或多个输入装置232之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在一些实施例中,本申请实施例提供的数据处理装置可以采用软件方式实现,图2A示出了存储在存储器250中的数据处理装置255,其可以是程序和插件等形式的软件,包括以下软件模块:第一获取模块2551、第一确定模块2552和第一处理模块2553,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。
将在下文中说明各个模块的功能。
在另一些实施例中,本申请实施例提供的数据处理装置可以采用硬件方式实现,作为示例,本申请实施例提供的数据处理装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的那件存储方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application Specific IntegratedCircuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)或其他电子元件。
参见图2B,图2B是本申请实施例提供的数据处理设备202的结构示意图,图2B所示的数据处理设备202包括:至少一个处理器310、存储器350、至少一个网络接口320和用户接口330。数据处理设备202中的各个组件通过总线系统340耦合在一起。可理解,总线系统340用于实现这些组件之间的连接通信。总线系统340除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2B中将各种总线都标为总线系统340。
处理器310可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、DSP,或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
用户接口330包括使得能够呈现媒体内容的一个或多个输出装置331,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口330还包括一个或多个输入装置332,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
存储器350可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器350可选地包括在物理位置上远离处理器310的一个或多个存储设备。
存储器350包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是ROM,易失性存储器可以是RAM。本申请实施例描述的存储器350旨在包括任意适合类型的存储器。
在一些实施例中,存储器350能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统351,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块352,用于经由一个或多个(有线或无线)网络接口320到达其他计算设备,示例性的网络接口320包括:蓝牙、WiFi和USB等;
呈现模块353,用于经由一个或多个与用户接口330相关联的输出装置331(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作外围设备和显示内容和信息的用户接口);
输入处理模块354,用于对一个或多个来自一个或多个输入装置332之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在一些实施例中,本申请实施例提供的数据处理装置可以采用软件方式实现,图2B示出了存储在存储器350中的数据处理装置355,其可以是程序和插件等形式的软件,包括以下软件模块:第四获取模块3551、第五确定模块3552和第二发送模块3553,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。
将在下文中说明各个模块的功能。
在另一些实施例中,本申请实施例提供的数据处理装置可以采用硬件方式实现,作为示例,本申请实施例提供的数据处理装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的那件存储方法,例如,硬件译码处理器形式的处理器可以采用一个或多个ASIC、DSP、PLD、CPLD、FPGA或其他电子元件。
下面将结合本申请实施例提供的终端或服务器的示例性应用和实施,说明本申请实施例提供的数据处理方法。
参见图3,图3是本申请实施例提供的数据处理方法的一个可选的流程示意图,下面将结合图3示出的步骤进行说明,下述步骤的执行主体可以是前文的终端或第一服务器。
在步骤S101中,获取与第一服务系统异构的第二服务系统的数据处理请求,所述数据处理请求包括所述第二服务系统中使用的待处理的数据集的版本信息和针对所述数据集的数据处理逻辑;其中,所述数据集中的数据记录为从所述第一服务系统中同步得到的。
这里,第一服务系统和第二服务系统为异构系统。异构系统是指技术体系架构不相同的系统,比如采用不同语言开发的系统、运行在不同系统平台上的系统、采用不同数据库进行数据存储的系统等均为由不同架构组成的异构系统。异构系统由于体系、架构不同,所以消息数据等的组织方式也存在不同,不容易进行信息同步、共享,需要通过接口等方式互相访问数据。第一服务系统和第二服务系统可以部署在同一服务器终端上,也可以分开部署,部署方式可以是独立部署在单独的服务器上,也可以采用分布式的方式进行部署,这里并不限定。在实施时,第一服务系统和第二服务系统均可以包括至少一个服务,本领域技术人员可以根据实际情况确定第一服务系统和第二服务系统分别包括的服务,这里并不限定。
对于待处理的数据集,第一服务系统和第二服务系统中可以分别存储一份该数据集,数据集中可以包括至少一个数据记录,第一服务系统和第二服务系统可以分别使用各自存储的数据集完成不同的业务需求。第一服务系统和第二服务系统中使用的数据集可以分别采用合适的方式进行存储,例如,可以存储在内存或文件系统中,也可以存储在数据库中。待处理的数据集可以是在第一服务系统中进行维护的,包括但不限于在第一服务系统中进行该数据集的增加、删除、修改等。在实施时,第一服务系统中使用的该数据集可以是用户在第一服务系统中录入的,也可以是第一服务系统根据实际需求生成的,还可以是第一服务系统从其他服务系统中同步得到的,这里并不限定。
第二服务系统中使用的待处理的数据集中的数据记录是从第一服务系统中同步得到的,同步的方式可以包括但不限于订阅、定时拉取等中的至少一种。第二服务系统每一次从第一服务系统中进行数据记录同步后得到的数据集可以具有一个数据集的版本信息,该版本信息可以包括一个版本号或版本标识,基于数据集当前的版本信息,可以确定该数据集中当前包括的数据记录。例如,第二服务系统第一次从第一服务系统中进行数据记录同步后,得到的数据集会对应一个版本信息,在第二服务系统第二次从第一服务系统中进行数据记录同步后,得到的数据集会对应一个新的版本信息。在实施时,第二服务系统中使用的待处理的数据集的版本信息,可以是第二服务系统每一次从第一服务系统中进行数据记录同步时第一服务系统发送给第二服务系统的,也可以是第二服务系统基于第二服务系统中使用的待处理的数据集中的数据记录确定的,这里并不限定。
数据处理请求可以是第二服务系统发送给第一服务系统的请求。数据处理请求中可以包括第二服务系统中使用的数据集的版本信息和针对该数据集的数据处理逻辑。针对数据集的数据处理逻辑可以是根据实际业务需求对数据集中的数据记录进行处理的逻辑,比如对数据集中的数据记录进行的增加、修改、删除等处理逻辑。在实施时,针对数据集的数据处理逻辑可以是用户在第二服务系统中根据实际业务需求配置的,也可以是第二服务系统中设置的定时任务定时基于当前数据集中的数据记录和实际业务需求自动生成的。
在步骤S102中,从所述第一服务系统使用的数据集中,确定与所述数据集的版本信息匹配的待处理的第一数据记录。
这里,由于第二服务系统从完成上一次数据集的数据记录同步到第一服务系统接收到第二服务系统的数据处理请求之间存在一个时间窗口,在该时间窗口内第一服务系统中使用的数据集中的数据记录可能会发生变化。与数据集的版本信息匹配的待处理的第一数据记录是指该版本信息对应的数据集中包括的数据记录,而在该版本信息之后新增的数据记录则与该版本信息不匹配。在实施时,可以利用第二服务系统中使用的待处理的数据集的版本信息,从第一服务系统使用的数据集中,筛选出与该版本信息匹配的待处理的第一数据记录。例如,第一服务系统中可以存储数据集的版本信息与数据记录之间的映射关系,通过查询该映射关系,可以确定与该版本信息匹配的待处理的第一数据记录。再如,数据集的每一数据记录中可以包括一个可以表征该数据记录所属版本的属性值,通过比较数据集中的每一数据记录的该属性值与版本信息,确定每一数据记录是否与该版本信息匹配。
在步骤S103中,基于所述数据集的数据处理逻辑,对所述第一数据记录进行处理。
这里,数据集的数据处理逻辑可以是针对第一数据记录中的全部数据记录进行处理的逻辑,例如,对第一数据记录中每一数据记录的特定字段进行修改、为第一数据记录中的每一数据记录增加特定属性等。第一服务系统可以基于该数据处理逻辑,对第一数据记录中的每一数据记录执行该数据处理逻辑。
数据集的数据处理逻辑也可以是针对第一数据记录中满足数据筛选条件的数据记录进行处理的逻辑,数据处理逻辑中可以包括数据筛选条件和针对满足该筛选条件的数据记录的处理操作。例如,对第一数据记录中修改级别大于级别阈值的数据记录的特定字段进行修改、对第一数据记录中具有指定标识的数据记录的特定字段进行修改、为第一数据记录中状态为有效的每一数据记录增加特定属性等。第一服务系统可以基于数据处理逻辑中的数据筛选条件从第一数据记录中筛选出目标数据记录,并对该目标数据记录进行执行数据处理逻辑中的处理操作。
本申请实施例中,通过获取与第一服务系统异构的第二服务系统的数据处理请求,数据处理请求包括第二服务系统中使用的待处理的数据集的版本信息和针对数据集的数据处理逻辑;其中,数据集中的数据记录为从第一服务系统中同步得到的;从第一服务系统使用的数据集中,确定与数据集的版本信息匹配的待处理的第一数据记录;基于数据集的数据处理逻辑,对第一数据记录进行处理。这样,由于在异构的第一服务系统与第二服务系统之间进行数据处理逻辑交互的过程中携带了待处理的数据集的版本信息,基于该版本信息确定第一服务系统使用的数据集中待处理的第一数据记录,可以避免第一服务系统与第二服务系统之间数据未同步导致的数据处理不准确的问题,从而可以可靠地在异构系统中完成对数据集中数据记录的处理逻辑,保证数据处理逻辑最终结果的一致性。
在一些实施例中,参见图4,图4是本申请实施例提供的数据处理方法的一个可选的流程示意图,基于图3,所述数据集中的每一数据记录具有一属性值,在向所述数据集中新增数据记录的过程中,每一新增的数据记录的所述属性值相对前一新增的数据记录的所述属性值是单调变化的,该方法还可以执行如下步骤S401至步骤S403。下面将结合各步骤进行说明,下述步骤的执行主体可以是前文的终端或第一服务器。
在步骤S401中,获取所述第一服务系统中使用的数据集中当前的每一数据记录。
这里,数据集中的每一数据记录具有一属性值,在向数据集中新增数据记录的过程中,每一新增的数据记录的该属性值相对前一新增的数据记录的该属性值是单调变化的。在实施时,每一新增的数据记录的该属性值相对前一新增的数据记录的该属性值可以是单调递增的,比如数据记录的生成时间、自增ID等,每一新增的数据记录的该属性值相对前一新增的数据记录的该属性值也可以是单调递减的,比如数据记录的自减ID等。本领域技术人员可以根据实际情况选择合适的属性值,这里并不限定。
在步骤S402中,基于每一所述数据记录的所述属性值,确定所述数据集当前的版本信息。
这里,由于在向数据集中新增数据记录的过程中,每一新增的数据记录的该属性值相对前一新增的数据记录的该属性值是单调变化的,而版本信息可以用来区分数据集中当前包括的每一数据记录与后续新增的数据记录,因而数据集当前的版本信息可以基于数据集中当前的每一数据记录的属性值确定的。在实施时,版本信息可以是区分当前数据集中已有的数据记录的属性值与后续新增的数据记录的属性值的临界值,也可以是包括当前数据集中已有的数据记录的属性值,但不包括后续新增的数据记录的属性值的数值区间。
例如,在每一新增的数据记录的该属性值相对前一新增的数据记录的该属性值是单调递增的情况下,可以将各数据记录的属性值中的最大值确定为数据集当前的版本信息,也可以将各数据记录的属性值中最小值到最大值之间的数值区间确定为数据集当前的版本信息。
再如,在每一新增的数据记录的该属性值相对前一新增的数据记录的该属性值是单调递减的情况下,可以将各数据记录的属性值中的最小值确定为数据集当前的版本信息,也可以将各数据记录的属性值中最小值到最大值之间的数值区间确定为数据集当前的版本信息。
在步骤S403中,将每一所述数据记录和所述版本信息同步至所述第二服务系统。
这里,第一服务系统可以采用消息推送的方式将每一数据记录和数据集当前的版本信息同步至第二服务系统。第二服务系统也可以定时向第一服务系统发送数据同步请求,第二服务系统可以在接收到数据同步请求后,将每一数据记录和数据集当前的版本信息返回给第一服务系统。
需要说明的是,上述步骤S401至步骤S403在实施时,并不限于如图4所示的执行顺序,例如,还可以在步骤S103之后执行上述步骤S401至步骤S403。
在一些实施例中,在向所述数据集中新增数据记录的过程中,每一新增的数据记录的所述属性值相对前一新增的数据记录的所述属性值是单调递增的。上述步骤S402可以通过如下步骤S421实现,上述步骤S102可以通过如下步骤S422实现。
在步骤S421中,将各数据记录的所述属性值中的最大值,确定为所述数据集当前的版本信息。
这里,每一新增的数据记录的所述属性值相对前一新增的数据记录的所述属性值是单调递增的,将各数据记录的属性值中的最大值确定为数据集当前的版本信息。这样,当前数据集中每一数据记录的属性值是不超过数据集当前的版本信息的,后续新增的数据记录的属性值则会超过该版本信息,从而版本信息可以区分数据集中当前包括的每一数据记录与后续新增的数据记录。
在步骤S422中,将所述第一服务系统使用的数据集中属性值不超过所述版本信息的数据记录,确定为与所述版本信息匹配的待处理的第一数据记录。
这里,第一服务系统使用的数据集中属性值不超过该版本信息的数据记录,为第二服务系统在最近一次数据记录同步时第一服务系统使用的数据集中已有的数据记录,也即与版本信息匹配的待处理的第一数据记录。
在一些实施例中,所述数据记录的属性值包括所述数据记录的生成时间或所述数据记录在所述数据集中的自增标识。例如,属性值可以是表示数据记录的生成时间的时间戳或者数据记录在数据库中的自增的索引ID等。
本申请实施例中,数据集中的每一数据记录具有一属性值,在向数据集中新增数据记录的过程中,每一新增的数据记录的属性值相对前一新增的数据记录的属性值是单调变化的,通过获取第一服务系统中使用的数据集中当前的每一数据记录,基于每一数据记录的属性值,确定数据集当前的版本信息。这样,可以简单快速地确定数据集当前的版本信息,从而可以将每一所述数据记录和版本信息同步至第二服务系统。
在一些实施例中,参见图5,图5是本申请实施例提供的数据处理方法的一个可选的流程示意图,基于图3,所述第一服务系统包括数据处理服务,所述第二服务系统包括业务逻辑服务,上述步骤S101可以通过如下步骤S501实现。下面将结合各步骤进行说明,下述步骤的执行主体可以是前文的终端或第一服务器。
在步骤S501中,所述数据处理服务接收所述业务逻辑服务发送的数据处理请求;所述数据处理请求中的数据处理逻辑为所述业务逻辑服务基于所述第二服务系统中使用的待处理的数据集中的各数据记录确定的。
这里,第一服务系统可以包括数据处理服务,数据处理服务可以接收数据处理请求,并基于该数据处理请求对第一服务系统中使用的数据集中的数据记录进行相应的处理。在实施时,数据处理服务可以是可独立部署的应用程序或微服务等,也可以是第一服务系统中应用程序的一个线程,本领域技术人员可以根据实际情况采用任意合适的方式实现数据处理服务,这里并不限定。
第二服务系统可以包括业务逻辑服务,业务逻辑服务可以基于第二服务系统中使用的待处理的数据集中的各数据记录确定的针对该数据集的数据处理逻辑,并生成携带待处理的数据集的版本信息及该数据处理逻辑的数据处理请求,将该数据处理请求发送至第一服务系统。在实施时,业务逻辑服务可以是可独立部署的应用程序或微服务等,也可以是第二服务系统中应用程序的一个线程,本领域技术人员可以根据实际情况采用任意合适的方式实现业务逻辑服务,这里并不限定。
数据处理请求中的数据处理逻辑可以是根据实际业务需求对数据集中的数据记录进行处理的逻辑。在实施时,业务逻辑服务中可以基于第二服务系统中使用的待处理的数据集中的各数据记录,采用采用默认的方式生成数据处理逻辑,也可以基于用户配置的逻辑信息和第二服务系统中使用的待处理的数据集中的各数据记录,确定数据处理逻辑。
在一些实施例中,所述第一服务系统还包括数据访问服务,所述第二服务系统还包括数据同步服务,该方法还可以执行如下步骤S511至步骤S513。
在步骤S511中,所述数据访问服务在确定所述第一服务系统中使用的数据集中有新增的数据记录的情况下,获取所述数据集中当前的每一数据记录。
这里,第一服务系统可以包括数据访问服务,数据访问服务可以向第二服务系统提供基于版本信息的数据集的数据记录访问能力。数据访问服务可以在确定第一服务系统中使用的数据集中有新增的数据记录的情况下,获取数据集中当前的每一数据记录。在实施时,数据访问服务可以是可独立部署的应用程序或微服务等,也可以是第一服务系统中应用程序的一个线程,本领域技术人员可以根据实际情况采用任意合适的方式实现数据访问服务,这里并不限定。
在步骤S512中,所述数据访问服务基于每一所述数据记录的所述属性值,确定所述数据集当前的版本信息。
这里,步骤S512对应于前述步骤S402,在实施时可以参照步骤S402的具体实施方式。
在步骤S513中,所述数据访问服务将每一所述数据记录和所述版本信息发送至所述数据同步服务,使得所述数据同步服务利用每一所述数据记录更新所述第二服务系统中使用的数据集。
这里,第二服务系统可以包括数据同步服务,数据同步服务可以通过数据访问服务从第一服务系统中同步第一服务系统中使用的数据集中的数据记录和数据集当前的版本信息,并利用每一数据记录更新第二服务系统中使用的数据集。第二服务系统中使用的更新后的数据集中每一数据记录都对应于数据集当前的版本信息。在实施时,数据同步服务可以是可独立部署的应用程序或微服务等,也可以是第二服务系统中应用程序的一个线程,本领域技术人员可以根据实际情况采用任意合适的方式实现数据同步服务,这里并不限定。
需要说明的是,上述步骤S511至步骤S513在实施时,可以在步骤S501之前执行,还可以在步骤S103之后执行,这里并不限定。
本申请实施例中,第一服务系统包括数据处理服务,第二服务系统包括业务逻辑服务,数据处理服务接收业务逻辑服务发送的数据处理请求,并基于该数据处理请求对第一服务系统中使用的数据集中的数据记录进行相应的处理。这样,可以对第一服务系统和第二服务系统进行功能解耦,从而可以在一定程度上提升第一服务系统和第二服务系统的整体服务性能,并能便于系统的维护和更新。进一步地,第一服务系统还包括数据访问服务,用于向第二服务系统提供基于版本信息的数据集的数据记录访问能力,第二服务系统还包括数据同步服务,用于通过数据访问服务从第一服务系统中同步第一服务系统中使用的数据集中的数据记录和数据集当前的版本信息,并利用每一数据记录更新第二服务系统中使用的数据集。这样,可以进一步地降低第一服务系统和第二服务系统中各服务功能之间的耦合性,从而可以进一步提升第一服务系统和第二服务系统的整体服务性能,并能进一步便于系统的维护和更新。
在一些实施例中,参见图6,图6是本申请实施例提供的数据处理方法的一个可选的流程示意图,基于图3,该方法还可以执行如下步骤S601至步骤S602。下面将结合各步骤进行说明,下述步骤的执行主体可以是前文的终端或第一服务器。
在步骤S601中,从所述第一服务系统使用的数据集中,确定与所述版本信息不匹配的待处理的第二数据记录。
这里,与版本信息不匹配的待处理的第二数据记录是指第二服务系统最近一次从第一服务系统中同步完数据记录后第一服务系统中新增的数据记录。第二服务系统中使用的待处理的数据集的版本信息为第二服务系统最近一次从第一服务系统中同步的数据集中的数据记录的版本信息。基于该版本信息,可以区分同步时第一服务系统中已有的数据记录和同步后第一服务系统中新增的数据记录,也即可以确定与版本信息不匹配的待处理的第二数据记录。
在实施时,可以利用第二服务系统中使用的待处理的数据集的版本信息,从第一服务系统使用的数据集中,筛选出与该版本信息不匹配的待处理的第二数据记录。例如,第一服务系统中可以存储数据集的版本信息与数据记录之间的映射关系,通过查询该映射关系,可以确定与该版本信息匹配的待处理的第一数据记录,进而可以确定第一服务系统使用的数据集中与该版本信息不匹配的待处理的第二数据记录。再如,数据集的每一数据记录中可以包括一个可以表征该数据记录所属版本的属性值,通过比较数据集中的每一数据记录的该属性值与版本信息,确定每一数据记录是否与该版本信息匹配。
在步骤S602中,基于预设的处理逻辑,对所述第二数据记录进行处理。
这里,预设的处理逻辑可以是用户预先根据实际业务需求设定的对数据集中的第二数据记录进行处理的逻辑,也可以是第一系统默认的处理逻辑。在实施时,预设的处理逻辑与第一数据记录的处理逻辑(也即数据处理请求中携带的数据处理逻辑)可以相同,也可以不同。
需要说明的是,上述步骤S601至步骤S602在实施时,并不限于如图6所示的执行顺序,例如,还可以在步骤S102之后执行上述步骤S601至步骤S602。
本申请实施例中,从第一服务系统使用的数据集中,确定与版本信息不匹配的待处理的第二数据记录,并基于预设的处理逻辑,对第二数据记录进行处理。这样,由于第二数据记录为第二服务系统最近一次从第一服务系统中同步完数据记录后第一服务系统中新增的数据记录,通过预先设定对新增的数据记录的处理逻辑,可以保证对新增的数据记录的处理逻辑的一致性,从而可以进一步提升在异构系统中对数据集中数据记录的处理的可靠性,进而可以进一步保证数据处理逻辑最终结果的一致性。
参见图7,图7是本申请实施例提供的数据处理方法的一个可选的流程示意图,下面将结合图7示出的步骤进行说明,下述步骤的执行主体可以是前文的终端或第二服务器。
在步骤S701中,获取第二服务系统中使用的待处理的数据集中的各数据记录和所述数据集的版本信息;其中,所述数据集中的数据记录为从与所述第二服务系统异构的第一服务系统中同步得到的。
这里,第二服务系统中使用的待处理的数据集的版本信息可以是从第一服务系统中同步数据集中的数据记录的同时,从第一服务系统中同步得到的,也可以是第二服务系统基于该数据集中当前包括的数据记录确定的,这里并不限定。在实施时,可以根据实际业务需求在第二服务系统中配置数据处理任务,通过定时触发该数据处理任务,可以获取第二服务系统中使用的待处理的数据集中的各数据记录和该数据集的版本信息,并基于该数据集中的各数据记录确定针对该数据集的数据处理逻辑,第二服务系统也可以响应于用户的数据处理操作,获取第二服务系统中使用的待处理的数据集中的各数据记录和所述数据集的版本信息。
在一些实施例中,第二服务系统可以定时将所述第一服务系统使用的数据集中的数据记录同步至所述第二服务系统使用的数据集中,并获取所述第一服务系统使用的数据集当前的版本信息。
在步骤S702中,基于所述数据集中的各数据记录,确定针对所述数据集的数据处理逻辑。
这里,对数据集的数据处理逻辑可以是根据实际业务需求对数据集中的数据记录进行处理的逻辑。在实施时,第二服务系统可以基于第二服务系统中使用的待处理的数据集中的各数据记录,生成默认的数据处理逻辑,也可以响应于用户的数据处理逻辑配置操作,基于用户配置的逻辑信息和第二服务系统中使用的待处理的数据集中的各数据记录,确定数据处理逻辑。
在步骤S703中,基于所述版本信息和所述数据集的数据处理逻辑,确定数据处理请求,并将所述数据处理请求发送至所述第一服务系统,以使所述第一服务系统从所述第一服务系统使用的数据集中,确定与所述版本信息匹配的待处理的第一数据记录,并基于所述数据集的数据处理逻辑,对所述第一数据记录进行处理。
这里,数据处理请求中可以携带版本信息和数据集的数据处理逻辑。通过将数据处理请求发送至第一服务系统,第一服务系统可以基于数据处理请求中携带的版本信息和数据处理逻辑,从第一服务系统使用的数据集中,确定与版本信息匹配的待处理的第一数据记录,并基于数据集的数据处理逻辑,对第一数据记录进行处理。
在一些实施例中,所述数据集中的每一数据记录具有一属性值,在所述第一服务系统向所述数据集中新增数据记录的过程中,每一新增的数据记录的所述属性值相对前一新增的数据记录的所述属性值是单调变化的。上述步骤S701可以通过如下步骤S711至步骤S712实现:在步骤S711中,获取所述第二服务系统中使用的待处理的数据集中的每一数据记录;在步骤S712中,基于每一所述数据记录的所述属性值,确定所述数据集的版本信息。
在一些实施例中,在所述第一服务系统向所述数据集中新增数据记录的过程中,每一新增的数据记录的所述属性值相对前一新增的数据记录的所述属性值是单调递增的。上述步骤S712可以通过如下步骤S7121实现:步骤S7121,将各数据记录的所述属性值中的最大值,确定为所述数据集的版本信息。
在一些实施例中,所述第一服务系统包括数据处理服务,所述第二服务系统包括业务逻辑服务,上述步骤S702可以通过如下步骤S721实现:在步骤S721中,所述业务逻辑服务基于所述数据集中的各数据记录,确定针对所述数据集的数据处理逻辑。上述步骤S703可以通过如下步骤S731至步骤S732实现:在步骤S731中,所述业务逻辑服务基于所述版本信息和所述数据集的数据处理逻辑,确定数据处理请求;在步骤S732中,所述业务逻辑服务将所述数据处理请求发送至所述数据处理服务,以使所述数据处理服务从所述第一服务系统使用的数据集中,确定与所述版本信息匹配的待处理的第一数据记录,并基于所述数据集的数据处理逻辑,对所述第一数据记录进行处理。
在一些实施例中,所述第一服务系统还包括数据访问服务,所述第二服务系统还包括数据同步服务。该方法还可以执行如下步骤S741至步骤S742:在步骤S741中,所述数据同步服务接收所述数据访问服务发送的所述第一服务系统中使用的数据集中的每一数据记录和所述数据集当前的版本信息,所述数据集当前的版本信息为所述数据访问服务基于每一所述数据记录的所述属性值确定的;在步骤S742中,所述数据同步服务利用每一所述数据记录更新所述第二服务系统中使用的数据集。这里,可以采用增量更新或全量更新等方式将每一所述数据记录更新至第二服务系统中使用的数据集中。
本申请实施例中,获取第二服务系统中使用的待处理的数据集中的各数据记录和该数据集的版本信息;其中,该数据集中的数据记录为从与第二服务系统异构的第一服务系统中同步得到的;基于数据集中的各数据记录,确定针对该数据集的数据处理逻辑;基于该版本信息和该数据集的数据处理逻辑,确定数据处理请求,并将数据处理请求发送至第一服务系统,以使第一服务系统从第一服务系统使用的数据集中,确定与版本信息匹配的待处理的第一数据记录,并基于数据集的数据处理逻辑,对第一数据记录进行处理。这样,由于在异构的第一服务系统与第二服务系统之间进行数据处理逻辑交互的过程中携带了待处理的数据集的版本信息,基于该版本信息确定第一服务系统使用的数据集中待处理的第一数据记录,可以避免第一服务系统与第二服务系统之间数据未同步导致的数据处理不准确的问题,从而可以可靠地在异构系统中完成对数据集中数据记录的处理逻辑,保证数据处理逻辑最终结果的一致性。
下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。以分布式异构系统中的数据交互为例,本申请实施例提供一种基于版本管理的数据处理方法,该方法可应用于分布式的异构系统之间,通过在交互数据中附加上数据集的版本信息,使得异构系统之间能可靠地完成数据处理逻辑,并保证最终结果的一致性。
以异构系统A和异构系统B之间的数据交互为例,该方法可以实现异构系统A与异构系统B之间的数据交互,其中,异构系统A可以为设定的业务领域提供服务能力,并对异构系统B存在数据依赖,需要与异构系统B进行数据交互。异构系统B可以为异构系统A提供基础服务支撑,对于异构系统B内部存储的数据,会实现版本管理机制。参见图8A,图8A为本申请实施例提供的数据处理方法的实现架构示意图,异构系统A中可以包括两个服务模块:数据同步服务811和业务逻辑服务812。数据同步服务811可以用于同步异构系统B中带有版本信息的数据集合,并对同步的带有版本信息的数据集合进行缓存,同步方式可以是订阅数据或者拉取数据。业务逻辑服务812可以处理异构系统A中业务层面相关的逻辑,比如规则不生效配置、白名单配置等等。业务逻辑服务812在实现业务层面相关的逻辑时,可能会产生对异构系统B的数据处理请求,例如对异构系统B中数据集合中数据记录的增删改等请求(如规则数据记录的增加、删除、修改、无效配置等),该数据处理请求会带上异构系统A中当前已同步数据集合的版本信息,以便于异构系统B能基于该版本信息正确的进行数据处理。异构系统B可以包括两个服务模块:数据访问服务821和数据处理服务822,数据访问服务821可以用于通过查询数据库向异构系统A提供基于版本信息的数据访问能力,提供的访问方式可以是数据推送或者被动拉取数据。数据处理服务822可以接收带有版本信息的数据处理请求,并进行相关的数据处理。此外,数据处理服务822还可以与异构系统A预先约定对于数据处理请求携带的版本信息对应的数据记录之外的其它数据记录的默认处理逻辑。
对于异构系统B内部存储的数据的版本管理机制,可以利用数据集合中每一数据记录的数据属性中任何具备单调递增特性的属性信息,实现数据集合的版本管理机制。比如,可以基于数据集合中每一数据记录的产生时间或者基于数据记录的自增数据ID等,确定数据集合的版本信息。
在一些实施例中,可以基于数据集合中每一数据记录的产生时间确定数据集合的版本信息。由于时间具备单调递增的特性,当数据集合表中插入一批数据记录后,可以选取各数据记录产生时间的最大值作为数据集合当前的版本号。参见图8B,版本1的数据集合包括data1和data2两条数据记录,对应的版本号为data1和data2的产生时间中的最大值1613705790,版本2的数据集合新增了data3和data4两条数据记录,对应的版本号为data1、data2、data3和data4的产生时间中的最大值16113705813。版本号可以作为版本信息将被用于两个异构系统之间的数据交互中,以保证数据处理逻辑的正确执行,从而保证数据处理结果的一致性。
在一些实施例中,可以基于数据集合中每一数据记录的自增数据ID确定数据集合的版本信息。由于自增数据ID在不发生回绕的情况下具备单调递增特性,当数据集合表中插入一批数据记录后,可以选取各数据记录自增数据ID的最大值作为数据集合当前的版本号。参见图8C,版本1的数据集合包括data1和data2两条数据记录,对应的版本号为data1和data2的自增数据ID中的最大值2;版本2的数据集合中新增了data3和data4两条数据记录,对应的版本号为data1、data2、data3和data4的自增数据ID中的最大值4。
参见图8D,图8D示出了本申请实施例提供的一种数据处理方法的实现流程示意图。如图8D所示,该方法以基于数据集合中每一数据记录的产生时间确定数据集合的版本信息为例,包括如下步骤S801至步骤S805:
步骤S801,异构系统B将最新数据集合同步至异构系统A;
这里,如图8D所示,假设数据同步发生时,异构系统B的数据集合中有两条数据记录data1和data2,则数据集合处于版本1,版本号为data1和data2的产生时间中的最大值1613705790。异构系统B可以通过数据访问服务821将数据集合表中的数据集合携带版本号发送给异构系统A中的数据同步服务811。
步骤S802,异构系统A接收版本1的数据集合;
这里,异构系统A可以通过数据同步服务接收版本1的数据集合,来实现数据同步。完成数据同步后,异构系统A得到版本1对应的数据集合,即版本号1613705790的数据集合,包括数据记录data1和data2。
步骤S803,异构系统B中新增数据,数据集合的版本号递增;
这里,数据同步完成后,异构系统B中数据集合发生变更,新增了两条数据data3和data4,此时数据集合处于版本2,版本号为data1、data2、data3和data4的产生时间中的最大值16113705813。
步骤S804,异构系统A基于版本1的数据集合确定进行数据交互,并向异构系统B发送数据处理请求;
这里,异构系统A可以通过业务逻辑服务812基于版本1的数据集合确定数据处理逻辑,并向异构系统B的数据处理服务822发送数据处理请求。数据处理请求可以是根据业务需求发起的,数据处理请求中可以包括针对数据集合的数据处理逻辑,比如将指定的规则数据设置为无效状态等。此时,数据处理请求的参数中还会携带异构系统中使用的数据集合中的版本信息,可以包括版本1对应的版本号1613705790。
步骤S805,异构系统B基于数据处理请求中的数据处理逻辑和版本信息,对数据集合中与该版本信息匹配的数据记录进行处理,并对新增数据采用预设的处理逻辑进行处理。
这里,异构系统B可以通过数据处理服务822接收业务逻辑服务812发送的数据处理请求,并基于数据处理请求中的数据处理逻辑,对数据集合中与版本信息匹配的数据记录进行处理。数据处理服务822可以通过数据处理请求中携带的数据集合的版本信息与每一数据记录的产生时间进行比较,来确定数据集合中与该版本信息匹配的数据记录。例如,数据处理请求中携带的数据集合的版本信息为版本1的版本号1613705790,可以比较版本2和版本1的数据差异,以筛选出新增数据记录data3和data4。对于版本1的数据集合中的数据data1和data2可以基于数据处理请求中的数据处理逻辑进行处理。对于新增数据data3和data4,可以采取预先设定的默认处理动作,比如对新增规则数据可以采用默认设置为无效的方式,将新增的规则数据补充到当前无效规则列表中。假设数据记录data的产生时间表示为create_time,版本1对应版本号表示为v1_version_id,则可以采用如下公式1-1筛选出数据集合中的新增数据:
create_time>v1_version_id (1-1)。
需要说明的是,上述异构系统A在实施时可以作为前述的第二服务系统,异构系统B在实施时可以作为前述的第一服务系统。
本申请实施例提供的数据处理方法,可以避免第一服务系统与第二服务系统之间数据未同步导致的数据处理不准确的问题,从而可以可靠地在异构系统中完成对数据集中数据记录的处理逻辑,保证数据处理逻辑最终结果的一致性。
下面继续说明本申请实施例提供的数据处理装置255的实施为软件模块的示例性结构,在一些实施例中,如图2A所示,存储在存储器250的数据处理装置255中的软件模块可以包括:
第一获取模块2551,用于获取与第一服务系统异构的第二服务系统的数据处理请求,所述数据处理请求包括所述第二服务系统中使用的待处理的数据集的版本信息和针对所述数据集的数据处理逻辑;其中,所述数据集中的数据记录为从所述第一服务系统中同步得到的;
第一确定模块2552,用于从所述第一服务系统使用的数据集中,确定与所述数据集的版本信息匹配的待处理的第一数据记录;
第一处理模块2553,用于基于所述数据集的数据处理逻辑,对所述第一数据记录进行处理。
在一些实施例中,所述数据集中的每一数据记录具有一属性值,在向所述数据集中新增数据记录的过程中,每一新增的数据记录的所述属性值相对前一新增的数据记录的所述属性值是单调变化的,所述装置还包括:第二获取模块,用于所述第一服务系统中使用的数据集中当前的每一数据记录;第二确定模块,用于基于每一所述数据记录的所述属性值,确定所述数据集当前的版本信息;第一同步模块,用于将每一所述数据记录和所述版本信息同步至所述第二服务系统。
在一些实施例中,在向所述数据集中新增数据记录的过程中,每一新增的数据记录的所述属性值相对前一新增的数据记录的所述属性值是单调递增的,所述第二确定模块还用于:将各数据记录的所述属性值中的最大值,确定为所述数据集当前的版本信息;所述第一确定模块还用于:将所述第一服务系统使用的数据集中属性值不超过所述版本信息的数据记录,确定为与所述版本信息匹配的待处理的第一数据记录。
在一些实施例中,所述第一服务系统包括数据处理服务,所述第二服务系统包括业务逻辑服务,所述第一获取模块还用于:所述数据处理服务接收所述业务逻辑服务发送的数据处理请求;所述数据处理请求中的数据处理逻辑为所述业务逻辑服务基于所述第二服务系统中使用的待处理的数据集中的各数据记录确定的。
在一些实施例中,所述第一服务系统还包括数据访问服务,所述第二服务系统还包括数据同步服务,所述装置还包括:第三获取模块,用于所述数据访问服务在确定所述第一服务系统中使用的数据集中有新增的数据记录的情况下,获取所述数据集中当前的每一数据记录;第三确定模块,用于所述数据访问服务基于每一所述数据记录的所述属性值,确定所述数据集当前的版本信息;第一发送模块,用于所述数据访问服务将每一所述数据记录和所述版本信息发送至所述数据同步服务,使得所述数据同步服务利用每一所述数据记录更新所述第二服务系统中使用的数据集。
在一些实施例中,所述装置还包括:第四确定模块,用于从所述第一服务系统使用的数据集中,确定与所述版本信息不匹配的待处理的第二数据记录;第二处理模块,用于基于预设的处理逻辑,对所述第二数据记录进行处理。
下面继续说明本申请实施例提供的数据处理装置355的实施为软件模块的示例性结构,在一些实施例中,如图2B所示,存储在存储器350的数据处理装置355中的软件模块可以包括:
第四获取模块3551,用于获取第二服务系统中使用的待处理的数据集中的各数据记录和所述数据集的版本信息;其中,所述数据集中的数据记录为从与所述第二服务系统异构的第一服务系统中同步得到的;
第五确定模块3552,用于基于所述数据集中的各数据记录,确定针对所述数据集的数据处理逻辑;
第二发送模块3553,用于基于所述版本信息和所述数据集的数据处理逻辑,确定数据处理请求,并将所述数据处理请求发送至所述第一服务系统,以使所述第一服务系统从所述第一服务系统使用的数据集中,确定与所述版本信息匹配的待处理的第一数据记录,并基于所述数据集的数据处理逻辑,对所述第一数据记录进行处理。
在一些实施例中,所述装置还包括:第二同步模块,用于定时将所述第一服务系统使用的数据集中的数据记录同步至所述第二服务系统使用的数据集中,并获取所述第一服务系统使用的数据集当前的版本信息。
在一些实施例中,所述数据集中的每一数据记录具有一属性值,在所述第一服务系统向所述数据集中新增数据记录的过程中,每一新增的数据记录的所述属性值相对前一新增的数据记录的所述属性值是单调变化的,所述第四获取模块还用于:获取所述第二服务系统中使用的待处理的数据集中的每一数据记录;基于每一所述数据记录的所述属性值,确定所述数据集的版本信息。
在一些实施例中,在所述第一服务系统向所述数据集中新增数据记录的过程中,每一新增的数据记录的所述属性值相对前一新增的数据记录的所述属性值是单调递增的,所述第四获取模块还用于:将各数据记录的所述属性值中的最大值,确定为所述数据集的版本信息。
在一些实施例中,所述第一服务系统包括数据处理服务,所述第二服务系统包括业务逻辑服务,所述第五确定模块还用于:所述业务逻辑服务基于所述数据集中的各数据记录,确定针对所述数据集的数据处理逻辑;所述第二发送模块还用于:所述业务逻辑服务基于所述版本信息和所述数据集的数据处理逻辑,确定数据处理请求;所述业务逻辑服务将所述数据处理请求发送至所述数据处理服务,以使所述数据处理服务从所述第一服务系统使用的数据集中,确定与所述版本信息匹配的待处理的第一数据记录,并基于所述数据集的数据处理逻辑,对所述第一数据记录进行处理。
在一些实施例中,所述第一服务系统还包括数据访问服务,所述第二服务系统还包括数据同步服务,所述装置还包括:接收模块,用于所述数据同步服务接收所述数据访问服务发送的所述第一服务系统中使用的数据集中的每一数据记录和所述数据集当前的版本信息,所述数据集当前的版本信息为所述数据访问服务基于每一所述数据记录的所述属性值确定的;更新模块,用于所述数据同步服务利用每一所述数据记录更新所述第二服务系统中使用的数据集。
本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例上述的数据处理方法。
本申请实施例提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的数据处理方法,例如,如图3示出的方法。
在一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EP-ROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
综上所述,通过本申请实施例可以避免第一服务系统与第二服务系统之间数据未同步导致的数据处理不准确的问题,从而可以可靠地在异构系统中完成对数据集中数据记录的处理逻辑,保证数据处理逻辑最终结果的一致性。
以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。

Claims (10)

1.一种数据处理方法,其特征在于,包括:
获取与第一服务系统异构的第二服务系统的数据处理请求,所述数据处理请求包括所述第二服务系统中使用的待处理的数据集的版本信息和针对所述数据集的数据处理逻辑;其中,所述数据集中的数据记录为从所述第一服务系统中同步得到的;
从所述第一服务系统使用的数据集中,确定与所述数据集的版本信息匹配的待处理的第一数据记录;
基于所述数据集的数据处理逻辑,对所述第一数据记录进行处理。
2.根据权利要求1所述的方法,其特征在于,所述数据集中的每一数据记录具有一属性值,在向所述数据集中新增数据记录的过程中,每一新增的数据记录的所述属性值相对前一新增的数据记录的所述属性值是单调变化的,所述方法还包括:
获取所述第一服务系统中使用的数据集中当前的每一数据记录;
基于每一所述数据记录的所述属性值,确定所述数据集当前的版本信息;
将每一所述数据记录和所述版本信息同步至所述第二服务系统。
3.根据权利要求2所述的方法,其特征在于,在向所述数据集中新增数据记录的过程中,每一新增的数据记录的所述属性值相对前一新增的数据记录的所述属性值是单调递增的,所述基于每一所述数据记录的所述属性值,确定所述数据集当前的版本信息,包括:
将各数据记录的所述属性值中的最大值,确定为所述数据集当前的版本信息;
所述从所述第一服务系统使用的数据集中,确定与所述数据集的版本信息匹配的待处理的第一数据记录,包括:
将所述第一服务系统使用的数据集中属性值不超过所述版本信息的数据记录,确定为与所述版本信息匹配的待处理的第一数据记录。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
从所述第一服务系统使用的数据集中,确定与所述版本信息不匹配的待处理的第二数据记录;
基于预设的处理逻辑,对所述第二数据记录进行处理。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述第一服务系统包括数据处理服务,所述第二服务系统包括业务逻辑服务,所述获取与第一服务系统异构的第二服务系统的数据处理请求,包括:
所述数据处理服务接收所述业务逻辑服务发送的数据处理请求;所述数据处理请求中的数据处理逻辑为所述业务逻辑服务基于所述第二服务系统中使用的待处理的数据集中的各数据记录确定的。
6.根据权利要求5所述的方法,其特征在于,所述第一服务系统还包括数据访问服务,所述第二服务系统还包括数据同步服务,所述方法还包括:
所述数据访问服务在确定所述第一服务系统中使用的数据集中有新增的数据记录的情况下,获取所述数据集中当前的每一数据记录;
所述数据访问服务基于每一所述数据记录的所述属性值,确定所述数据集当前的版本信息;
所述数据访问服务将每一所述数据记录和所述版本信息发送至所述数据同步服务,使得所述数据同步服务利用每一所述数据记录更新所述第二服务系统中使用的数据集。
7.一种数据处理方法,其特征在于,所述方法包括:
获取第二服务系统中使用的待处理的数据集中的各数据记录和所述数据集的版本信息;其中,所述数据集中的数据记录为从与所述第二服务系统异构的第一服务系统中同步得到的;
基于所述数据集中的各数据记录,确定针对所述数据集的数据处理逻辑;
基于所述版本信息和所述数据集的数据处理逻辑,确定数据处理请求,并将所述数据处理请求发送至所述第一服务系统,以使所述第一服务系统从所述第一服务系统使用的数据集中,确定与所述版本信息匹配的待处理的第一数据记录,并基于所述数据集的数据处理逻辑,对所述第一数据记录进行处理。
8.一种数据处理装置,其特征在于,包括:
第一获取模块,用于获取与第一服务系统异构的第二服务系统的数据处理请求,所述数据处理请求包括所述第二服务系统中使用的待处理的数据集的版本信息和针对所述数据集的数据处理逻辑;其中,所述数据集中的数据记录为从所述第一服务系统中同步得到的;
第一确定模块,用于从所述第一服务系统使用的数据集中,确定与所述数据集的版本信息匹配的待处理的第一数据记录;
第一处理模块,用于基于所述数据集的数据处理逻辑,对所述第一数据记录进行处理。
9.一种数据处理设备,其特征在于,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,存储有可执行指令,用于被处理器执行时,实现权利要求1至7任一项所述的方法。
CN202110553321.4A 2021-05-20 2021-05-20 数据处理方法、装置、设备及计算机可读存储介质 Pending CN113190532A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110553321.4A CN113190532A (zh) 2021-05-20 2021-05-20 数据处理方法、装置、设备及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110553321.4A CN113190532A (zh) 2021-05-20 2021-05-20 数据处理方法、装置、设备及计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN113190532A true CN113190532A (zh) 2021-07-30

Family

ID=76982754

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110553321.4A Pending CN113190532A (zh) 2021-05-20 2021-05-20 数据处理方法、装置、设备及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN113190532A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115243272A (zh) * 2022-07-20 2022-10-25 中国电信股份有限公司 无线接入网及其数据获取方法、通信系统及设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115243272A (zh) * 2022-07-20 2022-10-25 中国电信股份有限公司 无线接入网及其数据获取方法、通信系统及设备
CN115243272B (zh) * 2022-07-20 2024-05-14 中国电信股份有限公司 无线接入网及其数据获取方法、通信系统及设备

Similar Documents

Publication Publication Date Title
US11314698B2 (en) Dynamically performing data processing in a data pipeline system
EP3612954B1 (en) Replication lag-constrained deletion of data in a large-scale distributed data storage system
CN106874281B (zh) 实现数据库读写分离的方法和装置
TW201033832A (en) Programming model for synchronizing browser caches across devices and web services
US8775682B1 (en) Data synchronization with eventual consistency
US10474185B2 (en) Timestamp alignment across a plurality of computing devices
EP2603867B1 (en) Sharing data on mobile devices
JP2021197153A (ja) ワードスロットを識別するための方法及び装置、電子機器、記憶媒体並びにコンピュータプログラム
CN111581115B (zh) 文件处理方法、装置、存储介质、处理器及电子装置
CN112860343A (zh) 配置变更方法、系统、装置、电子设备以及存储介质
JP7366664B2 (ja) オフラインブリーフケース同期
CN113190532A (zh) 数据处理方法、装置、设备及计算机可读存储介质
WO2021082868A1 (zh) 分布式存储系统的数据处理方法、装置及电子设备
CN111581114B (zh) 事件处理方法、装置、存储介质、处理器及电子装置
CN111581113B (zh) 文件更新方法、装置、存储介质、处理器及电子装置
EP4154125A1 (en) Distributed transaction execution in distributed databases
CN113312052A (zh) 一种组件调用方法、装置、电子设备以及存储介质
WO2023193631A1 (zh) 一种请求调度方法、装置、计算机设备和存储介质
CN111131373B (zh) 呼吸机数据同步系统、方法、装置及存储介质
US20200089785A1 (en) Local terminal and synchronization system including the same
US11681682B2 (en) Data processing system and cache update control method
JP6695504B2 (ja) テストデータ作成装置およびテストデータ作成方法
JP6643114B2 (ja) 画像処理装置、その制御方法、及びプログラム
US11232172B2 (en) Collaborative web application and data system
CN115113989A (zh) 事务执行方法、装置、计算设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40048728

Country of ref document: HK

SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination