CN115114360A - 数据对比方法、装置、计算机设备、存储介质 - Google Patents
数据对比方法、装置、计算机设备、存储介质 Download PDFInfo
- Publication number
- CN115114360A CN115114360A CN202210607353.2A CN202210607353A CN115114360A CN 115114360 A CN115114360 A CN 115114360A CN 202210607353 A CN202210607353 A CN 202210607353A CN 115114360 A CN115114360 A CN 115114360A
- Authority
- CN
- China
- Prior art keywords
- comparison
- tree
- data source
- party
- syntax
- 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/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/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
- G06F16/2448—Query languages for particular applications; for extensibility, e.g. user defined types
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/285—Clustering or classification
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种数据对比方法、装置、计算机设备、存储介质和计算机程序产品。所述方法应用于云技术领域、地图数据源的大数据处理技术和人工智能技术领域,包括:将数据对比式转换成第一语法树;对第一语法树的节点进行裁剪和移项处理,得到第二语法树;基于第二语法树中表示第一方数据源的语法分支树,对第一方数据源对应的数据进行处理,得到第一处理结果;将第一处理结果和第二语法树中表示第二方数据源的语法分支树发送至目标设备,以使目标设备基于第二方数据源的语法分支树对第二方数据源对应的数据进行处理,并将处理所得的第二处理结果与第一处理结果进行对比,得到数据对比结果。采用本方法能够快速有效的对多方数据源进行数据对比。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种数据对比方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术
随着计算机技术以及互联网技术的发展,数据成为企业的核心资产,对数据进行保护是保护企业资产的有效手段之一。在对数据进行分析处理的过程中,常常需要对不同机构之间的数据进行对比处理,以提供更加直观的数据分析结果。
然而,目前的数据对比方式中,通常需要把不同参与方的数据源进行汇合,汇合之后对数据进行解析和计算,或者需要访问多方原始数据源,但在实际场景中,不同机构的数据之间大多为独立存储、独立维护,使得这些分散在不同机构的数据源不能集中,形成了“数据孤岛”现象,因而容易导致无法跨多方进行多表查询和计算,尤其是针对包含多方数据源的数据处理任务,给数据分析带来了极大的困难,如何快速有效的对多方数据源进行数据对比成为亟待解决的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种能够快速有效的对多方数据源进行数据对比的数据对比方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种数据对比方法。所述方法包括:将数据对比式转换成第一对比语法树;对所述第一对比语法树的节点进行裁剪和移项处理,得到第二对比语法树;基于所述第二对比语法树中表示第一方数据源的对比语法分支树,对所述第一方数据源对应的数据进行处理,得到第一处理结果;将所述第一处理结果和所述第二对比语法树中表示第二方数据源的对比语法分支树发送至目标设备,以使所述目标设备基于所述第二方数据源的对比语法分支树对所述第二方数据源对应的数据进行处理,并将处理所得的第二处理结果与所述第一处理结果进行对比,得到数据对比结果。
第二方面,本申请还提供了一种数据对比装置。所述装置包括:转换模块,用于将数据对比式转换成第一对比语法树;处理模块,用于对所述第一对比语法树的节点进行裁剪和移项处理,得到第二对比语法树;基于所述第二对比语法树中表示第一方数据源的对比语法分支树,对所述第一方数据源对应的数据进行处理,得到第一处理结果;发送模块,用于将所述第一处理结果和所述第二对比语法树中表示第二方数据源的对比语法分支树发送至目标设备,以使所述目标设备基于所述第二方数据源的对比语法分支树对所述第二方数据源对应的数据进行处理,并将处理所得的第二处理结果与所述第一处理结果进行对比,得到数据对比结果。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:将数据对比式转换成第一对比语法树;对所述第一对比语法树的节点进行裁剪和移项处理,得到第二对比语法树;基于所述第二对比语法树中表示第一方数据源的对比语法分支树,对所述第一方数据源对应的数据进行处理,得到第一处理结果;将所述第一处理结果和所述第二对比语法树中表示第二方数据源的对比语法分支树发送至目标设备,以使所述目标设备基于所述第二方数据源的对比语法分支树对所述第二方数据源对应的数据进行处理,并将处理所得的第二处理结果与所述第一处理结果进行对比,得到数据对比结果。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:将数据对比式转换成第一对比语法树;对所述第一对比语法树的节点进行裁剪和移项处理,得到第二对比语法树;基于所述第二对比语法树中表示第一方数据源的对比语法分支树,对所述第一方数据源对应的数据进行处理,得到第一处理结果;将所述第一处理结果和所述第二对比语法树中表示第二方数据源的对比语法分支树发送至目标设备,以使所述目标设备基于所述第二方数据源的对比语法分支树对所述第二方数据源对应的数据进行处理,并将处理所得的第二处理结果与所述第一处理结果进行对比,得到数据对比结果。
第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:将数据对比式转换成第一对比语法树;对所述第一对比语法树的节点进行裁剪和移项处理,得到第二对比语法树;基于所述第二对比语法树中表示第一方数据源的对比语法分支树,对所述第一方数据源对应的数据进行处理,得到第一处理结果;将所述第一处理结果和所述第二对比语法树中表示第二方数据源的对比语法分支树发送至目标设备,以使所述目标设备基于所述第二方数据源的对比语法分支树对所述第二方数据源对应的数据进行处理,并将处理所得的第二处理结果与所述第一处理结果进行对比,得到数据对比结果。
上述数据对比方法、装置、计算机设备、存储介质和计算机程序产品,通过将数据对比式转换成第一对比语法树;对第一对比语法树的节点进行裁剪和移项处理,得到第二对比语法树;基于第二对比语法树中表示第一方数据源的对比语法分支树,对第一方数据源对应的数据进行处理,得到第一处理结果;将第一处理结果和第二对比语法树中表示第二方数据源的对比语法分支树发送至目标设备,以使目标设备基于第二方数据源的对比语法分支树对第二方数据源对应的数据进行处理,并将处理所得的第二处理结果与第一处理结果进行对比,得到数据对比结果。由于对第一对比语法树的节点进行裁剪和移项处理,得到了第二对比语法树,第二语法树中第一方数据源和第二方数据源分隔在比较运算符的两侧,故可以基于第二对比语法树中表示第一方数据源的对比语法分支树,对第一方数据源对应的数据进行处理,得到第一处理结果,并将第一处理结果和第二对比语法树中表示第二方数据源的对比语法分支树发送至目标设备,以使目标设备基于第二方数据源的对比语法分支树对第二方数据源对应的数据进行处理,并将处理所得的第二处理结果与所述第一处理结果进行对比,得到数据对比结果,从而能够快速有效的对多方数据源进行数据对比,使得各参与方无需把数据暴露给另外的参与方,解决了无法对包含多方数据源的数据处理任务进行多表查询和计算比较的问题。
附图说明
图1为一个实施例中数据对比方法的应用环境图;
图2为一个实施例中数据对比方法的流程示意图;
图3为一个实施例中树形结构语法树的示意图;
图4为一个实施例中对第一对比语法树的节点进行裁剪和移项处理,得到第二对比语法树的流程示意图;
图5为一个实施例中语法树存储的数据结构的示意图;
图6为一个实施例中对第一对比语法树中的运算符节点和数据源节点,分别进行裁剪和移项处理步骤的流程示意图;
图7为一个实施例中对第一对比语法树的节点进行裁剪和移项处理的流程示意图;
图8为一个实施例中第一值列和第二值列的示意图;
图9为一个实施例中对语法树进行裁剪和移项处理的流程图;
图10为一个实施例中数据对比装置的结构框图;
图11为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的数据对比方法,可以应用于如图1所示的应用环境中。其中,第一方设备102通过网络与目标设备104进行通信。数据存储系统可以存储目标设备104需要处理的数据。数据存储系统可以集成在目标设备104上,也可以放在云上或其他服务器上。第一方设备102将数据对比式转换成第一对比语法树,并对第一对比语法树的节点进行裁剪和移项处理,得到第二对比语法树;第一方设备102基于第二对比语法树中表示第一方数据源的对比语法分支树,对第一方数据源对应的数据进行处理,得到第一处理结果,并将第一处理结果和第二对比语法树中表示第二方数据源的对比语法分支树发送至目标设备104,以使目标设备104基于第二方数据源的对比语法分支树对第二方数据源对应的数据进行处理,并将处理所得的第二处理结果与第一处理结果进行对比,得到数据对比结果。其中,本申请中的数据对比式即数据源可以是来自于云技术领域、地图数据源的大数据处理技术和人工智能技术领域。
其中,第一方设备102和目标设备104可以但不限于是各种台式计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。目标设备104也可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
可以理解,本申请实施例提供的目标设备104也可以是区块链系统中的服务节点,该区块链系统中的各服务节点之间形成组成点对点(P2P,Peer To Peer)网络,P2P协议是一个运行在传输控制协议(TCP,Transmission Control Protocol)协议之上的应用层协议。
云技术(Cloud technology)基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
云计算(cloud computing)是一种计算模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。作为云计算的基础能力提供商,会建立云计算资源池(简称云平台,一般称为IaaS(Infrastructure as a Service,基础设施即服务)平台,在资源池中部署多种类型的虚拟资源,供外部客户选择使用。云计算资源池中主要包括:计算设备(为虚拟化机器,包含操作系统)、存储设备、网络设备。
随着人工智能技术研究和进步,人工智能技术在多个领域展开研究和应用,例如常见的智能家居、智能穿戴设备、虚拟助理、智能音箱、智能营销、无人驾驶、自动驾驶、无人机、机器人、智能医疗、智能客服、车联网、自动驾驶、智慧交通等,相信随着技术的发展,人工智能技术将在更多的领域得到应用,并发挥越来越重要的价值。
在一个实施例中,如图2所示,提供了一种数据对比方法,以该方法应用于图1中的第一方设备为例进行说明,包括以下步骤:
步骤202,将数据对比式转换成第一对比语法树。
其中,数据对比式是指包含比较运算符和数据源的表达式,比较运算符是指可以使用下列运算符比较两个值。当用运算符比较两个值时,结果是一个逻辑值,不是TRUE(成立)就是FALSE(不成立)的运算符号。其中,比较运算符可以包括等号、大于号、小于号、大于等于号、小于等于号以及不等号等。本申请中的数据对比式可以是联邦表达式,联邦表达式是指含有多方数据源的表达式。例如,数据对比表达式为:a.col*5+b.col>10,其中,a.col表示数据源来自于A方,b.col表示数据源来自于B方,A方和B方是不同的参与方。
第一对比语法树是指将原始的数据对比表达式解析为树形结构的语法树,例如,将原始的数据对比表达式a.num+b.num<5解析为树形结构的对比语法树。
具体地,在联合数据分析场景中,常常涉及到复杂表达式的计算或对比需求。比如,在用户自定义函数(UDF)中,需要对原始的数据经过一定数学上的变换,再将其进行分组聚合等操作。当用户通过触发操作发起某个联邦任务时,第一方设备响应于用户的上述触发操作,按照预设的解析规则,对联邦任务中的数据对比式进行转换处理,得到与该数据对比式对应的第一对比语法树。
举个例子,如图3所示,为树形结构语法树的示意图。假设某个联邦任务中有两个参与方:A和B,其中,A为发起方作为第一方,B为参与方作为第二方,即A需要计算一个SQL语句表达式,其中含有数据对比式f1,假设数据对比式f1为a.num+b.num<5,则发起方A即第一方设备可以将数据对比式f1解析为如图3中所示的树形结构的语法树。可以理解,本申请实施例中将数据对比式转换成第一对比语法树的结构包括但不限于是如图3所示的树形结构,还可以为其他形式的树形结构,在这里不做具体限定。
步骤204,对第一对比语法树的节点进行裁剪和移项处理,得到第二对比语法树。
其中,节点是指第一对比语法树中所包含的各种类型的节点,例如,第一对比语法树的节点可以包括运算符节点和数据源节点。其中,运算符节点是指用于表示运算符的节点,数据源节点是指用于表示数据源的节点。例如,图3中所示的运算符节点包括“+”和“<”,图3中所示的数据源节点包括“a.num”和“b.num”。
裁剪和移项处理是指对第一语法树中的节点进行裁剪操作和移项操作。例如,将第一对比语法树中某个分支A中的节点A裁剪下来,即为裁剪操作,再将裁剪下来的节点A移项至分支B中,即为移项操作,形成的新的树形结构的语法树即为第二对比语法树,第二对比语法树的分支B中包含节点A,分支A中不包含节点A,第一语法树中的分支B中不包含节点A,分支A中包含节点A。
第二对比语法树是指对第一对比语法树进行裁剪和移项处理后,得到的处理后的语法树即为第二对比语法树,例如,将第一对比语法树中某个分支中的节点裁剪后,移项至另一个分支中,形成的新的树形结构的语法树即为第二对比语法树,即第一对比语法树和第二语对比法树中的树形结构是不同的。
具体的,第一方设备将数据对比式转换成第一对比语法树之后,第一方设备可以对第一对比语法树进行自下而上的遍历,以确定第一对比语法树中待对比的数据源是否为多方数据源,即确定第一对比语法树中待对比的数据源是否跨越了多个参与方,当第一方设备确定第一对比语法树中待对比的数据源包括至少两方数据源时,第一方设备可以基于定义在第一对比语法树上的各种线性变换方法和规则项,对第一对比语法树的节点进行裁剪和移项处理,得到第二对比语法树。
例如,以数据对比式f1为a.num+b.num<5为例进行说明。如图4所示,为对第一对比语法树的节点进行裁剪和移项处理,得到第二对比语法树的流程示意图。发起方A即第一方设备将数据对比式f1解析为如图4中(1)所示的树形结构的第一语法树之后,第一方设备可以对图4中(1)所示的第一对比语法树进行自下而上的遍历,以确定第一对比语法树中待对比的数据源是否为多方数据源,由于图4中(1)所示的比较运算符“<”左侧分支树中包含表示A方数据源的节点“a.num”和表示B方数据源的节点“b.num”,因此,第一方设备遍历图4中(1)所示的第一对比语法树后,可以确定第一对比语法树中待对比的数据源跨越了多个参与方,即第一方设备确定第一对比语法树中待对比的数据源包括A方数据源和B方数据源,则第一方设备可以基于定义在第一对比语法树上的线性变换方法和规则项,对第一对比语法树的左侧分支树中包含的表示B方数据源的节点“b.num”进行裁剪和移项处理如图4中(2)所示,即第一方设备将运算符节点“+”和数据源节点“b.num”从原来的左侧分支树上裁剪下来,并将运算符节点“+”变换为“-”后,将运算符节点“-”和数据源节点“b.num”移项到比较运算符“<”的右侧分支树上,拼接后即可完成移项操作,得到如图4中(3)所示的第二对比语法树。
步骤206,基于第二对比语法树中表示第一方数据源的对比语法分支树,对第一方数据源对应的数据进行处理,得到第一处理结果。
其中,对比语法分支树是指对比语法树中的某个分支,例如,如图3所示的对比语法树中包含左侧的一个对比语法分支树和右侧的另一个对比语法分支树。
第一处理结果是指对第一方数据源对应的数据进行处理后得到的结果,例如,第一方数据源为a.num,第一方数据源a.num对应的数据为a.num字段,即A方持有a.num字段,a.num字段可以是存储在A方本地数据库中的一组数据。
具体的,第一方设备对第一对比语法树的节点进行裁剪和移项处理,得到第二对比语法树之后,第一方设备可以将第二对比语法树中表示第一方数据源的对比语法分支树裁剪下来,并还原为字符串形式的第一表达式,则第一方设备可以基于第一表达式,生成对应的第一代码段,并扫描本地数据库中对应的输入数据,第一方设备基于输入数据对第一代码段进行计算,得到计算后的值列,将计算得到的值列作为第一处理结果。
例如,以数据对比式f1为a.num+b.num<5为例进行说明,第一方设备对第一对比语法树的节点进行裁剪和移项处理,得到如图4中(3)所示的第二对比语法树之后,第一方设备可以将图4中(3)所示的第二对比语法树中比较运算符“<”的左侧分支树和右侧分支树分别裁剪下来,还原为字符串形式,得到第一表达式a.num和第二表达式5-b.num。进一步的,第一方设备可以获取包含己方数据源的第一表达式a.num,并对得到的第一表达式a.num进行表达式代码生成,得到对应的第一代码段,第一方设备可以扫描己方表得到第一代码段的输入数据,基于输入数据对第一代码段进行计算后,即可得到第一表达式a.num所对应的值列,并将得到的值列作为第一处理结果。
步骤208,将第一处理结果和第二对比语法树中表示第二方数据源的对比语法分支树发送至目标设备,以使目标设备基于第二方数据源的对比语法分支树对第二方数据源对应的数据进行处理,并将处理所得的第二处理结果与第一处理结果进行对比,得到数据对比结果。
其中,目标设备是指第二方数据源所对应的设备,由于第二对比语法树中含有表示第二方数据源的对比语法分支树,因此,需要将表示第二方数据源的对比语法分支树发送至第二方数据源所对应的设备,例如,设备B中存储了第二方数据源对应的数据或者设备B的本地数据库中存储了第二方数据源对应的数据。
第二处理结果是指对第二方数据源对应的数据进行处理后得到的结果,例如,第二方数据源为b.num,第二方数据源b.num对应的数据为b.num字段,即B方持有b.num字段,b.num字段可以是存储在B方本地数据库中的一组数据。
数据对比结果是指将第二处理结果与第一处理结果进行对比后得到结果,例如,将第一处理结果enc(x)和第二处理结果enc(y)进行比较后,得到的比较结果为enc(x)-enc(y)=1。
具体的,第一方设备将第二对比语法树中表示第一方数据源的对比语法分支树和表示第二方数据源的对比语法分支树分别裁剪下来,并还原为字符串形式的第一表达式和第二表达式之后,第一方设备可以基于第一表达式,对第一方数据源对应的数据进行处理,得到第一处理结果,并将第一处理结果和第二表达式发送至目标设备,以使目标设备基于第二表达式,对第二方数据源对应的数据进行处理,并将处理所得的第二处理结果与第一处理结果进行对比,即可得到数据对比结果。
例如,以数据对比式f1为a.num+b.num<5为例进行说明,第一方设备对第一对比语法树的节点进行裁剪和移项处理,得到如图4中(3)所示的第二对比语法树之后,第一方设备可以将图4中(3)所示的第二对比语法树中比较运算符“<”的左侧分支树和右侧分支树分别裁剪下来,还原为字符串形式,得到第一表达式a.num和第二表达式5-b.num。进一步的,第一方设备可以获取包含己方数据源的第一表达式a.num,并基于第一表达式a.num,对己方数据源对应的数据进行处理,即可得到第一表达式a.num所对应的值列为enc(x),并将得到的值列enc(x)作为第一处理结果和第二表达式5-b.num发送至第二方设备,以使第二方设备基于第二表达式5-b.num,对第二方数据源对应的数据进行处理,并将处理所得的第二处理结果enc(y)与第一处理结果enc(x)进行对比,得到数据对比结果为enc(x)-enc(y)=1。
进一步的,第一方设备可以将上述得到的数据对比结果enc(x)-enc(y)=1与原始表达式的形式进行匹配,以得到与原始表达式匹配的最终结果,即第一方设备将上述数据对比结果enc(x)-enc(y)=1转换为a.num-(5-b.num)=1,即a.num+b.num<5,因此,原始表达式a.num+b.num<5的最终对比结果为1,表示true。
本实施例中,通过将数据对比式转换成第一对比语法树;对第一对比语法树的节点进行裁剪和移项处理,得到第二对比语法树;基于第二对比语法树中表示第一方数据源的对比语法分支树,对第一方数据源对应的数据进行处理,得到第一处理结果;将第一处理结果和第二对比语法树中表示第二方数据源的对比语法分支树发送至目标设备,以使目标设备基于第二方数据源的对比语法分支树对第二方数据源对应的数据进行处理,并将处理所得的第二处理结果与第一处理结果进行对比,得到数据对比结果。由于对第一对比语法树的节点进行裁剪和移项处理,得到了第二对比语法树,第二语法树中第一方数据源和第二方数据源分隔在比较运算符的两侧,故可以基于第二对比语法树中表示第一方数据源的对比语法分支树,对第一方数据源对应的数据进行处理,得到第一处理结果,并将第一处理结果和第二对比语法树中表示第二方数据源的对比语法分支树发送至目标设备,以使目标设备基于第二方数据源的对比语法分支树对第二方数据源对应的数据进行处理,并将处理所得的第二处理结果与所述第一处理结果进行对比,得到数据对比结果,从而能够快速有效的对多方数据源进行数据对比,使得各参与方无需把数据暴露给另外的参与方,解决了无法对包含多方数据源的数据处理任务进行多表查询和计算比较的问题。
在一个实施例中,所述将数据对比式转换成第一对比语法树之后,所述方法还包括:
对第一对比语法树中的对比语法分支树进行遍历,得到第一遍历结果;
当基于第一遍历结果确定第一对比语法树中的对比语法分支树对应不同参与方的数据源时,执行对第一对比语法树的节点进行裁剪和移项处理,得到第二对比语法树的步骤。
其中,遍历结果是指对第一对比语法树中的所有节点进行遍历后,得到的遍历结果。例如,当检测到第一对比语法树中的各个对比语法分支树所对应的数据源均为A方数据源时,则遍历结果为单方数据源。第一遍历结果是指第一次对第一对比语法树中的所有节点进行遍历后,得到的遍历结果即为第一遍历结果。
不同参与方的数据源是指数据源来自于不同的参与方,例如,检测到第一对比语法树中的某个对比语法分支树对应的数据源为A方数据源、另一个对比语法分支树对应的数据源为B方数据源,即为不同参与方的数据源。
具体的,第一方设备将数据对比式转换成第一对比语法树之后,第一方设备可以对第一对比语法树中的对比语法分支树进行遍历,得到第一遍历结果;即第一方设备对第一对比语法树中的各个对比语法分支树进行遍历时,若第一方设备检测到第一对比语法树中的各个对比语法分支树的数据源均来自于第一方,则将第一对比语法树的数据源标记为第一方数据源,得到遍历结果为第一方数据源;若第一方设备检测到的第一对比语法树中的各个对比语法分支树的数据源均来自第二方,则将第一对比语法树的数据源标记为第二方数据源,得到遍历结果为第二方数据源;若第一方设备检测到的第一对比语法树中的各个对比语法分支树的数据源来自于第一方和第二方,则将第一对比语法树的数据源标记为多方数据源,得到遍历结果为多方数据源。
进一步的,当第一方设备基于第一遍历结果确定第一对比语法树中的对比语法分支树对应不同参与方的数据源时,即当第一方设备基于第一遍历结果确定第一对比语法树中的各个对比语法分支树对应的数据源为多方数据源时,第一方设备执行对第一对比语法树的节点进行裁剪和移项处理,得到第二对比语法树的步骤。
例如,以数据对比式f1为a.num+b.num<5为例进行说明,第一方设备可以将数据对比式f1转换为如图3中所示的树形结构的第一对比语法树,图3中所示的第一对比语法树包括左侧的左对比语法分支树和右侧的右对比语法分支树,则第一方设备可以对图3中所示的树形结构的第一对比语法树进行遍历,以判断第一对比语法树中所包含的数据源是否跨越了多个参与方,由于图3中左侧的左对比语法分支树中包含了“a.num”和“b.num”两个不同参与方的数据源,因此,第一方设备对图3中所示的树形结构的第一对比语法树进行遍历后,得到第一遍历结果为多方数据源,由于第一对比语法树中的数据源跨越了多个参与方,因此需要执行对第一对比语法树的节点进行变换处理的步骤,以得到变换后的第二对比语法树。由此,通过对第一对比语法树中的对比语法分支树进行遍历,能够快速准确的确定第一对比语法树中的对比语法分支树对应的数据源是否为多方数据源,当包含多方数据源时,则按照多方数据源的处理流程执行相应的步骤,使得表达式计算比较的流程更加准确高效。
在其中一个实施例中,所述方法还包括:
当基于第一遍历结果确定第一对比语法树中的对比语法分支树对应相同参与方的数据源时,则依据第一对比语法树中的对比语法分支树,对参与方的数据源对应的数据进行对比,得到对比结果。
其中,相同参与方的数据源是指数据源来自于同一个参与方,例如,检测到第一对比语法树中的某个对比语法分支树对应的数据源为A方数据源、另一个对比语法分支树对应的数据源也为A方数据源,即为相同参与方的数据源。相同参与方的数据源可以包括数据源全部来自于己方数据源或者数据源全部来自于另一方数据源。
具体的,第一方设备将数据对比式转换成第一对比语法树之后,第一方设备可以对第一对比语法树中的对比语法分支树进行遍历,得到第一遍历结果,其中,第一遍历结果包括第一方数据源、第二方数据源和多方数据源。进一步的,当第一方设备基于第一遍历结果确定第一对比语法树中的各个对比语法分支树对应相同参与方的数据源、且数据源为己方数据源即第一方数据源时,则第一方设备可以依据第一对比语法树中的各个对比语法分支树,对第一方数据源对应的数据进行对比,得到对比结果。此外,当第一方设备基于第一遍历结果确定第一对比语法树中的各个对比语法分支树对应相同参与方的数据源、且数据源为对方数据源即第二方数据源时,则第一方设备返回至,不再处理此语法树。
例如,以数据对比式f1为a.num+a.num<5为例进行说明。第一方设备将数据对比式f1转换成第一对比语法树之后,第一方设备可以对第一对比语法树中的对比语法分支树进行遍历,得到第一遍历结果为第一方数据源;进一步的,若第一方设备基于第一遍历结果确定第一对比语法树中的各个对比语法分支树对应相同参与方的数据源、且数据源为己方数据源即第一方数据源,则第一方设备可以依据第一对比语法树中的各个对比语法分支树,对第一方数据源本地数据库中对应的数据进行对比处理,得到的对比结果为1,表示true。若第一方设备基于第一遍历结果确定第一对比语法树中的各个对比语法分支树对应相同参与方的数据源、且数据源为对方数据源即第二方数据源,则第一方设备返回至,不再处理此语法树。由此,通过对第一对比语法树中的对比语法分支树进行遍历,能够快速准确的确定第一对比语法树中的对比语法分支树对应的数据源是否为多方数据源,当为单方数据源时,则按照单方数据源的处理流程执行相应的步骤,使得表达式计算比较的流程更加准确高效。
在一个实施例中,所述方法还包括:
对第一对比语法树构建数据结构,得到包含运算符节点和数据源节点的第一对比语法树;
所述对所述第一对比语法树的节点进行裁剪和移项处理,包括:
对第一对比语法树中的运算符节点和数据源节点,分别进行裁剪和移项处理。
具体的,如图5所示,为语法树存储的数据结构的示意图。第一方设备可以对第一对比语法树构建如图5所示的数据结构,得到包含运算符节点和数据源节点的第一对比语法树,当第一方设备确定第一对比语法树中的对比语法分支树对应不同参与方的数据源时,对第一对比语法树中的运算符节点和数据源节点,分别进行裁剪和移项处理。
例如,以数据对比式f1为a.num+b.num<5为例进行说明。第一方设备将数据对比式f1解析为如图4中(1)所示的树形结构的第一语法树,并对如图4中(1)所示的第一对比语法树构建对应的数据结构,得到包含运算符节点和数据源节点的第一对比语法树,图4中运算符节点为“<”和“+”,数据源节点为“a.num”和“b.num”,则第一方设备可以对图4中(1)所示的第一对比语法树进行自下而上的遍历,以确定第一对比语法树中待对比的数据源是否为多方数据源,由于图4中(1)所示的比较运算符“<”左侧分支树中包含表示A方数据源的节点“a.num”和表示B方数据源的节点“b.num”,因此,第一方设备遍历图4中(1)所示的第一对比语法树后,可以确定第一对比语法树中待对比的数据源跨越了多个参与方,即第一方设备确定第一对比语法树中待对比的数据源包括A方数据源和B方数据源,则第一方设备可以基于定义在第一对比语法树的数据结构中的移项规则,对第一对比语法树的左侧分支树中包含的表示B方数据源的数据源节点“b.num”和运算符节点“+”进行裁剪和移项处理如图4中(2)所示,完成移项操作后即可得到如图4中(3)所示的第二对比语法树。
本实施例中,通过对不同的对比语法树构建对应的数据结构,可以定义不同对比语法树中的移项规则,使得可以基于各个对比语法树的数据结构中定义的规则项,对第一语法树进行变换,得到更加准确的变换后的语法树。
在一个实施例中,如图6所示,第一对比语法树中的对比语法分支树包括第一对比语法分支树和第二对比语法分支树;对第一对比语法树中的运算符节点和数据源节点,分别进行裁剪和移项处理的步骤,包括:
步骤602,当第一对比语法分支树包含第一方数据源节点和第二方数据源节点时,从第一对比语法树中裁剪第二方数据源节点和对应的运算符节点;
步骤604,对裁剪的运算符节点进行符号变换,得到变换后的运算符节点;
步骤606,将变换后的运算符节点和第二方数据源节点,移项至第一对比语法树的第二对比语法分支树上;
步骤608,在移项后的第一对比语法分支树中,在裁剪的运算符节点所在的原位置利用连通线与相邻节点进行连接。
其中,第一对比语法分支树和第二对比语法分支树是用于区分第一对比语法树中不同的对比语法分支树,例如,第一对比语法分支树可以是位于比较运算符左侧的左对比语法分支树,第二对比语法分支树可以是位于比较运算符右侧的右对比语法分支树。
具体的,当第一方设备检测到第一对比语法分支树包含第一方数据源节点和第二方数据源节点时,第一方设备从第一对比语法树中裁剪第二方数据源节点和对应的运算符节点,并对裁剪的运算符节点进行符号变换,得到变换后的运算符节点;进一步的,第一方设备可以将变换后的运算符节点和第二方数据源节点,移项至第一对比语法树的第二对比语法分支树上,并在移项后的第一对比语法分支树中,第一方设备在裁剪的运算符节点所在的原位置利用连通线与相邻节点进行连接。
举个例子,以数据对比式f1为a.num+b.num<5为例进行说明。第一方设备将数据对比式f1解析为如图4中(1)所示的树形结构的第一语法树之后,第一方设备可以对图4中(1)所示的第一对比语法树进行自下而上的遍历,以确定第一对比语法树中待对比的数据源是否为多方数据源,当第一方设备检测到第一对比语法分支树即图4中(1)所示的比较运算符“<”左侧分支树中包含第一方数据源节点“a.num”和第二方数据源节点“b.num”时,第一方设备从左侧分支树中裁剪第二方数据源节点“b.num”和对应的运算符节点“+”,即第一方设备将运算符节点“+”和数据源节点“b.num”从原来的左侧分支树上裁剪下来,并将裁剪的运算符节点“+”变换为“-”后,将变换后的运算符节点“-”和数据源节点“b.num”移项到比较运算符“<”的右侧分支树上,拼接后即可完成移项操作,同时,第一方设备在移项后的左侧分支树中,在裁剪的运算符节点所在的原位置利用连通线与相邻节点进行连接,即可得到如图4中(3)所示的第二对比语法树。由此,通过对不同的对比语法树构建对应的数据结构,可以定义不同对比语法树中的移项规则,使得可以基于各个对比语法树的数据结构中定义的规则项,对第一语法树进行变换,得到更加准确的变换后的语法树。
在其中一个实施例中,第一对比语法树包括至少一个层级的第二方数据源节点,裁剪的第二方数据源节点是目标层级的数据源节点;在裁剪的运算符节点所在的原位置利用连通线与相邻节点进行连接之后,所述方法还包括:
对移项后的第一对比语法分支树进行遍历,得到第二遍历结果;
基于第二遍历结果,确定移项后的第一对比语法分支树不包含其它层级的第二方数据源节点时停止遍历,得到第二对比语法树。
其中,目标层级是指已裁剪的数据源所在的层级,例如,假设第一对比语法树的左侧分支树中包含两个层级的第二方数据源,分别为第一层级的第二方数据源和第二层级的第二方数据源,则按照预设的各种线性变换方法以及规则项,对第一层级的第二方数据源进行裁剪和和移项处理后,第二层级的第二方数据源还未进行处理,此时,目标层级是指第一层级,第二层级即为其他层级。
第二遍历结果用于区别于第一遍历结果,是指移项后再次对第一对比语法树中的所有节点进行遍历后,得到的遍历结果即为第二遍历结果。
具体的,当第一方设备检测到第一对比语法分支树包含第一方数据源节点和第二方数据源节点时,第一方设备从第一对比语法树中裁剪第二方数据源节点和对应的运算符节点,并对裁剪的运算符节点进行符号变换,得到变换后的运算符节点;进一步的,第一方设备可以将变换后的运算符节点和第二方数据源节点,移项至第一对比语法树的第二对比语法分支树上,在移项后的第一对比语法分支树中,第一方设备在裁剪的运算符节点所在的原位置利用连通线与相邻节点进行连接之后,第一方设备对移项后的第一对比语法分支树重新进行遍历,得到第二遍历结果,第二遍历结果可以包括第一方数据源、第二方数据源和多方数据源;当第一方设备基于第二遍历结果,确定移项后的第一对比语法分支树不包含其它层级的第二方数据源节点时停止遍历,即第二语法树中第一方数据源和第二方数据源分隔在比较运算符的两侧,当第一方设备检测到第一对比语法分支树中仅包含第一方数据源时停止遍历,得到第二对比语法树。
例如,以数据对比式f1为a.num+b.num<5为例进行说明。当第一方设备检测到第一对比语法分支树即图4中(1)所示的比较运算符“<”左侧分支树中包含第一方数据源节点“a.num”和第二方数据源节点“b.num”时,第一方设备从左侧分支树中裁剪第二方数据源节点“b.num”和对应的运算符节点“+”,并将裁剪的运算符节点“+”变换为“-”后,将变换后的运算符节点“-”和数据源节点“b.num”移项到比较运算符“<”的右侧分支树上,拼接后即可完成移项操作,同时,第一方设备在移项后的左侧分支树中,在裁剪的运算符节点所在的原位置利用连通线与相邻节点进行连接之后,第一方设备可以对如图4中(3)所示的移项后的左侧分支树重新进行遍历,得到第二遍历结果为第一方数据源,由于移项后的左侧分支树中只包含第一方数据源,因此,第一方设备可以基于第二遍历结果,确定移项后的第一对比语法分支树不包含其它层级的第二方数据源节点,停止继续遍历,即得到如图4中(3)所示的第二对比语法树。由此,可以基于各个对比语法树的数据结构中定义的规则项,对第一语法树进行变换,直到第一方数据源和第二方数据源分隔在比较运算符的两侧时停止变换,使得变换后的语法树更加准确。
在一个实施例中,对移项后的第一对比语法分支树进行遍历,得到第二遍历结果之后,所述方法还包括:
基于第二遍历结果,确定移项后的第一对比语法分支树包含其它层级的第二方数据源节点时,从第一对比语法分支树中裁剪其它层级的第二方数据源节点和对应的运算符节点;
对裁剪的运算符节点进行符号变换,得到变换后的运算符节点;
将变换后的运算符节点和其它层级的第二方数据源节点,移项至第一对比语法树的第二对比语法分支树上;
在移项后的第一对比语法分支树中,在裁剪的运算符节点所在的原位置利用连通线与相邻节点进行连接。
具体的,第一方设备将变换后的运算符节点和第二方数据源节点,移项至第一对比语法树的第二对比语法分支树上,在移项后的第一对比语法分支树中,第一方设备在裁剪的运算符节点所在的原位置利用连通线与相邻节点进行连接之后,第一方设备对移项后的第一对比语法分支树重新进行遍历,得到第二遍历结果,第二遍历结果可以包括第一方数据源、第二方数据源和多方数据源;当第一方设备基于第二遍历结果,确定移项后的第一对比语法分支树包含其它层级的第二方数据源节点时,第一方设备从第一对比语法分支树中裁剪其它层级的第二方数据源节点和对应的运算符节点,并对裁剪的运算符节点进行符号变换,得到变换后的运算符节点;进一步的,第一方设备将变换后的运算符节点和其它层级的第二方数据源节点,移项至第一对比语法树的第二对比语法分支树上,在移项后的第一对比语法分支树中,第一方设备在裁剪的运算符节点所在的原位置利用连通线与相邻节点进行连接。
举个例子,以数据对比式f3为a.num*b.num+b.num<5为例进行说明。如图7所示,为对第一对比语法树的节点进行裁剪和移项处理的流程示意图。当第一方设备检测到第一对比语法分支树即图7中(1)所示的比较运算符“<”左侧分支树中包含第一方数据源节点“a.num”和第二方数据源节点“b.num”时,第一方设备从左侧分支树中裁剪第一层级中的第二方数据源节点“b.num”和对应的运算符节点“+”,并将裁剪的运算符节点“+”变换为“-”后,将变换后的运算符节点“-”和数据源节点“b.num”移项到比较运算符“<”的右侧分支树上,拼接后即可完成移项操作,同时,第一方设备在移项后的左侧分支树中,在裁剪的运算符节点所在的原位置利用连通线与相邻节点进行连接之后,第一方设备可以对如图7中(3)所示的移项后的左侧分支树重新进行遍历,得到第二遍历结果为多方数据源,由于移项后的左侧分支树中仍然包含第一方数据源和第二方数据源,因此,当第一方设备基于第二遍历结果,确定移项后的第一对比语法分支树包含其它层级的第二方数据源节点时,第一方设备从第一对比语法分支树中裁剪其它层级的第二方数据源节点“b.num”和对应的运算符节点“*”,并将裁剪的运算符节点“*”变换为“÷”后,将变换后的运算符节点“÷”和数据源节点“b.num”移项到比较运算符“<”的右侧分支树上,拼接后即可完成移项操作,同时,第一方设备在移项后的左侧分支树中,在裁剪的运算符节点所在的原位置利用连通线与相邻节点进行连接,即可得到最终的第二对比语法树。由此使得,可以基于各个对比语法树的数据结构中定义的规则项,对第一语法树进行变换,直到第一方数据源和第二方数据源分隔在比较运算符的两侧时停止变换,使得变换后的语法树更加准确。
在一个实施例中,基于第二对比语法树中表示第一方数据源的对比语法分支树,对第一方数据源对应的数据进行处理,得到第一处理结果的步骤,包括:
将表示第一方数据源的对比语法分支树转换为字符串形式的第一表达式;
基于第一表达式对第一方数据源对应的数据进行处理,得到第一处理结果。
其中,第一处理结果是基于第一表达式和输入数据计算得到的,第一数据处理结果可以为值列。
具体的,第一方设备可以将第二对比语法树中表示第一方数据源的对比语法分支树转换为字符串形式的第一表达式,并基于第一表达式生成对应的第一代码段,按照分组列结构,扫描本地数据库中的数据表,得到对应的分组数据,并将分组数据作为输入数据,对第一代码段进行计算,得到对应的第一处理结果。
举个例子,如图8所示,为第一值列和第二值列的示意图。以数据对比式f1为a.num+b.num<5为例进行说明。假设A方即第一方持有的“a表”中包含a.num字段,如图8中(1)所示的“a表”,第一方设备得到如图4中(3)所示的第二对比语法树之后,第一方设备可以将第二对比语法树中表示第一方数据源的左侧分支树转换为字符串形式的第一表达式为a.num,并基于第一表达式a.num生成对应的第一代码段AA1,第一方设备按照分组列结构,扫描本地数据库中的如图8中(1)所示的数据表“a表”,得到对应的分组数据,并将分组数据作为输入数据,对第一代码段AA1进行计算,得到对应的第一处理结果为如图8中(2)所示的“a表”中的第一值列A1,即第一值列A1中包含{3,1,2,4,7}。
本实施例中,在表达式的计算过程中,跳过表达式计算的解析,直接将表达式作为一个整体预编译为代码段,这样在后续的反复计算中,就不用多次对表达式进行解析和编译,可以直接利用编译好的代码段进行计算,大大提高了代码执行速度,从而也有效提高了计算和迭代的速率,使得SQL语句的比较流程执行更加高效。
在一个实施例中,将第一处理结果和第二对比语法树中表示第二方数据源的对比语法分支树发送至目标设备,以使目标设备基于第二方数据源的对比语法分支树对第二方数据源对应的数据进行处理,并将处理所得的第二处理结果与第一处理结果进行对比的步骤,包括:
将表示第二方数据源的对比语法分支树转换为字符串形式的第二表达式;
将第一处理结果和第二表达式发送至目标设备,以使目标设备基于第二表达式对第二方数据源对应的数据进行处理,并将处理所得的第二处理结果与第一处理结果进行对比。
其中,第二处理结果是基于第二表达式和输入数据计算得到的,第二数据处理结果可以为值列。
具体的,第一方设备可以将第二对比语法树中表示第二方数据源的对比语法分支树转换为字符串形式的第二表达式,并将第一处理结果和第二表达式发送至目标设备,以使目标设备基于第二表达式对第二方数据源对应的数据进行处理,并将处理所得的第二处理结果与第一处理结果进行对比。
例如,如图8所示,为第一值列和第二值列的示意图。以数据对比式f1为a.num+b.num<5为例进行说明。假设B方即第二方持有的“b表”中包含b.num字段,如图8中(1)所示的“b表”,第一方设备得到如图4中(3)所示的第二对比语法树之后,第一方设备可以将第二对比语法树中表示第一方数据源的左侧分支树转换为字符串形式的第一表达式为a.num,并基于第一表达式a.num生成对应的第一代码段AA1,第一方设备按照分组列结构,扫描本地数据库中的如图8中(1)所示的数据表“a表”,得到对应的分组数据,并将分组数据作为输入数据,对第一代码段AA1进行计算,得到对应的第一处理结果为如图8中(2)所示的“a表”中的第一值列A1。进一步的,第一方设备可以将第二对比语法树中表示第二方数据源的右侧分支树转换为字符串形式的第二表达式为5-b.num,第一方设备将上述得到的第一值列A1和第二表达式5-b.num发送至目标设备,以使得目标设备基于第二表达式5-b.num,生成对应的第二代码段BB1,目标设备按照分组列结构,扫描本地数据库中如图8中(1)所示的数据表“b表”,得到对应的分组数据,并将分组数据作为输入数据,对第二代码段BB1进行计算,得到对应的第一处理结果为如图8中(2)所示的数据表“b表”中的第二值列A2,并将处理所得的第二值列A2与第一值列A1进行对比,以得到数据对比结果。由此使得,在表达式的计算过程中,跳过表达式计算的解析,直接将表达式作为一个整体预编译为代码段,这样在后续的反复计算中,就不用多次对表达式进行解析和编译,可以直接利用编译好的代码段进行计算,大大提高了代码执行速度,从而也有效提高了计算和迭代的速率,使得SQL语句的比较流程执行更加高效。
在一个实施例中,将第一处理结果和第二表达式发送至目标设备,以使目标设备基于第二表达式对第二方数据源对应的数据进行处理,并将处理所得的第二处理结果与第一处理结果进行对比的步骤,包括:
通过公钥对第一处理结果进行加密处理,得到第一密文;
将第一密文、公钥和第二表达式发送至目标设备,以使目标设备基于第二表达式对第二方数据源对应的数据进行处理,并基于公钥对处理所得的第二处理结果进行加密,将加密所得的第二密文与第一密文进行对比,得到数据对比结果。
具体的,第一方设备可以通过公钥对第一处理结果进行加密处理,得到第一密文,并将第一密文、公钥和第二表达式发送至目标设备,以使目标设备基于第二表达式对第二方数据源对应的数据进行处理,并基于公钥对处理所得的第二处理结果进行加密,将加密所得的第二密文与第一密文进行对比,得到数据对比结果。
例如,假设第一处理结果为x,第二处理结果为y,则第一方设备可以通过公钥对第一处理结果x进行加密处理,得到第一密文为enc(x),并将第一密文enc(x)、公钥和第二表达式发送至目标设备,以使目标设备基于第二表达式对第二方数据源对应的数据进行处理,并基于公钥对处理所得的第二处理结果y进行加密,将加密所得的第二密文enc(y)与第一密文enc(x)进行对比,即可得到数据对比结果为(enc(x)^a)*enc(b)-(enc(y)^a)*enc(b)=1。由此使得,能够使得表达式计算和比较的流程更加安全高效,通过使用同态加密的方式,即使在数据交互流程中也能够严格保证数据的安全性。
在其中一个实施例中,所述方法还包括:
按照数据对比式对数据对比结果进行转换,得到布尔型的目标对比结果。
其中,布尔型是编程语言pascal、VB、C++等的一种类型变量类型,布尔型的值只有两个:false(假)和true(真)。且false的序号为0,true的序号是1(或者是非0)。
具体的,目标设备将加密所得的第二密文与第一密文进行对比,得到数据对比结果之后,目标设备可以将得到的数据对比结果发送至第一方设备,当第一方设备接收到目标设备返回的数据对比结果之后,第一方设备可以按照原始的数据对比式,对接收到的数据对比结果进行转换,即可得到最终的布尔型的目标对比结果。
例如,假设第一方设备接收到的数据对比结果为(enc(x)^a)*enc(b)-(enc(y)^a)*enc(b)=1,则第一方设备可以按照原始的数据对比式f1为a.num+b.num<5,对接收到的数据对比结果(enc(x)^a)*enc(b)-(enc(y)^a)*enc(b)=1进行转换,即可得到enc(x)<enc(y)→a.num<5-b.num→a.num+b.num<5,得到最终的布尔型的目标对比结果为true。由此使得,在数据对比的过程中保护了第一方和第二方的原始敏感数据不被对方获取,使用了同态加密技术的隐私比较方式,不会泄露比较两方的数据内容,使用了表达式代码生成技术的方法有助于加速大规模数据下代码执行计算的速度,最终使得第一方和第二方都能获取到更为准确的比较结果。
在一个实施例中,所述方法应用于服务器;基于第二对比语法树中表示第一方数据源的对比语法分支树,对第一方数据源对应的数据进行处理,得到第一处理结果的步骤,包括:
选取第二对比语法树中表示第一方数据源的对比语法分支树;
将第一方数据源的对比语法分支树发送至第一方设备,以使第一方设备对第一方数据源对应的数据进行处理,得到第一处理结果。
具体的,服务器可以将原始的数据对比式转换成第一对比语法树,并对第一对比语法树的节点进行裁剪和移项处理,得到第二对比语法树;服务器可以选取第二对比语法树中表示第一方数据源的对比语法分支树,并将第一方数据源的对比语法分支树发送至第一方设备,以使第一方设备对第一方数据源对应的数据进行处理,得到第一处理结果;同时,服务器还可以选取第二对比语法树中表示第二方数据源的对比语法分支树,并将第二方数据源的对比语法分支树发送至第二方设备,以使第二方设备对第二方数据源对应的数据进行处理,得到第二处理结果。进一步的,当服务器接收到第一方设备返回的第一处理结果、以及第二方设备返回的第二处理结果时,服务器可以将第二处理结果与第一处理结果进行对比,得到数据对比结果。由此,能够快速有效的对多方数据源进行数据对比,使得各参与方无需把数据暴露给另外的参与方,解决了无法对包含多方数据源的数据处理任务进行多表查询和计算比较的问题。
本申请还提供一种应用场景,该应用场景应用上述的数据对比方法。具体地,该数据对比方法在该应用场景的应用如下:
当需要针对多个参与方的数据进行对比时,可以采用上述的数据对比方法,即在多方场景中,假设有N个参与方,可以分别转化为N-1个两方场景来解决问题。例如,假设有4个参与方,且分组列属于A方,参与方分别是A方、B方、C方和D方。当前4方场景可以转换为3个两方场景,分别是A方和B方、A方和C方、A方和D方,每个两方场景可以使用上述的数据对比方法。即第一方设备可以将数据对比式转换成第一对比语法树,并对第一对比语法树的节点进行裁剪和移项处理,得到第二对比语法树;基于第二对比语法树中表示第一方数据源的对比语法分支树,对第一方数据源对应的数据进行处理,得到第一处理结果,并将第一处理结果和第二对比语法树中表示第二方数据源的对比语法分支树发送至第二方设备,以使第二方设备基于第二方数据源的对比语法分支树对第二方数据源对应的数据进行处理,并将处理所得的第二处理结果与第一处理结果进行对比,得到数据对比结果。
本申请实施例提供的方法,可以应用于任意的数据分析场景中,以下以联合数据分析场景为例,对本申请实施例提供的数据对比方法进行说明。
传统方式中,不同机构的数据之间只能独立存储,独立维护,由于数据隐私保护、数据保护法规等因素,这些分散在不同机构的数据不能集中,形成了“数据孤岛“现象。而传统的SQL方法中,当需要进行表达式的计算或比较时,需要把表达式中所包含的所有数据源的明细数据进行汇合,汇合之后再进一步对表达式进行解析和计算,即传统的SQL方法中,计算时需要访问多方原始数据源获取对应的明细数据,当多方数据源无法访问或者不支持获取时,则无法跨多方进行多表查询和计算,尤其是含有多方数据源的表达式计算的比较语句,给数据分析带来了极大的困难。
因此,为了解决上述问题,本申请提供了一种面向隐私保护的联邦表达式的计算比较方法,以解决联邦场景下表达式的计算和比较问题。本方法中根据数据源的组成情况,使用定义在解析树节点上的线性变换方法,将解析树中的子树进行合理的裁剪、符号变换和移项拼接等处理后,得到变换后的解析树,在变换后的解析树中,两方均可得到原表达式的一部分,该表达式中已不存在来自对方表的数据,因此可对得到的己方表达式进行预编译和扫描计算,得到欲进行比较的值列;再通过隐私比较的方式,将两方对得到的值列通过同态加密进行比较,得到的比较结果与原表达式的形式进行匹配,以得到最终结果。由此使得,能够快速有效的对多方数据源进行数据对比,并且各参与方在本地存储数据,无需把数据集中或暴露给另外的参与方,保证了多方交互时数据的安全性。
在产品侧,本申请提供的方法可应用于自研PowerFL系统中,例如,有以下两种产品形态:1、PowerFL命令行启动任务。2、系统平台可视化界面提交任务,本申请提供的方法也可应用于游戏场景中。
在技术侧,在联合数据分析场景中,常常涉及到复杂表达式的计算或比较需求。比如在用户自定义函数(UDF)中,需要对原始的数据经过一定数学上的变换,再将其进行分组聚合等操作。联邦表达式是指含有多方数据源的表达式,在隐私保护的前提下,无法在任何单独一方计算出最终结果,如A方拥有表a,B方拥有表b,则a.col*5+b.col>10的结果不能在不获取另一方原始数据的情况下完成计算。因此,本申请提供了一种面向隐私保护的联邦表达式计算比较方法。
假设一次联邦任务中有两个参与方A和B,其中A为发起方host,B为参与方guest,A需要计算一个SQL语句expr(expression,表达式),其中含有表达式f1,f2,…,fn,则expr中f的计算过程如下算法所示:
步骤1.A方生成同态加密公钥,并将公钥传播给B,A方和B方各自生成私钥;
步骤2.A方对expr进行抽象语法树生成,得到f1,f2,…,fn对应的子树,对每一棵子树进行后序遍历:
i.对每一个节点,建立对应于此节点的数据结构,如图5所示。比如,对于表达式a.col*5+b.col>10,以“>”符号作为比较运算符,其结果的数据类型为布尔型,数据值不明,此节点的数据源为多方,左子树为a.col*5+b.col,左子树的数据源为多方,右子树为10,右子树的数据源为单方,移项规则可以设置为:原子树移项并添加负号,并且原子树置0。
ii.将非java中的运算符替换为java中的运算符或函数,例如,将“=”替换为“equalTo”。
iii.对每一棵子树,先遍历子树的左子树,再遍历子树的右子树,循环此过程:
a)若子树的左子树和右子树数据源均来自于己方,则本节点的数据源标记为己方;
b)若子树的左子树和右子树数据源均来自于另一方,则本节点的数据源标记为另一方;
c)否则标记为多方。
iv.对根节点进行检查:
a)若整棵子树的数据源均在己方,则跳转至步骤3;
b)若整棵子树的数据源均在另一方,返回,不再处理此树;
c)若数据源为多方,则进入步骤v。
v.进行树的裁剪操作。如图9所示,为对语法树进行裁剪和移项处理的流程图。比如,对表达式a.col*5+b.col>10,在检查到左子树为多方数据源后,会继续遍历左子树,直到左右两个子树均为单方数据源时停止遍历,并从左子树中裁剪b.col,添加负号后移项到根节点右方,原位置置0,重复上述步骤i-v直到所有树的变换完成。
步骤3.经过步骤2,得到变换后的表达式解析树为T1,T2,…,Tm,其中A方的数据源和表达式均在比较符号左侧的左子树,B方的数据源和表达式均在比较符号右侧的右子树,对每一棵树进行遍历:
i.将每一棵树还原为字符串,并筛选含有己方数据源的一侧表达式,如A方需要的表达式为:a.col*5,而B方为:-b.col+10;
ii.将数据源作为参数,预编译此表达式(即java中的cook方法);
iii.扫描对应的数据表,对表达式进行计算(即java中的evaluate方法);
iv.同态加密进行隐私比较:
a)A方将表达式的计算结果a通过公钥进行加密,将enc(noiseA*a)和噪声enc(noiseA)发送到另一方;
b)B接收到噪声enc(noiseA)和enc(noiseA*a),同时己方生成噪声noiseB,根据隐私比较的计算式计算差值,得到计算结果;
c)B将计算结果发送给A。
v.得到表达式比较的结果,重复i直到所有树的计算完成。
步骤4.返回expr的计算结果。
其中,本申请实施例中树裁剪方法举例如下:当节点“+”的左右两边分别含有一方数据源时,首先将“+”值变换为“-”,接着将子树进行裁剪,使用“+”节点的左子树替代原“+”节点,将根节点右子树替换为“-”节点,并将原根节点右子树作为此节点的左子树。可以理解,本申请实施例中提出的树裁剪方法适用于线性表达式,即不同的数据源可以通过线性变换在比较符号两侧任意移项。
相较于传统方式中,针对每一条SQL语句,先将其解析为抽象语法树,再将抽象语法树归纳为逻辑算子和物理算子,最终计算出结果;进行计算时,首先进行语法层面的解析,再通过条件下推等方法优化计算过程;上述方式存在的缺点如下:计算时需要访问多方原始数据源,且没有显式的隐私保护措施;计算过程中不会主动触发代码生成,迭代计算的时间成本较高;如泄露多方数据,可能违反现有法律法规。
而本实施例中,各参与方在本地存储数据,无需把数据集中或暴露给另外的参与方,保证了表达式计算和比较的流程更安全高效,即通过使用同态加密,保证了多方交互时数据的安全性;利用代码生成,有效提高了编译、计算和迭代的速率,使得SQL执行更加高效。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的数据对比方法的数据对比装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个数据对比装置实施例中的具体限定可以参见上文中对于数据对比方法的限定,在此不再赘述。
在一个实施例中,如图10所示,提供了一种数据对比装置,包括:转换模块1002、处理模块1004和发送模块1006,其中:
转换模块1002,用于将数据对比式转换成第一对比语法树。
处理模块1004,用于对第一对比语法树的节点进行裁剪和移项处理,得到第二对比语法树;基于第二对比语法树中表示第一方数据源的对比语法分支树,对第一方数据源对应的数据进行处理,得到第一处理结果。
发送模块1006,用于将第一处理结果和第二对比语法树中表示第二方数据源的对比语法分支树发送至目标设备,以使目标设备基于第二方数据源的对比语法分支树对第二方数据源对应的数据进行处理,并将处理所得的第二处理结果与第一处理结果进行对比,得到数据对比结果。
在一个实施例中,所述装置还包括:遍历模块,用于对所述第一对比语法树中的对比语法分支树进行遍历,得到第一遍历结果;执行模块,用于当基于所述第一遍历结果确定所述第一对比语法树中的对比语法分支树对应不同参与方的数据源时,执行所述对所述第一对比语法树的节点进行裁剪和移项处理,得到第二对比语法树的步骤。
在一个实施例中,所述装置还包括:对比模块,用于当基于所述第一遍历结果确定所述第一对比语法树中的对比语法分支树对应相同参与方的数据源时,则依据所述第一对比语法树中的对比语法分支树,对所述参与方的数据源对应的数据进行对比,得到对比结果。
在一个实施例中,所述装置还包括:构建模块,用于对所述第一对比语法树构建数据结构,得到包含运算符节点和数据源节点的第一对比语法树;处理模块还用于对所述第一对比语法树中的运算符节点和数据源节点,分别进行裁剪和移项处理。
在一个实施例中,所述装置还包括:裁剪模块,用于当所述第一对比语法分支树包含第一方数据源节点和第二方数据源节点时,从所述第一对比语法树中裁剪所述第二方数据源节点和对应的运算符节点;变换模块,用于对裁剪的所述运算符节点进行符号变换,得到变换后的运算符节点;移项模块,用于将所述变换后的运算符节点和所述第二方数据源节点,移项至所述第一对比语法树的第二对比语法分支树上;连接模块,用于在移项后的所述第一对比语法分支树中,在裁剪的所述运算符节点所在的原位置利用连通线与相邻节点进行连接。
在一个实施例中,所述装置还包括:遍历模块还用于对移项后的所述第一对比语法分支树进行遍历,得到第二遍历结果;确定模块,用于基于所述第二遍历结果,确定移项后的所述第一对比语法分支树不包含其它层级的第二方数据源节点时停止遍历,得到第二对比语法树。
在一个实施例中,裁剪模块还用于基于所述第二遍历结果,确定移项后的所述第一对比语法分支树包含其它层级的第二方数据源节点时,从所述第一对比语法分支树中裁剪其它层级的所述第二方数据源节点和对应的运算符节点;变换模块还用于对裁剪的所述运算符节点进行符号变换,得到变换后的运算符节点;移项模块还用于将所述变换后的运算符节点和其它层级的所述第二方数据源节点,移项至所述第一对比语法树的第二对比语法分支树上;连接模块还用于在移项后的所述第一对比语法分支树中,在裁剪的所述运算符节点所在的原位置利用连通线与相邻节点进行连接。
在一个实施例中,转换模块还用于将表示第一方数据源的对比语法分支树转换为字符串形式的第一表达式;处理模块还用于基于所述第一表达式对所述第一方数据源对应的数据进行处理,得到第一处理结果。
在一个实施例中,所述装置还包括:转换模块还用于将表示第二方数据源的对比语法分支树转换为字符串形式的第二表达式;发送模块还用于将所述第一处理结果和所述第二表达式发送至目标设备,以使所述目标设备基于所述第二表达式对所述第二方数据源对应的数据进行处理,并将处理所得的第二处理结果与所述第一处理结果进行对比。
在一个实施例中,处理模块还用于通过公钥对所述第一处理结果进行加密处理,得到第一密文;发送模块还用于将所述第一密文、所述公钥和所述第二表达式发送至目标设备,以使所述目标设备基于所述第二表达式对所述第二方数据源对应的数据进行处理,并基于所述公钥对处理所得的第二处理结果进行加密,将加密所得的第二密文与所述第一密文进行对比,得到数据对比结果。
在一个实施例中,转换模块还用于按照所述数据对比式对所述数据对比结果进行转换,得到布尔型的目标对比结果。
在一个实施例中,所述装置还包括:选取模块,用于选取所述第二对比语法树中表示第一方数据源的对比语法分支树;发送模块还用于将所述第一方数据源的对比语法分支树发送至第一方设备,以使所述第一方设备对所述第一方数据源对应的数据进行处理,得到第一处理结果。
上述数据对比装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图11所示。该计算机设备包括处理器、存储器、输入/输出接口、通信接口、显示单元和输入装置。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口、显示单元和输入装置通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种数据对比方法。该计算机设备的显示单元用于形成视觉可见的画面,可以是显示屏、投影装置或虚拟现实成像装置,显示屏可以是液晶显示屏或电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图11中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各方法实施例中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (16)
1.一种数据对比方法,其特征在于,所述方法包括:
将数据对比式转换成第一对比语法树;
对所述第一对比语法树的节点进行裁剪和移项处理,得到第二对比语法树;
基于所述第二对比语法树中表示第一方数据源的对比语法分支树,对所述第一方数据源对应的数据进行处理,得到第一处理结果;
将所述第一处理结果和所述第二对比语法树中表示第二方数据源的对比语法分支树发送至目标设备,以使所述目标设备基于所述第二方数据源的对比语法分支树对所述第二方数据源对应的数据进行处理,并将处理所得的第二处理结果与所述第一处理结果进行对比,得到数据对比结果。
2.根据权利要求1所述的方法,其特征在于,所述将数据对比式转换成第一对比语法树之后,所述方法还包括:
对所述第一对比语法树中的对比语法分支树进行遍历,得到第一遍历结果;
当基于所述第一遍历结果确定所述第一对比语法树中的对比语法分支树对应不同参与方的数据源时,执行所述对所述第一对比语法树的节点进行裁剪和移项处理,得到第二对比语法树的步骤。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
当基于所述第一遍历结果确定所述第一对比语法树中的对比语法分支树对应相同参与方的数据源时,则依据所述第一对比语法树中的对比语法分支树,对所述参与方的数据源对应的数据进行对比,得到对比结果。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
对所述第一对比语法树构建数据结构,得到包含运算符节点和数据源节点的第一对比语法树;
所述对所述第一对比语法树的节点进行裁剪和移项处理,包括:
对所述第一对比语法树中的运算符节点和数据源节点,分别进行裁剪和移项处理。
5.根据权利要求4所述的方法,其特征在于,所述第一对比语法树中的对比语法分支树包括第一对比语法分支树和第二对比语法分支树;
所述对所述第一对比语法树中的运算符节点和数据源节点,分别进行裁剪和移项处理,包括:
当所述第一对比语法分支树包含第一方数据源节点和第二方数据源节点时,从所述第一对比语法树中裁剪所述第二方数据源节点和对应的运算符节点;
对裁剪的所述运算符节点进行符号变换,得到变换后的运算符节点;
将所述变换后的运算符节点和所述第二方数据源节点,移项至所述第一对比语法树的第二对比语法分支树上;
在移项后的所述第一对比语法分支树中,在裁剪的所述运算符节点所在的原位置利用连通线与相邻节点进行连接。
6.根据权利要求5所述的方法,其特征在于,所述第一对比语法树包括至少一个层级的第二方数据源节点,裁剪的所述第二方数据源节点是目标层级的数据源节点;
所述在裁剪的所述运算符节点所在的原位置利用连通线与相邻节点进行连接之后,所述方法还包括:
对移项后的所述第一对比语法分支树进行遍历,得到第二遍历结果;
基于所述第二遍历结果,确定移项后的所述第一对比语法分支树不包含其它层级的第二方数据源节点时停止遍历,得到第二对比语法树。
7.根据权利要求6所述的方法,其特征在于,所述对移项后的所述第一对比语法分支树进行遍历,得到第二遍历结果之后,所述方法还包括:
基于所述第二遍历结果,确定移项后的所述第一对比语法分支树包含其它层级的第二方数据源节点时,从所述第一对比语法分支树中裁剪其它层级的所述第二方数据源节点和对应的运算符节点;
对裁剪的所述运算符节点进行符号变换,得到变换后的运算符节点;
将所述变换后的运算符节点和其它层级的所述第二方数据源节点,移项至所述第一对比语法树的第二对比语法分支树上;
在移项后的所述第一对比语法分支树中,在裁剪的所述运算符节点所在的原位置利用连通线与相邻节点进行连接。
8.根据权利要求1所述的方法,其特征在于,所述基于所述第二对比语法树中表示第一方数据源的对比语法分支树,对所述第一方数据源对应的数据进行处理,得到第一处理结果,包括:
将表示第一方数据源的对比语法分支树转换为字符串形式的第一表达式;
基于所述第一表达式对所述第一方数据源对应的数据进行处理,得到第一处理结果。
9.根据权利要求1所述的方法,其特征在于,所述将所述第一处理结果和所述第二对比语法树中表示第二方数据源的对比语法分支树发送至目标设备,以使所述目标设备基于所述第二方数据源的对比语法分支树对所述第二方数据源对应的数据进行处理,并将处理所得的第二处理结果与所述第一处理结果进行对比,包括:
将表示第二方数据源的对比语法分支树转换为字符串形式的第二表达式;
将所述第一处理结果和所述第二表达式发送至目标设备,以使所述目标设备基于所述第二表达式对所述第二方数据源对应的数据进行处理,并将处理所得的第二处理结果与所述第一处理结果进行对比。
10.根据权利要求9所述的方法,其特征在于,所述将所述第一处理结果和所述第二表达式发送至目标设备,以使所述目标设备基于所述第二表达式对所述第二方数据源对应的数据进行处理,并将处理所得的第二处理结果与所述第一处理结果进行对比,包括:
通过公钥对所述第一处理结果进行加密处理,得到第一密文;
将所述第一密文、所述公钥和所述第二表达式发送至目标设备,以使所述目标设备基于所述第二表达式对所述第二方数据源对应的数据进行处理,并基于所述公钥对处理所得的第二处理结果进行加密,将加密所得的第二密文与所述第一密文进行对比,得到数据对比结果。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
按照所述数据对比式对所述数据对比结果进行转换,得到布尔型的目标对比结果。
12.根据权利要求1至11中任一项所述的方法,其特征在于,所述方法应用于服务器;所述基于所述第二对比语法树中表示第一方数据源的对比语法分支树,对所述第一方数据源对应的数据进行处理,得到第一处理结果,包括:
选取所述第二对比语法树中表示第一方数据源的对比语法分支树;
将所述第一方数据源的对比语法分支树发送至第一方设备,以使所述第一方设备对所述第一方数据源对应的数据进行处理,得到第一处理结果。
13.一种数据对比装置,其特征在于,所述装置包括:
转换模块,用于将数据对比式转换成第一对比语法树;
处理模块,用于对所述第一对比语法树的节点进行裁剪和移项处理,得到第二对比语法树;基于所述第二对比语法树中表示第一方数据源的对比语法分支树,对所述第一方数据源对应的数据进行处理,得到第一处理结果;
发送模块,用于将所述第一处理结果和所述第二对比语法树中表示第二方数据源的对比语法分支树发送至目标设备,以使所述目标设备基于所述第二方数据源的对比语法分支树对所述第二方数据源对应的数据进行处理,并将处理所得的第二处理结果与所述第一处理结果进行对比,得到数据对比结果。
14.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至12中任一项所述的方法的步骤。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至12中任一项所述的方法的步骤。
16.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至12中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210607353.2A CN115114360A (zh) | 2022-05-31 | 2022-05-31 | 数据对比方法、装置、计算机设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210607353.2A CN115114360A (zh) | 2022-05-31 | 2022-05-31 | 数据对比方法、装置、计算机设备、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115114360A true CN115114360A (zh) | 2022-09-27 |
Family
ID=83327304
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210607353.2A Pending CN115114360A (zh) | 2022-05-31 | 2022-05-31 | 数据对比方法、装置、计算机设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115114360A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116737763A (zh) * | 2023-08-16 | 2023-09-12 | 腾讯科技(深圳)有限公司 | 结构化查询语句执行方法、装置、计算机设备、存储介质 |
-
2022
- 2022-05-31 CN CN202210607353.2A patent/CN115114360A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116737763A (zh) * | 2023-08-16 | 2023-09-12 | 腾讯科技(深圳)有限公司 | 结构化查询语句执行方法、装置、计算机设备、存储介质 |
CN116737763B (zh) * | 2023-08-16 | 2023-11-21 | 腾讯科技(深圳)有限公司 | 结构化查询语句执行方法、装置、计算机设备、存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111382174B (zh) | 多方数据联合查询方法、装置、服务器和存储介质 | |
US9514247B1 (en) | Message passing in a distributed graph database | |
CA3098770A1 (en) | Performing map iterations in blockchain-based system | |
WO2022072415A1 (en) | Privacy preserving machine learning using secure multi-party computation | |
WO2020098819A2 (en) | Performing map iterations in a blockchain-based system | |
CN111046237A (zh) | 用户行为数据处理方法、装置、电子设备及可读介质 | |
CN109359237A (zh) | 一种用于搜索寄宿程序的方法与设备 | |
US20230188329A1 (en) | Using secure multi-party computation and probabilistic data structures to protect access to information | |
EP4058951A1 (en) | Privacy preserving machine learning via gradient boosting | |
CN108197491B (zh) | 一种基于密文的子图检索方法 | |
CN116680713A (zh) | 基于隐私集合求交的联邦复合运算方法、装置、介质 | |
CN115114360A (zh) | 数据对比方法、装置、计算机设备、存储介质 | |
US9043323B2 (en) | Method and apparatus for providing search with contextual processing | |
Wang et al. | Search ranges efficiently and compatibly as keywords over encrypted data | |
CN116450689A (zh) | 多方数据查询方法、计算节点和tee设备 | |
CN116383246A (zh) | 联合查询方法以及装置 | |
CN116010678A (zh) | 一种匿踪查询方法、装置及设备 | |
Bonsma et al. | Extremal graphs having no matching cuts | |
KR20220155370A (ko) | 보안 다자간 연산의 성능 향상 | |
CN113010769A (zh) | 基于知识图谱的物品推荐方法、装置、电子设备及介质 | |
CN116737763B (zh) | 结构化查询语句执行方法、装置、计算机设备、存储介质 | |
CN113312637B (zh) | 代理服务器及其对加密的订阅与事件进行匹配的方法 | |
Hamkins et al. | The rigid relation principle, a new weak choice principle | |
US20240005022A1 (en) | Privacy-preserving dataset sketches that can be joined non-interactively | |
US10896193B2 (en) | Cache fetching of OLAP based data using client to client relationships and data encoding |
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 |