CN116383246A - 联合查询方法以及装置 - Google Patents
联合查询方法以及装置 Download PDFInfo
- Publication number
- CN116383246A CN116383246A CN202310353636.3A CN202310353636A CN116383246A CN 116383246 A CN116383246 A CN 116383246A CN 202310353636 A CN202310353636 A CN 202310353636A CN 116383246 A CN116383246 A CN 116383246A
- Authority
- CN
- China
- Prior art keywords
- query
- operator
- joint
- data
- target
- 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
- 238000000034 method Methods 0.000 title claims abstract description 123
- 230000006870 function Effects 0.000 claims description 125
- 238000006243 chemical reaction Methods 0.000 claims description 92
- 238000004364 calculation method Methods 0.000 claims description 64
- 238000012795 verification Methods 0.000 claims description 35
- 238000012545 processing Methods 0.000 claims description 34
- 239000003999 initiator Substances 0.000 claims description 17
- 238000004458 analytical method Methods 0.000 claims description 14
- 238000004806 packaging method and process Methods 0.000 claims description 14
- 238000013500 data storage Methods 0.000 claims description 10
- 238000010276 construction Methods 0.000 claims description 8
- 230000008569 process Effects 0.000 description 33
- 238000012216 screening Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 11
- 238000004590 computer program Methods 0.000 description 10
- 238000003860 storage Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 5
- 238000005538 encapsulation Methods 0.000 description 5
- 238000005457 optimization Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 3
- 238000007405 data analysis Methods 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 3
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012858 packaging process Methods 0.000 description 1
- ZLIBICFPKPWGIZ-UHFFFAOYSA-N pyrimethanil Chemical compound CC1=CC(C)=NC(NC=2C=CC=CC=2)=N1 ZLIBICFPKPWGIZ-UHFFFAOYSA-N 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
-
- 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/244—Grouping and aggregation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书实施例提供联合查询方法以及装置,其中所述联合查询方法包括:接收目标查询语句以及目标查询语句关联的元数据信息;基于元数据信息确定目标查询语句关联的查询方,并通过解析目标查询语句,确定查询方对应的本地查询算子和联合查询算子;将本地查询算子转换为本地查询语句,并基于本地查询语句和联合查询算子创建查询方对应的数据查询任务;将数据查询任务发送至查询方,并根据查询方返回的任务执行结果确定目标查询语句的查询信息。实现了将目标查询语句拆分为由单个查询方查询的本地查询算子,以及需要多个查询方联合查询的联合查询算子,再将本地查询算子转换为本地查询语句,以便基于查询语句的通用性,直接适配查询方的计算引擎。
Description
技术领域
本说明书实施例涉及数据处理技术领域,特别涉及一种联合查询方法。
背景技术
随着互联网的发展,数据在推动企业增长和挖掘新的企业赛道上变得越来越重要。然而由于企业对个人隐私数据、商业机密数据泄露的担忧,“数据孤岛”现象日渐明显。目前,为了实现多方数据的安全流通,通常采用多方联合查询的方式,实现数据的可用不可见。但由于不同的联合查询,参与联合查询的查询方是不同的。也因此,各查询方所使用的计算引擎也可能是不同的。这种情况下查询方通常无法直接执行服务端下发的查询算子,因此,亟需一种解决上述问题的技术方案。
发明内容
有鉴于此,本说明书实施例提供了两种联合查询方法。本说明书一个或者多个实施例同时涉及两种联合查询装置,一种计算设备,一种计算机可读存储介质以及一种计算机程序,以解决现有技术中存在的技术缺陷。
根据本说明书实施例的第一方面,提供了一种联合查询方法,应用于服务端,包括:
接收目标查询语句以及所述目标查询语句关联的元数据信息;
基于所述元数据信息确定所述目标查询语句关联的查询方,并通过解析所述目标查询语句,确定所述查询方对应的本地查询算子和联合查询算子;
将所述本地查询算子转换为本地查询语句,并基于所述本地查询语句和所述联合查询算子创建所述查询方对应的数据查询任务;
将所述数据查询任务发送至所述查询方,并根据所述查询方返回的任务执行结果确定所述目标查询语句的查询信息。
根据本说明书实施例的第二方面,提供了第二种联合查询方法,应用于查询端,包括:
接收服务端发送的数据查询任务;
基于所述数据查询任务确定安全联合查询算子,并读取所述安全联合查询算子对应的算子引擎类型;
基于所述算子引擎类型对应的算子封装函数,对所述安全联合查询算子进行封装处理,获得自定义查询函数;
通过执行所述数据查询任务中的本地查询语句以及所述自定义查询函数,获得任务查询结果,并将所述任务执行结果返回至所述服务端,其中,所述自定义查询函数与所述数据查询任务关联的协同查询端关联。
根据本说明书实施例的第三方面,提供了第三种联合查询方法,应用于客户端,包括:
确定发起方提交的目标查询语句,并将所述目标查询语句发送至服务端;
接收所述服务端返回的所述目标查询语句对应的查询信息;
在所述查询信息为查询成功的情况下,在所述目标查询语句对应的数据存储空间中提取所述目标查询语句对应的目标数据;
基于所述目标数据执行所述目标查询语句关联的目标任务。
根据本说明书实施例的第四方面,提供了第一种联合查询装置,应用于服务端,包括:
接收语句模块,被配置为接收目标查询语句以及所述目标查询语句关联的元数据信息;
解析模块,被配置为基于所述元数据信息确定所述目标查询语句关联的查询方,并通过解析所述目标查询语句,确定所述查询方对应的本地查询算子和联合查询算子;
创建模块,被配置为将所述本地查询算子转换为本地查询语句,并基于所述本地查询语句和所述联合查询算子创建所述查询方对应的数据查询任务;
确定信息模块,被配置为将所述数据查询任务发送至所述查询方,并根据所述查询方返回的任务执行结果确定所述目标查询语句的查询信息。
根据本说明书实施例的第五方面,提供了第二种联合查询装置,应用于查询端,包括:
接收任务模块,被配置为接收服务端发送的数据查询任务;
确定模块,被配置为基于所述数据查询任务确定安全联合查询算子,并读取所述安全联合查询算子对应的算子引擎类型;
封装模块,被配置为基于所述算子引擎类型对应的算子封装函数,对所述安全联合查询算子进行封装处理,获得自定义查询函数;
执行模块,被配置为通过执行所述数据查询任务中的本地查询语句以及所述自定义查询函数,获得任务查询结果,并将所述任务执行结果返回至所述服务端,其中,所述自定义查询函数与所述数据查询任务关联的协同查询端关联。
根据本说明书实施例的第六方面,提供了第三种联合查询装置,应用于客户端,包括:
发送语句模块,被配置为确定发起方提交的目标查询语句,并将所述目标查询语句发送至服务端;
接收信息模块,被配置为接收所述服务端返回的所述目标查询语句对应的查询信息;
提取模块,被配置为在所述查询信息为查询成功的情况下,在所述目标查询语句对应的数据存储空间中提取所述目标查询语句对应的目标数据;
执行任务模块,被配置为基于所述目标数据执行所述目标查询语句关联的目标任务。
根据本说明书实施例的第七方面,提供了一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该计算机可执行指令被处理器执行时实现上述联合查询方法的步骤。
根据本说明书实施例的第八方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现上述联合查询方法的步骤。
根据本说明书实施例的第九方面,提供了一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行上述联合查询方法的步骤。
本说明书实施例,为了保障查询方数据的安全性,并提高查询方的查询效率,通过接收目标查询语句以及目标查询语句关联的元数据信息,基于元数据信息确定目标查询语句关联的查询方,并通过解析目标查询语句,确定查询方对应的本地查询算子和联合查询算子,实现了将目标查询语句拆分为由单个查询方进行查询的本地查询算子,以及需要多个查询方联合查询的联合查询算子,并将这些查询算子按照查询方进行划分;再将本地查询算子转换为本地查询语句,以便基于查询语句的通用性,可以直接适配查询方的计算引擎,提高了对于查询方的计算引擎的适配性。之后基于本地查询语句和联合查询算子创建查询方对应的数据查询任务,将数据查询任务发送至查询方,以便查询方可以执行自身专属的数据查询任务从而实现对目标查询语句的查询,并根据查询方返回的任务执行结果确定目标查询语句的查询信息,实现了对目标查询语句按照查询端进行联合查询的拆分与执行,提高了联合查询过程的安全性。
附图说明
图1是本说明书一个实施例提供的一种联合查询方法的示意图;
图2是本说明书一个实施例提供的第一种联合查询方法的流程图;
图3是本说明书一个实施例提供的一种联合查询方法的处理过程流程图;
图4是本说明书一个实施例提供的第二种联合查询方法的流程图;
图5是本说明书一个实施例提供的第三种联合查询方法的流程图;
图6是本说明书一个实施例提供的第一种联合查询装置的结构示意图;
图7是本说明书一个实施例提供的第二种联合查询装置的结构示意图;
图8是本说明书一个实施例提供的第三种联合查询装置的结构示意图;
图9是本说明书一个实施例提供的一种计算设备的结构框图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
此外,需要说明的是,本说明书一个或多个实施例所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
SQL(Structured Query Language,结构化查询语言),具有数据操作和数据定义等多种能力,在大数据应用中常通过SQL进行数据分析与计算。
多方安全SQL查询:指SQL中使用的数据来源于多个参与方。SQL通过某种方式执行,在保证各参与方数据不泄露的前提下,完成SQL指定的数据分析与计算。
执行计划:是对SQL如何执行的形式化表,用于描述SQL实际的执行过程。
计算引擎(Compute Engine):用于处理数据的程序称为计算引擎。在大数据应用中计算引擎为海量数据任务提供算力支持。
Bitmap(位图),是比特位bit的集合,用来存放某种状态(0或1)。在大数据应用中通过将可枚举的用户属性标签存储为Bitmap,来进行任意数量用户属性标签的交并差运算。
安全多方计算(Secure Multi-party Computation,MPC):指在无可信第三方的情况下,通过多个参与方安全协同计算,在不泄露各自真实数据的同时确保各参与方得到正确的数据结果反馈。
秘密分享(Secret Sharing):通过将原始值拆散成多份,并将其分发到多个参与方,使得每个参与方只能拿到原始值的一部分,从而达到一个或少数几个参与方无法还原出原始值。
Spark:是专为大规模数据处理而设计的快速通用的计算引擎。
Flink:是开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。
MaxCompute(大数据计算):是一种快速、完全托管的EB级数据仓库解决方案。
在本说明书中,提供了两种联合查询方法,本说明书同时涉及两种联合查询装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
参见图1,本说明书实施例,为了保障查询方数据的安全性,并提高查询方的查询效率,通过接收客户端提交的目标查询语句以及目标查询语句关联的元数据信息,基于元数据信息确定目标查询语句关联的查询方,并通过解析目标查询语句,确定查询方对应的本地查询算子和联合查询算子,实现了将目标查询语句拆分为由单个查询方进行查询的本地查询算子,以及需要多个查询方联合查询的联合查询算子,并将这些查询算子按照查询方进行划分;再将本地查询算子转换为本地查询语句,以便基于查询语句的通用性,可以直接适配查询方的计算引擎,提高了对于查询方的计算引擎的适配性。之后基于本地查询语句和联合查询算子创建查询方对应的数据查询任务(比如查询方A对应的数据查询任务1,查询方B对应的数据查询任务N),将数据查询任务发送至查询方(则将数据查询任务1发送至查询方A对应的查询端A,将数据查询任务N发送至查询方B对应的查询端B),以便查询方可以执行自身专属的数据查询任务从而实现对目标查询语句的联合查询,并根据查询方返回的任务执行结果确定目标查询语句的查询信息,实现了对目标查询语句按照查询端进行联合查询的拆分与执行,提高了联合查询过程的安全性。
实际应用中,通常不同企业持有不同的数据,但为了保护数据的隐私性以及安全性,企业通常不希望自己持有的数据被泄露给其他方,因此,数据之间的流通性受限,数据真实价值无法被挖掘。目前,为了提高数据之间的流通性,可以采用联合查询的方式对数据进行查询。由服务端对联合查询语句进行解析,获得各个查询需要执行的查询算子。但由于参与联合查询的各个查询方所使用的计算引擎可能是不同的。这种情况下查询方通常无法直接执行服务端下发的查询算子。
以对用户消费数据的联合查询为例,企业A持有用户的属性信息,企业B持有用户的交易数据,企业A希望获基于用户的消费能力,在自身用户中筛选出一部分潜力用户,用以进行资源项目推荐。而为了保护数据的安全性以及隐私性,企业B不会将自己持有的交易数据泄露给企业A。因此,为了实现企业A和企业B之间数据的流通性。实现双方数据的可用不可见。企业A需要预先和企业B对于使用数据进行协商,以便企业A明确所需要的交易数据(比如消费金额,以及交易次数等)对应的字段以及双方字段之间的关联关系等,并基于此构建目标查询语句。
构建完成之后,企业A作为目标查询语句的发起方,向客户端提交该目标查询语句。并由客户端将目标查询语句发送至服务端。服务端作为第三方,接收到目标查询语句之后,基于自身使用Spark计算引擎对目标查询语句进行解析,从而获得需要在企业A执行的本地查询算子以及在企业B执行的本地查询算子,以及需要双方联合查询的联合查询算子。由于通过Spark计算引擎所解析获得的本地查询算子,是单方查询算子,需要直接被查询方在本地执行,但需要采用Spark计算引擎进行执行。然而企业A对应的查询端A可能使用的是MaxCompute计算引擎,企业B对应的查询端B可能使用Flink计算引擎。也就是说当前的查询端A和查询端B都不具备服务端下发的本地查询算子的执行能力。而是需要查询端A和查询端B安装Spark引擎后,本地查询算子才能够执行被执行,因此,由于计算引擎的不适配性,增加了查询端的算子执行难度。此外,在大数据场景下,查询端可能是由多个查询设备组成的集群。在查询量巨大的情况下,为了完成查询,还需要对该集群中的查询设备都安装Spark计算引擎,增加了联合查询的时间成本以及资源成本。因此,亟需一种解决上述问题的技术方案。
参见图2,图2示出了根据本说明书一个实施例提供的第一种联合查询方法的流程图,应用于服务端,具体包括以下步骤。
步骤202:接收目标查询语句以及所述目标查询语句关联的元数据信息。
具体的,服务端,用以提供对目标查询语句进行联合查询服务的应用程序或智能设备。该服务端可以仅作为一个其中,目标查询语句,是指待查询的数据来源于多个数据提供方的查询语句,也可以称为联合查询语句。元数据信息,用以描述目标查询语句中关联的待查询数据相关的信息,比如:数据表信息、存储位置信息、数据库信息,字段类型信息等,在此不做限制。
实际应用中,由于待查询的数据来源于多个数据提供方,即查询方,但是各个数据提供方可能出于数据的安全性以及隐私性方面的考虑,不希望自己持有的数据被泄露给其他方,因此为了充分发挥数据价值,同时又能保障数据的安全,本说明书实施例,采用查询语句的方式来支持多方的联合计算,从而释放数据更大的价值。
具体实施时,由于服务端可能并非目标查询语句的查询方,在这种情况下,为了保障数据的安全性,服务端作为一个第三方,在对目标查询语句进行处理的过程中,其无法查看或获取待查询的数据。因此,需要用户主动提供目标查询语句关联的元数据信息,以供服务端对目标查询语句进行分析。
比如,发起方U具有联合查询需求,则该发起方U基于该联合查询需求与各个查询方协商后,确定目标查询语句SQL1,并通过客户端提交该目标查询语句SQL1,服务端接收该目标查询语句SQL1,其中,目标查询语句SQL1具体如下所示:
select t1.age,t2.city,count(t1.id)as num
from t1 join t2 on t1.id=t2.id
where t1.gender='male'and t2.province='hebei'
group by t1.age,t2.city;
此外,为了便于服务端对该目标查询语句SQL1进行后续的分析处理,该发起方U还通过客户端提交了该目标查询语句SQL1对应的元数据信息meta。
步骤204:基于所述元数据信息确定所述目标查询语句关联的查询方,并通过解析所述目标查询语句,确定所述查询方对应的本地查询算子和联合查询算子。
具体的,在上述接收目标查询语言以及目标查询语句关联的元数据信息的基础上,考虑到该目标查询语句涉及的一些子查询在一个查询方进行查询即可,即无需多方参与查询。因此,为了实现对于可以在一个查询方进行查询的数据和在多个查询方进行查询的数据
其中,查询方,是指目标查询语句关联的待查询数据所属的数据提供方。实际应用中,由于联合查询的查询方的数量多个,因此,每个查询方持有部分待查询数据。相应的,本地查询算子,是指输入数据是来源于一方(一个查询方)的算子。联合查询算子,是指输入数据是来源于多方(至少两个查询方)的算子。其中,算子,算子可以理解为语句执行过程中各个步骤的具体操作或运算。比如:select*from A where A.id=1010中where A.id=1010即为过滤算子。具体实施时,由于本地查询算子将在查询方本地执行,并且没有其他查询方参与,因此,该本地查询算子可以直接对明文数据进行处理,因此,该本地查询算子也可以称为明文算子;而联合查询算子需要多个查询方联合查询,因此,为了保障数据的安全性,需要对数据进行加密后进行数据查询,也因此联合查询算子可以称为密文算子。
实际应用中,由于元数据信息中可以包括:目标查询语句所查询的数据表所属的查询方的相关信息(比如数据库地址,查询方标识等),因此,基于该元数据信息即可确定目标查询语句关联的查询方。再通过解析目标查询语句,确定查询方对应的本地查询算子和联合查询算子。
沿用上例,根据目标查询语句SQL1中的数据表名称t1以及t2,查询元数据信息meta,确定数据表名称t1对应的查询方为A,数据表名称t2对应查询方为B。并通过解析目标查询语句SQL1,获得查询方A对应的本地查询算子和查询方B对应的联合查询算子,具体如下
表1所示:
表1
实际应用中,在大数据联合查询场景中,在确定目标查询语句关联的查询方的基础上,为了使查询方了解此次数据查询的详情,并使之可以基于持有的数据选择是否支持将该数据用于目标查询语句的查询,本说明书实施例中,所述基于所述元数据信息确定所述目标查询语句关联的查询方之后,还包括:
基于所述目标查询语句生成针对所述查询方的查询审批单,并将所述查询审批单发送至所述查询方;
在接收到所述查询方针对所述查询审批单的审批结果为通过的情况下,执行所述通过解析所述目标查询语句,确定所述查询方对应的本地查询算子和联合查询算子步骤。
具体的,查询审批单,是指用以申请执行目标查询语句的许可的信息。该查询审批单可以包括目标查询语句、目标查询语句对应的发起方和/或查询时间等信息。该查询审批单可以是文件的形式,也可以是表格的形式等,在此不做限制。具体实施时,可以针对不同的查询方生成不同的查询审批单,也可以针对不同的查询方生成相同的查询审批单,在此不做限制。在针对不同的查询方生成不同的查询审批单的情况下,查询方对应的查询审批单中可以仅包含其所需提供用以进行查询的数据表信息以及查询字段,在此不做限制。
基于此,为了保障查询方数据的安全性以及被使用的知情权,在发起方提交目标查询语句之后,则基于目标查询语句以及其相关信息(比如发起方信息、数据表信息、查询字段等信息)生成查询审批单。具体实施时,可以基于上述信息对预设的查询审批单模板进行更新,从而审查审批单,也可以按照预设的方式构建查询审批单,在此不做限制。生成查询审批单之后,将查询审批单发送至查询方。查询方即可基于该查询审批单获知目标查询语句的具体详情,并可以基于该查询审批单进行审批操作,并将审批结果返回至服务端。具体的,若查询方针对查询审批单执行审批通过的操作,服务端接收到的查询方针对查询审批单的审批结果即为通过,表示查询方允许对该目标查询语句进行查询处理,则执行通过解析所述目标查询语句,确定所述查询方对应的本地查询算子和联合查询算子;
若查询方针对查询审批单执行审批不通过的操作,服务端接收到的查询方针对查询审批单的审批结果即为不通过,表示查询方不允许对该目标查询语句进行查询处理,则将该审批结构发送至客户端。以便使目标查询语句的发起方获知该审批结果。
沿用上例,针对目标查询语句SQL1生成查询审批单AF,在目标查询语句关联的查询方为的查询方A以及查询方B的情况下,并将该查询审批单AF分别发送至查询方A以及查询方B。
综上,通过基于目标查询语句生成审查审批单,并在查询审批单的审批结果为审批通过的情况下,对目标查询语句进行后续处理,保障了查询方的数据被查询的知情权,并进一步提高了查询方的数据安全性。
进一步的,由于目标查询语句在具体执行时,可能并非全部算子都需要多个参与方参与查询。对于需要多个参与方参与的算子,为了保障数据的安全性,需要在密文环境下执行,而对于一个查询方可以完成查询的算子,则无需进行密文处理。因此,为了对二者采用不同的方式进行处理,需要先将二者进行区分。本说明书实施例,所述通过解析所述目标查询语句,确定所述查询方对应的本地查询算子和联合查询算子,具体实现如下所示:
对所述目标查询语句进行解析,获得所述目标查询语句对应的查询算子序列;
确定所述查询算子序列中查询算子的数据表信息,并根据在所述元数据信息中所述数据表信息对应的查询方标识信息,确定所述查询算子序列中查询算子的查询方;
在所述查询算子序列中选择查询方相同的查询算子作为本地查询算子,以及在所述查询算子序列中选择查询方不同的查询算子作为联合查询算子。
具体的,查询算子序列,是指由至少一个查询算子按照执行顺序进行排列所组成的序列。其中,查询算子,是指目标查询语句中包含的算子。相应的,数据表信息,是指数据表的名词和/或别称等信息。查询方标识信息,是指可以用以唯一标识查询方的信息。该查询方标识信息可以是查询方的名称、访问地址等标识信息。
基于此,在确定目标查询语句关联的查询方的基础上,为了区分本地查询算子以及联合查询算子,以便对二者采用不同的方式进行处理,本说明书实施例中,通过对目标查询语句进行解析,获得目标查询语句对应的查询算子序列。具体实施时,可以采用目标查询语句对应的计算引擎对目标查询语句进行解析,也可以采用自定义的解析程序对目标查询语句进行解析,在此不做限制。
在获得查询算子序列的基础上,根据查询算子序列中查询算子的数据表信息确定对应的查询方标识信息,确定每个查询算子的查询方。再根据查询算子的数据来源是一个查询方还是多个查询方,确定查询算子是本地查询算子,还是联合查询算子。
比如查询算子1中包括一个查询字段id,该查询字段id所属的数据表A对应查询方S1,即查询方相同,则将查询算子S1作为本地查询算子。查询算子2中包括两个查询字段grade(年级)以及score(分数),其中查询字段grade属于数据表A,查询字段score数据表B,而数据表A在元数据信息中记录的查询方为S1,数据表B在元数据信息中记录的查询方为S2,也就是说查询算子S2对应多个查询方,即查询方不同,则将查询算子S2作为联合查询算子。
综上,通过确定查询算子序列中各个查询算子对应的查询方是否为一个,将查询算子序列中的查询算子划分为本地查询算子以及联合查询算子,以便针对不同类型的算子进行不同方式的查询处理,提高了查询的灵活性以及效率。
进一步的,考虑到相比于本地的数据查询,基于联合查询将消耗更多的计算资源与通信资源。如果能降低参与联合查询的数据量,将显著的提升多方联合查询的效率。因此,本说明书实施例中,所述对所述目标查询语句进行解析,获得所述目标查询语句对应的查询算子序列,具体如下所示:
对所述目标查询语句进行解析,获得初始查询算子序列;
基于预设查询优化策略,对所述初始查询算子序列进行优化,获得所述目标查询语句对应的查询算子序列。
具体的,初始查询算子序列,是指未优化前的查询算子序列。相应的,预设查询优化策略,是指预先设置的对初始查询算子序列进行优化的策略。具体的,该预设优化查询策略,可以谓词下推策略、计算列下推策略等,在此不做限制。其中,谓词下推策略,是指将过滤条件(比如SQL中的where条件)尽可能移动至靠近数据源的位置(即执行计划靠前的位置),以使真正执行时能直接跳过无关的数据,从而达到节省计算量,优化性能的效果。
基于此,考虑到联合查询涉及到多方资源的消耗,因此,为了提高查询效率,需要尽量减少联合查询部分的数据量,因此,可以采用预设查询优化策略,对初始查询算子序列进行优化,获得查询算子序列,以便将目标查询语句中的计算尽可能在查询方本地进行查询,从而降低参与联合查询的数据量。
比如,初始查询算子序列中查询算子的排列顺序为查询算子S1,查询算子S2以及查询算子S3,基于谓词下推策略,对初始查询算子序列中的查询算子进行执行顺序的优化,获得查询算子序列,该查询算子序列中查询算子的排列顺序为查询算子S3,查询算子S2以及查询算子S1。
此外,还可以直接对目标查询语句进行优化,假设,接收初始查询语句,该初始查询语句为:select count(1)from A Join B on A.id=B.id where A.score>60andB.grade<6;
在处理Join操作之前需要首先对A和B执行TableScan(全表扫描)操作,然后再进行Join,再执行过滤,最后计算聚合函数返回,通过谓词下推策略,把过滤条件A.score>60和B.grade<6分别移到A表的TableScan和B表的TableScan的时候执行,可以大大降低Join操作的输入数据。优化后获得的目标查询语句如下所示:
select count(1)from(select*from A where score>60)A1 Join(select*fromB where grade<6)B1 on A1.id=B1.id。
综上,通过对初始查询算子序列进行执行顺序的优化,提高了查询的性能,减少了联合查询的计算量,并减少了对查询方资源消耗。
在上述接收到目标查询语句以及元数据信息的基础上,考虑到目标查询语句中涉及的待查询的字段表示的含义不同,其敏感程度不同,因此,为了保障在查询过程中数据的安全性,本说明书实施例中,所述接收目标查询语句以及所述目标查询语句关联的元数据信息之后,还包括:
基于预先配置的表字段安全规则,对所述查询算子序列中查询算子的查询字段进行安全性校验;
在校验结果为通过的情况下,执行所述确定所述查询算子序列中查询算子的数据表信息步骤;
在校验结果为不通过的情况下,生成所述校验结果对应的校验信息,并将所述校验信息发送至提交所述目标查询语句的客户端,接收所述客户端基于所述校验信息提交的更新查询语句,将所述更新查询语句作为所述目标查询语句,并执行所述基于预先配置的表字段安全规则,对所述目标查询语句中的查询字段进行安全性校验步骤。
具体的,表字段安全规则,可以理解为预先设置对目标查询语句中的查询字段进行查询安全性校验的规则。具体的,该表字段安全规则,可以是存在于元数据信息中,可以是预先在服务端进行配置的,在此不做限制。具体的,该表字段安全规则,可以是针对表字段的使用规则进行配置。该表字段安全规则的配置详情可以如下表2所示:
表2
相应的,查询字段,是指目标查询语句中关联的表字段。比如:select id fromtableA,其中,id即为查询字段。校验详情,是指在校验结果为不通过的情况下,对于不通过情况的描述信息,该校验详情中,可以包括不通过安全性校验的查询字段,以及其对应的表字段查询规则等,在此不做限制。客户端,是指提交目标查询语句的应用程序或智能设备。更新查询语句,是指基于校验详情对目标查询语句进行修正后,获得的查询语句。
基于此,为了保障在对目标查询语句的查询过程当中,保护数据的安全性,可以预先针对这些待查询的字段设置对应的表字段安全规则,并基于预设的表字段安全规则,对目标查询语句进行安全性校验,并在校验通过的情况下,表明该目标查询语句对查询字段在其允许的规则范围内进行了合理使用,则执行下述步骤204,从而避免了在目标查询语句的查询过程中过度使用合作方某些字段的数据,保障了数据的安全性。在校验不通过的情况下,表明该目标查询语句对查询字段超出了允许的使用范围,则将校验详情发送至客户端,以便客户端基于该校验详情对目标查询语句进行修改,并提交修改后的更新查询语句。服务端接收到该更新查询语句后将其作为目标查询语句再次进行安全性校验。
需要说明是,在校验不通过的情况下,客户端也可以不做处理。
假设,目标查询语句SQL1中的字段province(省份)对应的表字段规则为:分组键,而province在目标查询语句SQL1中仅作为分组键使用,因此,对该province字段进行安全性校验的校验结果为通过,则执行下述步骤204。
综上,通过对目标查询语句中的查询字段进行安全性校验,进一步提升了联合查询的参与方的数据安全性,保障了联合查询的参与方的数据权益。
步骤206:将所述本地查询算子转换为本地查询语句,并基于所述本地查询语句和所述联合查询算子创建所述查询方对应的数据查询任务。
具体的,在上述确定查询方的本地查询算子以及联合查询语句的基础上,考虑到不同计算引擎所解析出的查询算子可能是不同的,因此,在服务端和查询方所使用的计算引擎不同的情况下,服务端所解析出的查询算子在查询方可能无法识别或执行。因此,本说明书实施例中,将本地查询算子转换为本地查询语句,利用查询语句的通用性,以使本地查询语句可以直接适配查询方本地的计算引擎,而无需查询方安装额外的计算引擎。
其中,本地查询语句,是指将本地查询算子还原后,生成的查询语句。数据查询任务,可以理解为查询方所需执行的数据处理的集合体,也可以理解为一个执行计划。实际应用中,可以直接将本地查询语句和联合查询算子进行组合的方式,创建数据查询任务。
此外,为了保障联合查询算子在执行过程中数据的安全性以及隐秘性,通过多方安全计算协议或加密等方式将联合查询算子转换为安全查询算子,本说明书实施例,所述基于所述本地查询语句和所述联合查询算子创建所述查询方对应的数据查询任务,具体实现如下所示:
将所述联合查询算子转换为安全联合查询算子,基于所述本地查询语句和所述安全联合查询算子,创建所述查询方对应的数据查询任务。
具体的,安全联合查询算子,是指在查询过程中可以避免查询方数据被其他合作方可见的算子。具体实施时,可以通过数据加密、或可信硬件环境、多方安全计算协议等策略,将联合查询算子转换为安全联合查询算子,再将本地查询语句和安全联合查询算子组合为数据查询任务。
基于此,在将本地查询算子转换为本地查询语句之后,将联合查询算子转换为安全联合查询算子,再将各个查询方对应的本地查询语句和安全联合查询算子进行按照执行顺序进行组合,获得查询方对应的数据查询任务。
综上,通过将联合查询算子转换为安全联合查询算子,再基于本地查询语句和安全联合查询算子创建查询方对应的数据查询任务,保障了联合查询的安全性,并避免了在查询方进行安全转换,减少了查询方的资源消耗。
进一步的,为了保障转换后安全联合查询算子的准确性以及安全性,本说明书实施例中,所述将所述联合查询算子转换为安全联合查询算子,具体通过如下步骤实现:
步骤20602:确定所述联合查询算子对应的功能描述字符。
具体的,功能描述字符,是指联合查询算子中的操作符,比如联合查询算子为Ajoin B的情况下,join即为其中的功能描述字符。具体实施时,可以预先设置由目标查询语句所属的查询语言中包含的功能描述字符所组成的功能描述字符集合。再将联合查询算子中的字符与功能描述字符集合中的功能描述字符进行匹配,将匹配到的功能描述字符,确定为联合查询算子对应的功能描述字符。
步骤20604:在协议库中预设的多方安全计算协议中,选择与所述功能描述字符对应的目标多方安全计算协议。
具体的,协议库,是指用以存储多方安全协议的存储空间,也可以理解为多个安全多方计算协议的集合。相应的,目标多方安全计算协议,是指与联合查询算子对应的功能描述字符对应的多方安全计算协议。比如,对于功能描述字符group by,其对应的多方安全计算协议可以是基于秘密分享的多方计算安全协议。
实际应用中,可以预先设置多种功能描述字符和多方安全计算协议的对应关系,在确定功能描述字符的基础上,即可基于该对应关系,确定该功能描述字符对应的目标多方安全计算协议。
基于此,为了将联合查询算子准确地转换为对应的安全联合查询算子,以便保障联合查询过程中数据的安全性,需要先确定联合查询算子对应的功能描述字符。再确定与该功能描述字符适配的目标多方安全计算协议,以便基于目标多方安全计算协议的协议流程,实现对联合查询算子的转换。
步骤20606:基于所述目标多方安全计算协议将所述联合查询算子转换为安全联合查询算子。
具体的,在上述确定功能描述字符对应的目标多方安全协议的基础上,基于目标多方安全计算协议中的协议流程,将联合查询算子转换为其对应的查询方的数据执行流程以及数据交换流程,将数据执行流程和数据交换流程作为安全联合查询算子。
再进一步的,考虑到联合查询算子的多样性以及计算的特性,本说明书实施例,为了进一步提高联合查询的安全性以及合理性,所述基于所述目标多方安全计算协议将所述联合查询算子转换为安全联合查询算子,具体实现如下所示:
基于所述目标多方安全计算协议中的隐私集合求交协议,将所述联合查询算子中的联合求交算子转换为安全联合求交算子;
基于所述目标多方安全计算协议中的混淆电路协议,将所述联合查询算子中的联合分组算子转换为安全联合分组算子,将所述安全联合分组算子以及所述安全联合求交算子组成安全联合查询算子。
具体的,隐私集合求交(Private Set Intersection,PSI)协议,是指参与查询的查询方在不泄露任何额外信息的情况下,得到各个查询方持有数据的交集。联合求交算子,是指对多个查询方的数据求交集的算子。比如join算子。安全联合求交算子,是指对多个查询方的数据进行求交集的过程中可以避免查询方数据被其他合作方可见的算子。
混淆电路协议,是指通过布尔电路的观点构造安全函数计算,达到参与查询的查询方可以针对某个数值来计算答案,而不需要知道他们在计算式中输入的具体数字。联合分组算子,是指包括对多个查询方的数据进行分组的算子。比如分组求和算子,分组求最大值算子,分组求求较小值算子等。相应的,安全联合分组算子,是指对多个查询方的数据进行分组的过程中可以避免查询方数据被其他合作方可见的算子。
基于此,在确定联合查询算子对应的目标多方安全计算协议,并且联合查询算子中包括联合求交算子和联合分组算子的基础上,由于隐私集合求交协议,其目标为实现在求交过程中的数据安全性。因此,采用隐私集合求交协议将联合求交算子转换为安全联合求交算子。此外,由于联合分组通常是需要对数据进行分组后的表达式计算,而混淆电路协议不仅可以用于各种计算,在用于数据计算时还可以提高计算效率,因此,基于混淆电路协议将联合查询算子中的联合分组算子转换为安全联合分组算子。
比如,基于隐私集合求交协议,将联合查询算子中的join算子,转换为安全联合求交算子,并基于混淆电路协议,将联合查询算子中的(count…group by)算子,转换为安全联合分组算子。
综上,基于隐私集合求交协议,将联合求交算子转换为安全联合求交算子,以及基于混淆电路协议,将联合分组算子转换为安全联合分组算子,不仅保障了多方安全计算协议的通用性,还保障了数据的安全性。
进一步的,考虑到所述基于所述目标多方安全计算协议中的混淆电路协议将所述联合查询算子中的联合分组算子转换为安全联合分组算子,包括:
确定所述联合分组算子中的分组字段;
根据预设数据转换子算子构建策略,构建所述分组字段对应的数据转换子算子,其中,所述数据转换子算子用于对分组字段的字段值进行数据结构转换;
基于所述混淆电路协议以及所述数据转换子算子生成的虚拟数据转换结果,构建联合分组子算子;
将所述数据转换子算子以及所述联合分组子算子组成所述联合分组算子对应的安全联合分组算子。
具体的,分组字段,是指需要进行分组的字段。该分组字段,可以是地区、课程、年级等,在此不做限制。预设数据转换子算子构建策略,是指预先设置的用以基于分组字段构建数据转换子算子的策略。其中,数据转换子算子,是指联合分组算子中对分组字段的字段值进行数据结构转换的算子。转换后的数据结构可以为二进制的数据结构,或位图形式的数据结构等。具体实施时,由于数据转换子算子是用以对分组字段的字段值进行数据结构转换。因此,该预设数据转换子算子构建策略,则用以构建对分组字段的字段值进行数据结构转换的执行流程。
虚拟数据转换结果,用以指代数据转换子算子的执行结果的虚拟表达,比如变量序列、或变量表达式序列等(其中,序列中的每个元素用以表示具体的数据值)。具体的,基于混淆电路协议以及数据转换子算子生成的虚拟数据转换结果,构建联合分组子算子,可以理解为基于混淆电路协议,将虚拟数据转换结果作为输入数据,构建联合分组子算子。
基于此,在需要对联合分组算子进行转换时,先确定联合分组算子中的分组字段,再构建对该分组字段进行数据结构转换的数据转换子算子。并基于混淆电路协议构建以数据转换子算子生成的虚拟数据转换结果为输入数据的联合分组子算子。将数据转换子算子以及联合分组子算子组成联合分组算子对应的安全联合分组算子。以便基于本地查询语句以及安全联合分组算子按照查询方进行划分,获得各个查询方对应的本地查询语句以及安全联合分组算子,再将各个查询方的本地查询语句以及安全联合分组算子按照执行顺序进行编排,生成数据查询任务。
比如,基于隐私集合求交协议,将联合查询算子中的join算子,转换为安全联合求交算子,并基于混淆电路协议,将联合查询算子中的(count…group by)算子,转换为安全联合分组算子。
综上,通过针对联合分组算子中的分组字段构建数据转换子算子,再基于混淆电路协议以及虚拟数据转换结果,构建安全联合分组算子,提升了针对安全联合分组算子的执行效率。
步骤208:将所述数据查询任务发送至所述查询方,并根据所述查询方返回的任务执行结果确定所述目标查询语句的查询信息。
具体的,在上述获得查询方对应的数据查询任务的基础上,将数据查询任务发送至对应的查询方(可以理解为将数据查询任务发送至对应的查询方的查询端),以便查询方通过执行各自的数据查询任务,协同完成对目标查询语句的查询。
其中,任务执行结果,是指执行数据查询任务的结果,该任务执行结果可以为执行成功,或执行失败,也可以为具体的执行结果数据。相应的,在任务执行结果为执行成功或执行失败的情况下,查询信息,也可以为查询成功或查询失败。具体实施时,若各个数据查询任务的任务执行结果皆为执行成功,则确定目标查询语句的查询信息为查询成功。若任意一个数据查询任务的任务执行结果为执行失败,则确定目标查询语句的查询信息为查询失败。
实际应用中,服务端在获得该查询信息之后,将该查询信息反馈至客户端,以便联合查询的发起方可以基于该查询信息进行后续的数据处理。
比如:将查询方A对应的数据查询任务task1发送至查询方A,并将查询方B对应的数据查询任务task2发送至查询方B,并接收查询方A返回的针对数据查询任务task1的任务查询结果result1,该任务查询结果result1为执行成功,并接收查询方B返回的针对数据查询任务task2的任务查询结果result2,该任务查询结果result2为执行失败,由于存在一个查询方返回的任务执行结果为查询失败,则该目标查询语句的查询信息为查询失败。
具体的,如图3所示,服务端接收多方SQL(目标查询语句),并通过SQL引擎,对接收的方SQL(目标查询语句)进行SQL校验以及SQL解析,获得SQL执行计划,该SQL执行计划中包括本地查询算子以及联合查询算子。将本地查询算子恢复为本地查询语句。并将本地查询语句以及联合查询算子发送至对应的查询方进行数据的联合查询。
本说明书实施例提供的第一种联合查询方法,应用于服务端,为了保障查询方数据的安全性,并提高查询方的查询效率,通过接收目标查询语句以及目标查询语句关联的元数据信息,基于元数据信息确定目标查询语句关联的查询方,并通过解析目标查询语句,确定查询方对应的本地查询算子和联合查询算子,实现了将目标查询语句拆分为由单个查询方进行查询的本地查询算子,以及需要多个查询方联合查询的联合查询算子,并将这些查询算子按照查询方进行划分;再将本地查询算子转换为本地查询语句,以便基于查询语句的通用性,可以直接适配查询方的计算引擎,提高了对于查询方的计算引擎的适配性。之后基于本地查询语句和联合查询算子创建查询方对应的数据查询任务,将数据查询任务发送至查询方,以便查询方可以执行自身专属的数据查询任务从而实现对目标查询语句的查询,并根据查询方返回的任务执行结果确定目标查询语句的查询信息,实现了根据查询方反馈的任务结果最终确定目标查询语句的执行结果,并保障了联合查询过程的安全性。
参见图4,图4示出了根据本说明书一个实施例提供的第二种联合查询方法的流程图,应用于查询端,具体包括以下步骤。
步骤402:接收服务端发送的数据查询任务。
具体的,查询端,是指查询方所使用的应用程序或智能设备。
步骤404:基于所述数据查询任务确定安全联合查询算子,并读取所述安全联合查询算子对应的算子引擎类型。
具体的,在上述接收服务端发送的数据查询任务的基础上,为了实现查询端在数据查询过程中数据的安全性,本说明书实施例,基于数据查询任务确定安全联合查询算子,并读取安全联合查询算子的算子引擎类型,以便能够基于查询方的计算引擎执行安全联合查询算子。
其中,算子引擎类型,是指用以执行安全联合查询算子的计算引擎的类型,比如Spark类型,MaxCompute类型,Flink类型等。实际应用中,可以由查询方在查询端预先配置安全联合查询算子对应的算子引擎类型,在确定数据查询任务中的安全联合查询算子之后,即可根据配置信息,读取到安全联合查询算子对应的算子引擎类型。
实际应用中,由于待查询的数据来源于多个数据提供方,即查询方,但是各个数据提供方可能出于数据的安全性以及隐私性方面的考虑,不希望自己持有的数据被泄露给其他方,因此为了充分发挥数据价值,同时又能保障数据的安全,做到真正的可用不可见,本说明书实施例,采用安全多方计算(MPC)等安全技术,通过SQL的方式来支持多方的联合计算,从而释放数据更大的价值。
进一步的,考虑到数据查询任务中可能没有直接包含安全联合查询算子,这种情况下,需要在查询端,实现将数据查询任务中的联合查询算子转换为安全联合查询算子,本说明书实施例中,所述基于所述数据查询任务确定安全联合查询算子,具体实现如下所示:
提取所述数据查询任务中的联合查询算子,并将所述联合查询算子转换为安全联合查询算子。
比如:查询方A的数据查询任务task中包括联合查询算子:join算子和(count…group by)算子,则将二者从数据查询任务task中提取出来,并分别将join算子和(count…group by)算子转换为安全联合查询算子。
综上,通过提取数据查询任务中的联合查询算子,并将联合查询算子转换为安全联合查询算子,保障了查询端在执行联合查询过程中的数据安全性。
可选地,所述将所述联合查询算子转换为安全联合查询算子,包括:
确定所述联合查询算子对应的功能描述字符;
在协议库中预设的多方安全计算协议中,选择与所述功能描述字符对应的目标多方安全计算协议;
基于所述目标多方安全计算协议将所述联合查询算子转换为安全联合查询算子。
可选地,所述基于所述目标多方安全计算协议将所述联合查询算子转换为安全联合查询算子,包括:
基于所述目标多方安全计算协议中的隐私集合求交协议,将所述联合查询算子中的联合求交算子转换为安全联合求交算子;
基于所述目标多方安全计算协议中的混淆电路协议,将所述联合查询算子中的联合分组算子转换为安全联合分组算子,将所述安全联合分组算子以及所述安全联合求交算子组成安全联合查询算子。
可选地,所述基于所述目标多方安全计算协议中的混淆电路协议将所述联合查询算子中的联合分组算子转换为安全联合分组算子,包括:
确定所述联合分组算子中的分组字段;
根据预设数据转换子算子构建策略,构建所述分组字段对应的数据转换子算子,其中,所述数据转换子算子用于对分组字段的字段值进行数据结构转换;
基于所述混淆电路协议,根据所述数据转换子算子生成的虚拟数据转换结果构建联合分组子算子;
将所述数据转换子算子以及所述联合分组子算子组成所述联合分组算子对应的安全联合分组算子。
具体的,上述将所述联合查询算子转换为安全联合查询算子的具体实现方式与上述方法实施例中,将联合查询算子转换为安全联合查询算子的具体实现方式类似,参考上述方法实施例中具体实现方式即可,在此不做赘述。
步骤406:基于所述算子引擎类型对应的算子封装函数,对所述安全联合查询算子进行封装处理,获得自定义查询函数。
具体的,在上述读取安全联合查询算子对应的算子引擎类型的基础上,考虑到计算引擎进行计算时,需要被执行对象符合特定的语法结构,因此,为了保障安全联合查询算子可以被顺利执行,需要基于算子引擎类型对应的算子封装函数,对安全联合查询算子进行封装处理,获得可被执行的自定义查询函数。
具体的,算子封装函数,是指用以对安全联合查询算子进行分装的函数模板。相应的,自定义查询函数,是指对算子封装函数进行封装处理后,生成的用以在查询端进行联合查询的函数。
实际应用中,由于不同类型的计算引擎,其对应的编程语言有所差异,因此,其可执行的函数的结构、语法等也存在差异。因此,本说明书实施例中,为了保障安全联合查询算子可以被顺利执行,将安全联合查询算子作为函数体封装入算子分装函数。
比如:预先设置的search()函数模板,将安全联合查询算子填充至该search()函数,获得填充后的search()函数。填充后的search()函数即为自定义查询函数。
步骤408:通过执行所述数据查询任务中的本地查询语句以及所述自定义查询函数,获得任务查询结果,并将所述任务执行结果返回至所述服务端,其中,所述自定义查询函数与所述数据查询任务关联的协同查询端关联。
具体的,在上述获得自定义查询函数的基础上,通过执行本地查询语句以及自定义查询函数,即可获得任务查询结果。并将该任务执行结果返回至服务端,以便服务端可以获知该任务执行结果。
其中,协同查询端,是指用以执行数据查询任务关联的查询任务的查询端。实际应用中,由于自定义查询函数的函数主体是安全联合查询算子,其本质是进行数据的联合查询,而联合查询需要多个查询方协同进行查询处理。
比如,查询方A和查询方B都是安全联合查询算子关联的查询方,因此,在查询方A对应的查询端SA执行安全联合查询算子的时候,需要查询方B对应的查询端SB协同执行该安全联合查询算子的关联查询部分。
具体实施时,考虑到本地查询语句和自定义查询函数所采用的计算引擎可能是不同的计算引擎,因此,本说明书实施例中,所述通过执行所述数据查询任务中的本地查询语句以及所述自定义查询函数,获得任务查询结果,具体实现如下所示:
在所述数据查询任务中提取本地查询语句,并通过所述本地查询语句对应的语句计算引擎执行所述本地查询语句,获得本地查询数据;
基于本地查询数据更新所述自定义查询函数,获得目标自定义查询函数;
通过所述算子引擎类型对应的算子计算引擎执行所述目标自定义查询函数,获得数据查询任务对应的任务执行结果。
具体的,语句计算引擎,是指用以执行本地查询语句的计算引擎。本地查询数据,是指执行本地查询语句获得的查询结果。目标自定义查询函数,是指基于本地查询数据对自定义查询函数进行更新后,获得的自定义查询函数。相应的,算子计算引擎,是指用以执行目标自定义查询函数的计算引擎。实际应用中,语句计算引擎和算子计算引擎可以为相同的计算引擎,也可以为不同的计算引擎。语句计算引擎和算子计算引擎具体为何种计算引擎,需要根据查询端实际的计算环境而定。
基于此,在获得自定义查询函数的基础上,即可对数据查询任务中的本地查询语句以及自定义查询函数进行执行,执行过程中,由于二者具有执行的先后顺序,并且执行在后的通常需要基于在前的执行结果数据进行计算,因此,先采用本地查询语句对应的语句计算引擎执行本地查询语句,并基于本地查询语句的查询结果(即本地查询数据)更新自定义查询函数。具体实施时,可以理解为将本地查询数据对自定义查询函数中所需的查询变量进行赋值或与查询变量进行关联,获得目标自定义查询函数,从而使目标自定义查询函数的查询过程中,可以顺利获得待操作(用以计算)的数据。这是由于在获得安全联合查询算子时,并未进行实际的查询计算,因此安全联合查询算子中对于具体需要进行计算的数据通常采用查询变量的形式进行占位。
比如:在数据查询任务task中提取本地查询语句SQLL,该本地查询语句SQLL对应的语句计算引擎为Spark计算引擎,则通过Spark计算引擎执行本地查询语句SQLL,获得本地查询数据data1,基于本地查询数据data1更新自定义查询函数search(),获得目标自定义查询函数search1(),并执行该目标自定义查询函数search1(),获得该目标自定义查询函数search1()输出的结果,并将该结果作为数据查询任务对应的任务执行结果。
综上,通过语句计算引擎执行本地查询语句,并通过算子计算引擎执行更新后的目标自定义查询函数,获得数据查询任务对应的任务执行结果,实现了按照预先配置的计算引擎类型对应的计算引擎执行查询过程,避免了所需执行的查询函数与查询端所持有的计算引擎不兼容的问题。
进一步的,在所述目标自定义查询函数中包括安全联合求交算子和安全联合分组算子的情况下,所述通过所述算子引擎类型对应的算子计算引擎执行所述目标自定义查询函数,获得任务执行结果,具体通过如下步骤实现:
步骤40802:通过所述算子引擎类型对应的算子计算引擎执行所述目标自定义查询函数中的安全联合求交算子,获得求交数据。
具体的,求交数据,是指执行安全联合求交算子获得的求交结果数据。比如安全联合求求交算子为t1 Join t2 on t1.id=t2.id,则该安全联合求求交算子的求交数据为t1和t2基于id字段进行连接后的数据。
步骤40804:基于所述求交数据更新所述目标自定义查询函数中安全联合分组算子,获得目标安全联合分组算子。
具体的,目标安全联合分组算子,是指基于求交数据更新安全联合分组算子后,获得的算子。具体实施时,基于求交数据更新目标自定义查询函数,获得目标安全联合分组算子的具体实现与上述基于本地查询数据更新所述自定义查询函数,获得目标自定义查询函数的具体实现过程类似,参考上述获得目标自定义查询函数的具体实现过程即可,在此不做赘述。
步骤40806:执行所述目标安全联合分组算子,根据执行结果确定所述数据查询任务对应的任务执行结果。
具体的,在上述获得目标安全联合分组算子的基础上,执行该目标安全联合分组算子,即可获得对目标安全分组算子的执行结果。在执行结果为具体分组数据或正确的情况下,数据查询任务的任务执行结果也为执行正确,在执行结果报错的情况下,数据查询任务的任务执行结果为执行失败。
进一步的,在所述目标安全联合分组算子包括数据转换子算子以及联合分组子算子的情况下,所述通过执行所述目标安全联合分组算子,根据执行结果确定所述数据查询任务对应的任务执行结果,包括:
通过执行所述数据转换子算子对所述求交数据中的分组字段值进行数据转换,根据转换结果获得更新求交数据;
基于所述更新求交数据更新所述联合分组子算子,获得目标联合分组子算子;
通过执行所述目标联合分组子算子对所述更新求交数据进行数据分组处理,根据执行结果确定所述数据查询任务对应的任务执行结果。
具体的,分组字段值,是指分组字段的字段值。相应的,更新求交数据,是指将求交数据中分组字段值进行数据转换,并基于转换结果对求交数据进行更新,获得的数据。目标联合分组子算子,是指基于更新求交数据更新联合分组算子后获得的算子。
基于此,在目标自定义查询函数中的安全联合查询算子中包括安全联合求交算子和安全联合分组算子的情况下,通过算子计算引擎,先执行安全联合求交算子,再将安全联合求交算子的执行结果数据(求交数据)作为输入数据,将其中的分组字段值进行数据转换,获得转换数据(比如位图数据),并将转换数据与求交数据中的其他未进行数据转换的待分组数据组成更新求交数据,并基于更新求交数据将联合分组子算子更新为目标联合分组子算子。并通过执行目标联合分组子算子对更新求交数据进行数据分组处理,获得分组处理结果,以便基于分组处理结果确定数据查询任务对应的任务执行结果。
具体实施时,基于更新求交数据更新所述联合分组子算子的具体实现过程,与上述基于本地查询数据更新所述自定义查询函数,获得目标自定义查询函数的具体实现过程类似,参考上述获得目标自定义查询函数的具体实现过程即可,在此不做赘述。
比如:在目标自定义查询函数search1()中包括安全联合求交算子op1和安全联合分组算子op2的情况下,按照二者的执行顺序,先通过算子计算引擎执行安全联合求交算子op1,获得安全联合求算子输出的求交数据j_data,并通过执行安全联合分组算子op2中的数据转换子算子change_op2对求交数据j_data中的分组字段gender进行数据转换,获得更新求交数据cj_data。再基于更新求交数据cj_data对安全联合分组算子op2中的联合分组子算子group_by_op2进行更新,获得目标联合分组子算子p_group_by_op2,并通过执行目标联合分组子算子p_group_by_op2对更新求交数据cj_data进行分组求和处理,获得的分组求和处理结果中包括:分组字段值male(男)对应的分组求和值为5000,分组字段值female(女)对应的分组求和值为300,则基于该分组求和处理结果,确定数据查询任务对应的任务执行结果为执行成功。
综上,通过对求交数据中的分组字段值进行数据转换,再基于数据转换后获得的更新求交数据进行数据分组处理,提高了数据分组处理效率。
进一步的,为了保障通过数据转换获得的位图数据的准确性,以及后续进行分组处理的便宜性,本说明书实施例中,在所述更新求交数据中包括位图数据以及待分组数据的情况下,所述更新求交数据中位图数据的获得,具体实现如下所示:
通过执行所述数据转换子算子确定所述求交数据中分组字段对应的标识字段;
按照所述标识字段的标识字段值对应的预设标识顺序,对所述求交数据进行排列,并根据排列结果创建所述标识字段值对应的索引值;
根据所述索引值以及所述索引值对应的分组字段值,确定所述分组字段值对应的位图子数据,并将位图子数据组成所述分组字段对应的位图数据。
具体的,标识字段,可以理解为分组字段所对应的描述对象的标识字段。比如职业字段对应的描述对象为用户,则用户的标识即为分组字段对应的标识字段。相应的,标识字段值,是指目标字段的字段值。预设标识顺序,是指预先设置的标识字段值的排列顺序,具体的,该预设标识顺序可以为从小到大的排列顺序,也可以为从大到小的排列顺序,此外,还可以是其他排列方式,在此不做限制。
索引值,是指基于排列结果创建的索引的取值。具体的,该索引值可以是从0开始递增的数值,也可以是从某一编号开始递增的数值,在此不做限制。位图子数据,是指分组字段值对应的一行比特位序列。
基于此,在获得求交数据的基础上,为了提高分组处理的效率以及便于数据的可分布式处理,本说明书实施例中,先通过执行数据转换子算子,确定分组字段的标识字段。这是由于分组字段的字段值通常可能存在多种重复值,而标识字段,通常具有唯一性。按照标识字段的标识字段值对应的预设标识顺序对求交数据进行排列。以便参与联合查询的查询方的数据的一致性。再根据排序结果,为每个标识字段的字段值添加对应的索引值。该索引值,用以表示各个标识字段值的位置。再基于索引值以及索引值对应的分组字段值,确定每个分组字段值对应的一行(与各个索引值对应的)状态取值,即位图子数据。具体的,该值为1表示该索引值对应的分组字段值为该行对应的分组字段值;该值为0表示该索引值对应的分组字段值不为该行对应的分组字段值。将各个分组字段值对应的位图子数据组成分组字段对应的位图数据。
比如:通过执行数据转换子算子change_op2,确定求交数据j_data中的分组字段gender(性别特征)对应的标识字段id(标识)。该分组字段以及标识字段对应的数据如下表3所示:
id | gender |
22 | male |
25 | female |
24 | male |
23 | female |
表3
按照id字段的标识字段值从小到大的顺序对上述数据排列,具体的,排列结果如下表4中的前两列所示:
id | gender | index |
22 | male | 0 |
23 | female | 1 |
24 | male | 2 |
25 | female | 3 |
表4
根据排列结果创建id字段值对应的索引列index,该索引列index对应的索引值具体如上表4中的第3列所示。进一步的,确定从0开始确定每个索引值对应的列位,基于该列位对应的分组字段值,确定该列位对应的数值。即可确定分组字段值对应的位图子数据,该位图子数据具体如下表5所示:
Field(字段) | Value(值) | bitmap_data(位图数据) |
gender | male | 1010 |
gender | female | 0101 |
表5
其中,分组字段值male对应的位图子数据为1010,其表示第一个和第三个id对应的分组字段值(即gender字段值)为male,第二个id和第四个id对应的分组字段值不为male。分组字段值female对应的位图子数据为1010,其表示第一个和第三个id对应的分组字段值不为female,第二个id和第四个id对应的分组字段值为female。并将1010以及0101组成分组字段gender对应的位图数据。
需要说明的是,还可以通过roaring bitmap(咆哮位图)、采样率压缩等位图压缩算法对位图数据进行压缩,进一步提升计算性能与空间利用率。
综上,基于将分组字段的字段值转换为位图数据,由于位图数据是基于位进行操作,大大提高了计算效率,并且由于该存储形态也节省了存储空间,因此提高了通信效率。
具体的,如图3所示,查询端接收到本地查询语句以及安全联合查询算子的基础上,将联合查询算子通过多方安全计算协议转换为安全联合查询算子。将本地查询语句以及安全联合查询算子组成执行计划,具体的,该执行计划中包括本地查询语句以及隐私集合求交协议对应的安全算子(安全联合查询算子)以及协议数据传输(协议数据的交换流程),求交数据中的分组字段构建Bitmap数据,多方安全分组计算协议对应的安全算子以及协议数据传输。并通过调度器根据执行计划的编排(执行顺序)调度执行相应的算子,并交换各查询方的中间协议数据,完成计算过程。具体的,通过明文引擎执行本地查询语句,并通过密文引擎执行安全算子,通过数据传输通道传输协议数据。其中,明文引擎可以是Spark引擎,MaxCompute引擎,Flink引擎。密文引擎也可以是MaxCompute引擎,Flink引擎等。并且由于在对安全算子进行执行之前,还可以对安全算子进行了封装处理,再安装至计算引擎中,实现了可插拔计算引擎,即通过将执行计划与计算引擎解耦,可以将编译器生成的执行计划运行在业界常见的大数据计算引擎中。能够利用查询方现有的大数据计算引擎,而不需要搭建专门的计算集群来支持MPC SQL。
本说明书提供的第二种联合查询方法,应用于查询端,通过接收服务端发送的数据查询任务;基于所述数据查询任务确定安全联合查询算子,并读取所述安全联合查询算子对应的算子引擎类型,基于所述算子引擎类型对应的算子封装函数,对所述安全联合查询算子进行封装处理,获得自定义查询函数;通过执行所述数据查询任务中的本地查询语句以及所述自定义查询函数,获得任务查询结果,并将所述任务执行结果返回至所述服务端,其中,所述自定义查询函数与所述数据查询任务关联的协同查询端关联。实现了对安全联合查询算子的联合查询,保障了在联合查询过程中数据的安全性。
上述为本实施例的第二种联合查询方法的示意性方案。需要说明的是,该第二种联合查询方法的技术方案与上述的第一种联合查询方法的技术方案属于同一构思,第二种联合查询方法的技术方案未详细描述的细节内容,均可以参见上述第一种联合查询方法的技术方案的描述。
参见图5,图5示出了根据本说明书一个实施例提供的第三种联合查询方法的流程图,应用于客户端,具体包括以下步骤。
步骤502:确定发起方提交的目标查询语句,并将所述目标查询语句发送至服务端。
具体的,发起方,是指提交目标查询语句的用户、部门或企业等。
步骤504:接收所述服务端返回的所述目标查询语句对应的查询信息。
步骤506:在所述查询信息为查询成功的情况下,在所述目标查询语句对应的数据存储空间中提取所述目标查询语句对应的目标数据。
具体的,数据存储空间,可以是数据库表,或者excel表格等存储空间,在此不做限制。目标数据,是指目标查询语句的查询结果数据。实际应用中,由于服务端可能是查询方之外的第三方,为了保障数据的安全性,需避免将查询结果数据直接发送回服务端。因此,本说明书实施例中,直接该目标查询语句的查询结果数据存储至目标查询语句对应的数据存储空间。发起方可以直接在该数据存储空间中提取该目标数据。
步骤508:基于所述目标数据执行所述目标查询语句关联的目标任务。
进一步的,考虑到基于目标查询语句进行联合查询的目的,通常是需要基于查询结果进行任务处理,具体的,在所述目标任务为对象推荐任务的情况下,所述目标数据为用户消费数据,所述基于所述目标数据执行所述目标查询语句关联的目标任务,具体可以采用如下两种方式实现:
方式一:基于所述用户消费数据确定待推荐用户,并针对所述待推荐用户执行对象推荐任务,其中,所述对象推荐任务用于向所述待推荐用户推荐对象。
具体的,对象推荐任务,是指用以向用户进行对象推荐的任务。比如向用户推荐商品的商品推荐任务、向用户推荐视频的视频推荐任务等。用户消费数据,是指用户的消费数据。该用户消费数据可以包括用户的用户信息(比如用户名称、用户手机号码等)、用户消费总金额、和/或消费次数等。待推荐用户,是指接收推荐的用户。对象,被推荐的主体,该对象可以是商品、视频、音乐、评论、课程等,在此不做限制。
基于此,在提取用户消费数据的基础上,即可根据用户消费数据中的数据记录以及预设用户筛选条件,即可实现对待推荐用户的筛选。此外,还可以直接用户消费数据中的用户作为待推荐用户,在此不做限制。在确定待推荐用户的基础上,针对待推荐用户执行对象推荐任务。具体的,可以是向待推荐用户发送预先设定的被推荐的对象,也可以是向待推荐用户发送发起方所持有的对象。
比如:查询端A拥有用户的用户数据,查询端B拥有用户的消费数据,基于目标联合语句的联合查询,即可获得用户消费数据,该用户消费数据中包括3条用户消费金额数据。其中,用户A的消费金额为1000,用户B的消费金额为1500,用户C的消费金额为3000。则在筛选条件为筛选消费金额高于1500的用户的情况下,筛选消费金额高于1500的用户作为待推荐用户,并针对用户C执行商品推荐任务。
综上,通过用户消费数据确定待推荐用户,实现了利用目标查询语句的联合查询结果进行用户筛选,提高了待推荐用户筛选的准确性,再为筛选出的用户进行对象推荐,以便基于筛选结果进行对象推荐,提高了对象推荐的准确性。
方式二:基于所述用户消费数据确定目标用户,并基于所述用户消费数据确定所述目标用户关联的目标对象,将所述目标对象推荐至所述目标用户,用于作为所述对象推荐任务的执行结果。
具体的,目标用户,可以理解为接收推荐的用户。目标对象,是指被推荐的主体,该对象可以是商品、视频、音乐、评论、课程等,在此不做限制。
基于此,在用户消费数据中存在对象数据的情况下,在基于用户消费数据确定目标用户,具体的,基于用户消费数据确定目标用户的具体实现与上述基于用户消费数据确定待推荐用户的具体实现类似,参考上述基于用户消费数据确定待推荐用户的具体实现的具体实现即可。在基于用户消费数据确定目标用户之后,确定基于用户消费数据确定待推荐的目标对象,具体的,可以在用户消费数据中选取用户消费次数最多的商品作为目标对象。并将该目标对象推荐至目标用户。
比如:用户消费数据中包括4条用户消费对象数据。具体的,用户A的针对商品1的消费次数为10次,用户A针对商品2的消费次数为1次。用户B的针对商品1的消费次数为2次,用户A针对商品2的消费次数为3次,则在用户筛选条件为筛选消费总次数大于10次的情况下,筛选消费总次数大于10次的用户A作为目标用户。在对象筛选条件为对象消费次数为大于5的对象的情况下,筛选消费次数大于5次的商品2作为目标对象。再将商品2推荐给用户A。
综上,通过用户消费数据确定目标用户以及目标对象,并将目标对象推荐给目标用户,实现了利用目标查询语句的联合查询结果进行用户筛选以及对象筛选,以便基于筛选结果进行对象推荐,提高了对象推荐的准确性。
此外,在所述目标任务为用户分析任务的情况下,所述目标数据为用户广告访问数据,所述基于所述目标数据执行所述目标查询语句关联的目标任务,包括:
基于所述用户广告访问数据,确定广告用户的用户类型,以及基于所述用户广告访问数据确定所述用户类型针对广告位的访问频次;
根据所述访问频次执行所述用户分析任务。
具体的,用户分析任务,是指对用户进行分析的任务。比如分析用户的上线时间,分析用户的喜好、分析用户的使用习惯等。用户广告访问数据,是指用户针对广告的访问数据。该用户广告访问数据中可以包括用户属性信息,以及广告属性信息、广告访问时间和/或广告访问频次等。用户类型,是指访问广告的用户的类型。该用户类型,可以是男性用户类型,女性用户类型,儿童用户类型等,在此不做限制。广告位,是指广告所处的位置,比网站,视频、电视或者商场等。访问频次,是指针对广告位的访问次数。
基于此,在提取用户广告访问数据的基础上,即可根据用户广告访问数据中的用户的地区、职业等即可确定广告用户的用户类型。此外,还可以直接用户广告访问数据中进一步确定用户类型对应的广告位的访问频次。基于访问频次,可以帮助机构了解到不同客群对不同广告位的访问频次,并进一步分析客群的信息价值。
比如:查询端A拥有用户的用户数据,查询端B拥有用户的广告访问数据,基于目标联合语句的联合查询,即可获得用户广告访问数据,该用户广告访问数据中包括2条数据记录:用户A,其类型为T1,针对广告位1的访问频次为2次,用户B,其类型也为T1,针对广告位2的访问频次为30次。则基于该用广告访问数据,即可确定用户类型为T1,并确定用户类型T1针对广告位的1的访问频次为2次,并且用户类型T1针对广告位的2的访问频次为30次,基于该访问频次,即可对用户的访问习惯进行分析。
综上,通过用户广告访问数据确定用户类型以及用户类型针对广告位的访问频次,实现了利用目标查询语句的联合查询结果进行用户类型定位以及访问频次获取,再基于二者用户分析,提供了用户分析的数据基础,并提高了数据分析的准确性。
本说明书提供的第三种联合查询方法,应用于客户端,通过确定发起方提交的目标查询语句,并将所述目标查询语句发送至服务端;接收所述服务端返回的所述目标查询语句对应的查询信息;在所述查询信息为查询成功的情况下,在所述目标查询语句对应的数据存储空间中提取所述目标查询语句对应的目标数据;基于所述目标数据执行所述目标查询语句关联的目标任务。实现了通过客户端向服务端提交目标查询语句,并基于服务端返回的查询信息,提取查询结果数据,避免了服务端或者查询结果数据,进一步提高了数据联合查询的安全性。
上述为本实施例的第三种联合查询方法的示意性方案。需要说明的是,该第三种联合查询方法的技术方案与上述的两种联合查询方法的技术方案属于同一构思,第三种联合查询方法的技术方案未详细描述的细节内容,均可以参见上述两种联合查询方法的技术方案的描述。
与上述方法实施例相对应,本说明书还提供了联合查询装置实施例,图6示出了本说明书一个实施例提供的第一种联合查询装置的结构示意图,应用于服务端,如图6所示,该装置包括:
接收语句模块602,被配置为接收目标查询语句以及所述目标查询语句关联的元数据信息;
解析模块604,被配置为基于所述元数据信息确定所述目标查询语句关联的查询方,并通过解析所述目标查询语句,确定所述查询方对应的本地查询算子和联合查询算子;
创建模块606,被配置为将所述本地查询算子转换为本地查询语句,并基于所述本地查询语句和所述联合查询算子创建所述查询方对应的数据查询任务;
确定信息模块608,被配置为将所述数据查询任务发送至所述查询方,并根据所述查询方返回的任务执行结果确定所述目标查询语句的查询信息。
可选地,所述创建模块606,进一步被配置为:
将所述联合查询算子转换为安全联合查询算子,基于所述本地查询语句和所述安全联合查询算子,创建所述查询方对应的数据查询任务。
可选地,所述创建模块606,进一步被配置为:
确定所述联合查询算子对应的功能描述字符;
在协议库中预设的多方安全计算协议中,选择与所述功能描述字符对应的目标多方安全计算协议;
基于所述目标多方安全计算协议将所述联合查询算子转换为安全联合查询算子。
可选地,所述创建模块606,进一步被配置为:
基于所述目标多方安全计算协议中的隐私集合求交协议,将所述联合查询算子中的联合求交算子转换为安全联合求交算子;
基于所述目标多方安全计算协议中的混淆电路协议,将所述联合查询算子中的联合分组算子转换为安全联合分组算子,将所述安全联合分组算子以及所述安全联合求交算子组成安全联合查询算子。
可选地,所述创建模块606,进一步被配置为:
确定所述联合分组算子中的分组字段;
根据预设数据转换子算子构建策略,构建所述分组字段对应的数据转换子算子,其中,所述数据转换子算子用于对分组字段的字段值进行数据结构转换;
基于所述混淆电路协议以及所述数据转换子算子生成的虚拟数据转换结果,构建联合分组子算子;
将所述数据转换子算子以及所述联合分组子算子组成所述联合分组算子对应的安全联合分组算子。
可选地,所述解析模块604,进一步被配置为:
对所述目标查询语句进行解析,获得所述目标查询语句对应的查询算子序列;
确定所述查询算子序列中查询算子的数据表信息,并根据在所述元数据信息中所述数据表信息对应的查询方标识信息,确定所述查询算子序列中查询算子的查询方;
在所述查询算子序列中选择查询方相同的查询算子作为本地查询算子,以及在所述查询算子序列中选择查询方不同的查询算子作为联合查询算子。
可选地,所述解析模块604,还被配置为:
基于预先配置的表字段安全规则,对所述查询算子序列中查询算子的查询字段进行安全性校验;
在校验结果为通过的情况下,执行所述确定所述查询算子序列中查询算子的数据表信息步骤;
在校验结果为不通过的情况下,生成所述校验结果对应的校验信息,并将所述校验信息发送至提交所述目标查询语句的客户端,接收所述客户端基于所述校验信息提交的更新查询语句,将所述更新查询语句作为所述目标查询语句,并执行所述基于预先配置的表字段安全规则,对所述目标查询语句中的查询字段进行安全性校验步骤。
可选地,所述解析模块604,进一步被配置为:
对所述目标查询语句进行解析,获得初始查询算子序列;
基于预设查询优化策略,对所述初始查询算子序列进行优化,获得所述目标查询语句对应的查询算子序列。
可选地,所述解析模块604,还被配置为:
基于所述目标查询语句生成针对所述查询方的查询审批单,并将所述查询审批单发送至所述查询方;
在接收到所述查询方针对所述查询审批单的审批结果为通过的情况下,执行所述通过解析所述目标查询语句,确定所述查询方对应的本地查询算子和联合查询算子步骤。
本说明书实施例提供的第一种联合查询装置,应用于服务端,为了保障查询方数据的安全性,并提高查询方的查询效率,通过接收目标查询语句以及目标查询语句关联的元数据信息,基于元数据信息确定目标查询语句关联的查询方,并通过解析目标查询语句,确定查询方对应的本地查询算子和联合查询算子,实现了将目标查询语句拆分为由单个查询方进行查询的本地查询算子,以及需要多个查询方联合查询的联合查询算子,并将这些查询算子按照查询方进行划分;再将本地查询算子转换为本地查询语句,以便基于查询语句的通用性,可以直接适配查询方的计算引擎,提高了对于查询方的计算引擎的适配性。之后基于本地查询语句和联合查询算子创建查询方对应的数据查询任务,将数据查询任务发送至查询方,以便查询方可以执行自身专属的数据查询任务从而实现对目标查询语句的查询,并根据查询方返回的任务执行结果确定目标查询语句的查询信息,实现了对目标查询语句按照查询端进行联合查询的拆分与执行,提高了联合查询过程的安全性。
上述为本实施例的第一种联合查询装置的示意性方案。需要说明的是,该联合查询装置的技术方案与上述的第一种联合查询方法的技术方案属于同一构思,第一种联合查询装置的技术方案未详细描述的细节内容,均可以参见上述第一种联合查询方法的技术方案的描述。
与上述方法实施例相对应,本说明书还提供了第二种联合查询装置实施例,图7示出了本说明书一个实施例提供的第二种联合查询装置的结构示意图,应用于查询端。如图7所示,该装置包括:
接收任务模块702,被配置为接收服务端发送的数据查询任务;
确定模块704,被配置为基于所述数据查询任务确定安全联合查询算子,并读取所述安全联合查询算子对应的算子引擎类型;
封装模块706,被配置为基于所述算子引擎类型对应的算子封装函数,对所述安全联合查询算子进行封装处理,获得自定义查询函数;
执行模块708,被配置为通过执行所述数据查询任务中的本地查询语句以及所述自定义查询函数,获得任务查询结果,并将所述任务执行结果返回至所述服务端,其中,所述自定义查询函数与所述数据查询任务关联的协同查询端关联。
可选地,所述确定模块704,进一步被配置为:
提取所述数据查询任务中的联合查询算子,并将所述联合查询算子转换为安全联合查询算子。
可选地,所述确定模块704,进一步被配置为:
确定所述联合查询算子对应的功能描述字符;
在协议库中预设的多方安全计算协议中,选择与所述功能描述字符对应的目标多方安全计算协议;
基于所述目标多方安全计算协议将所述联合查询算子转换为安全联合查询算子。
可选地,所述确定模块704,进一步被配置为:
基于所述目标多方安全计算协议中的隐私集合求交协议,将所述联合查询算子中的联合求交算子转换为安全联合求交算子;
基于所述目标多方安全计算协议中的混淆电路协议,将所述联合查询算子中的联合分组算子转换为安全联合分组算子,将所述安全联合分组算子以及所述安全联合求交算子组成安全联合查询算子。
可选地,所述确定模块704,进一步被配置为:
确定所述联合分组算子中的分组字段;
根据预设数据转换子算子构建策略,构建所述分组字段对应的数据转换子算子,其中,所述数据转换子算子用于对分组字段的字段值进行数据结构转换;
基于所述混淆电路协议,根据所述数据转换子算子生成的虚拟数据转换结果构建联合分组子算子;
将所述数据转换子算子以及所述联合分组子算子组成所述联合分组算子对应的安全联合分组算子。
可选地,所述执行模块708,进一步被配置为:
在所述数据查询任务中提取本地查询语句,并通过所述本地查询语句对应的语句计算引擎执行所述本地查询语句,获得本地查询数据;
基于本地查询数据更新所述自定义查询函数,获得目标自定义查询函数;
通过所述算子引擎类型对应的算子计算引擎执行所述目标自定义查询函数,获得数据查询任务对应的任务执行结果。
可选地,在所述目标自定义查询函数中包括安全联合求交算子和安全联合分组算子的情况下,所述执行模块708,进一步被配置为:
通过所述算子引擎类型对应的算子计算引擎执行所述目标自定义查询函数中的安全联合求交算子,获得求交数据;
基于所述求交数据更新所述目标自定义查询函数中安全联合分组算子,获得目标安全联合分组算子;
执行所述目标安全联合分组算子,根据执行结果确定所述数据查询任务对应的任务执行结果。
可选地,在所述目标安全联合分组算子包括数据转换子算子以及联合分组子算子的情况下,所述执行模块708,进一步被配置为:
通过执行所述数据转换子算子对所述求交数据中的分组字段值进行数据转换,根据转换结果获得更新求交数据;
基于所述更新求交数据更新所述联合分组子算子,获得目标联合分组子算子;
通过执行所述目标联合分组子算子对所述更新求交数据进行数据分组处理,根据执行结果确定所述数据查询任务对应的任务执行结果。
可选地,所述执行模块708,进一步被配置为:
通过执行所述数据转换子算子确定所述求交数据中分组字段对应的标识字段;
按照所述标识字段的标识字段值对应的预设标识顺序,对所述求交数据进行排列,并根据排列结果创建所述标识字段值对应的索引值;
根据所述索引值以及所述索引值对应的分组字段值,确定所述分组字段值对应的位图子数据,并将位图子数据组成所述分组字段对应的位图数据。
本说明书提供的第二种联合查询装置,应用于查询端,通过接收服务端发送的数据查询任务;基于所述数据查询任务确定安全联合查询算子,并读取所述安全联合查询算子对应的算子引擎类型,基于所述算子引擎类型对应的算子封装函数,对所述安全联合查询算子进行封装处理,获得自定义查询函数;通过执行所述数据查询任务中的本地查询语句以及所述自定义查询函数,获得任务查询结果,并将所述任务执行结果返回至所述服务端,其中,所述自定义查询函数与所述数据查询任务关联的协同查询端关联。实现了对安全联合查询算子的联合查询,保障了在联合查询过程中数据的安全性。
上述为本实施例的第二种联合查询装置的示意性方案。需要说明的是,该第二种联合查询装置的技术方案与上述的第二种联合查询方法的技术方案属于同一构思,第二种联合查询装置的技术方案未详细描述的细节内容,均可以参见上述第二种联合查询方法的技术方案的描述。
与上述方法实施例相对应,本说明书还提供了第三种联合查询装置实施例,图8示出了本说明书一个实施例提供的第三种联合查询装置的结构示意图,应用于客户端。如图8所示,该装置包括:
发送语句模块802,被配置为确定发起方提交的目标查询语句,并将所述目标查询语句发送至服务端;
接收信息模块804,被配置为接收所述服务端返回的所述目标查询语句对应的查询信息;
提取模块806,被配置为在所述查询信息为查询成功的情况下,在所述目标查询语句对应的数据存储空间中提取所述目标查询语句对应的目标数据;
执行任务模块808,被配置为基于所述目标数据执行所述目标查询语句关联的目标任务。
可选地,在所述目标任务为对象推荐任务的情况下,所述目标数据为用户消费数据,所述执行任务模块808,进一步被配置为:
基于所述用户消费数据确定待推荐用户,并针对所述待推荐用户执行对象推荐任务,其中,所述对象推荐任务用于向所述待推荐用户推荐对象;或,
基于所述用户消费数据确定目标用户,并基于所述用户消费数据确定所述目标用户关联的目标对象,将所述目标对象推荐至所述目标用户,用于作为所述对象推荐任务的执行结果。
可选地,在所述目标任务为用户分析任务的情况下,所述目标数据为用户广告访问数据,所述执行任务模块808,进一步被配置为:
基于所述用户广告访问数据,确定广告用户的用户类型,以及基于所述用户广告访问数据确定所述用户类型针对广告位的访问频次;
根据所述访问频次执行所述用户分析任务。
本说明书提供的第三种联合查询装置,应用于客户端,通过确定发起方提交的目标查询语句,并将所述目标查询语句发送至服务端;接收所述服务端返回的所述目标查询语句对应的查询信息;在所述查询信息为查询成功的情况下,在所述目标查询语句对应的数据存储空间中提取所述目标查询语句对应的目标数据;基于所述目标数据执行所述目标查询语句关联的目标任务。实现了通过客户端向服务端提交目标查询语句,并基于服务端返回的查询信息,提取查询结果数据,避免了服务端或者查询结果数据,进一步提高了数据联合查询的安全性。
上述为本实施例的第三种联合查询装置的示意性方案。需要说明的是,该第三种联合查询装置的技术方案与上述的第三种联合查询方法的技术方案属于同一构思,第三种联合查询装置的技术方案未详细描述的细节内容,均可以参见上述第三种联合查询方法的技术方案的描述。
图9示出了根据本说明书一个实施例提供的一种计算设备900的结构框图。该计算设备900的部件包括但不限于存储器910和处理器920。处理器920与存储器910通过总线930相连接,数据库950用于保存数据。
计算设备900还包括接入设备940,接入设备940使得计算设备900能够经由一个或多个网络960通信。这些网络的示例包括公用交换电话网(PSTN,Public SwitchedTelephone Network)、局域网(LAN,Local Area Network)、广域网(WAN,Wide AreaNetwork)、个域网(PAN,Personal Area Network)或诸如因特网的通信网络的组合。接入设备940可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC,networkinterface controller))中的一个或多个,诸如IEEE802.11无线局域网(WLAN,WirelessLocal Area Network)无线接口、全球微波互联接入(Wi-MAX,WorldwideInteroperability for Microwave Access)接口、以太网接口、通用串行总线(USB,Universal Serial Bus)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC,Near FieldCommunication)。
在本说明书的一个实施例中,计算设备900的上述部件以及图9中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图9所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备900可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或个人计算机(PC,Personal Computer)的静止计算设备。计算设备900还可以是移动式或静止式的服务器。
其中,处理器920用于执行如下计算机可执行指令,该计算机可执行指令被处理器执行时实现上述联合查询方法的步骤。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的联合查询方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述联合查询方法的技术方案的描述。
本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现上述联合查询方法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的联合查询方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述联合查询方法的技术方案的描述。
本说明书一实施例还提供一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行上述联合查询方法的步骤。
上述为本实施例的一种计算机程序的示意性方案。需要说明的是,该计算机程序的技术方案与上述的联合查询方法的技术方案属于同一构思,计算机程序的技术方案未详细描述的细节内容,均可以参见上述联合查询方法的技术方案的描述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据专利实践的要求进行适当的增减,例如在某些地区,根据专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。
Claims (20)
1.一种联合查询方法,应用于服务端,包括:
接收目标查询语句以及所述目标查询语句关联的元数据信息;
基于所述元数据信息确定所述目标查询语句关联的查询方,并通过解析所述目标查询语句,确定所述查询方对应的本地查询算子和联合查询算子;
将所述本地查询算子转换为本地查询语句,并基于所述本地查询语句和所述联合查询算子创建所述查询方对应的数据查询任务;
将所述数据查询任务发送至所述查询方,并根据所述查询方返回的任务执行结果确定所述目标查询语句的查询信息。
2.根据权利要求1所述的联合查询方法,所述基于所述本地查询语句和所述联合查询算子创建所述查询方对应的数据查询任务,包括:
将所述联合查询算子转换为安全联合查询算子,基于所述本地查询语句和所述安全联合查询算子,创建所述查询方对应的数据查询任务。
3.根据权利要求2所述的联合查询方法,所述将所述联合查询算子转换为安全联合查询算子,包括:
确定所述联合查询算子对应的功能描述字符;
在协议库中预设的多方安全计算协议中,选择与所述功能描述字符对应的目标多方安全计算协议;
基于所述目标多方安全计算协议将所述联合查询算子转换为安全联合查询算子。
4.根据权利要求3所述的联合查询方法,所述基于所述目标多方安全计算协议将所述联合查询算子转换为安全联合查询算子,包括:
基于所述目标多方安全计算协议中的隐私集合求交协议,将所述联合查询算子中的联合求交算子转换为安全联合求交算子;
基于所述目标多方安全计算协议中的混淆电路协议,将所述联合查询算子中的联合分组算子转换为安全联合分组算子,将所述安全联合分组算子以及所述安全联合求交算子组成安全联合查询算子。
5.根据权利要求4所述的联合查询方法,所述基于所述目标多方安全计算协议中的混淆电路协议将所述联合查询算子中的联合分组算子转换为安全联合分组算子,包括:
确定所述联合分组算子中的分组字段;
根据预设数据转换子算子构建策略,构建所述分组字段对应的数据转换子算子,其中,所述数据转换子算子用于对分组字段的字段值进行数据结构转换;
基于所述混淆电路协议以及所述数据转换子算子生成的虚拟数据转换结果,构建联合分组子算子;
将所述数据转换子算子以及所述联合分组子算子组成所述联合分组算子对应的安全联合分组算子。
6.根据权利要求1所述的联合查询方法,所述通过解析所述目标查询语句,确定所述查询方对应的本地查询算子和联合查询算子,包括:
对所述目标查询语句进行解析,获得所述目标查询语句对应的查询算子序列;
确定所述查询算子序列中查询算子的数据表信息,并根据在所述元数据信息中所述数据表信息对应的查询方标识信息,确定所述查询算子序列中查询算子的查询方;
在所述查询算子序列中选择查询方相同的查询算子作为本地查询算子,以及在所述查询算子序列中选择查询方不同的查询算子作为联合查询算子。
7.根据权利要求6所述的联合查询方法,所述对所述目标查询语句进行解析,获得所述目标查询语句对应的查询算子序列之后,还包括:
基于预先配置的表字段安全规则,对所述查询算子序列中查询算子的查询字段进行安全性校验;
在校验结果为通过的情况下,执行所述确定所述查询算子序列中查询算子的数据表信息步骤;
在校验结果为不通过的情况下,生成所述校验结果对应的校验信息,并将所述校验信息发送至提交所述目标查询语句的客户端,接收所述客户端基于所述校验信息提交的更新查询语句,将所述更新查询语句作为所述目标查询语句,并执行所述基于预先配置的表字段安全规则,对所述目标查询语句中的查询字段进行安全性校验步骤。
8.一种联合查询方法,应用于查询端,包括:
接收服务端发送的数据查询任务;
基于所述数据查询任务确定安全联合查询算子,并读取所述安全联合查询算子对应的算子引擎类型;
基于所述算子引擎类型对应的算子封装函数,对所述安全联合查询算子进行封装处理,获得自定义查询函数;
通过执行所述数据查询任务中的本地查询语句以及所述自定义查询函数,获得任务查询结果,并将所述任务执行结果返回至所述服务端,其中,所述自定义查询函数与所述数据查询任务关联的协同查询端关联。
9.根据权利要求8所述的联合查询方法,所述基于所述数据查询任务确定安全联合查询算子,包括:
提取所述数据查询任务中的联合查询算子,并将所述联合查询算子转换为安全联合查询算子。
10.根据权利要求9所述的联合查询方法,所述将所述联合查询算子转换为安全联合查询算子,包括:
确定所述联合查询算子对应的功能描述字符;
在协议库中预设的多方安全计算协议中,选择与所述功能描述字符对应的目标多方安全计算协议;
基于所述目标多方安全计算协议将所述联合查询算子转换为安全联合查询算子。
11.根据权利要求10所述的联合查询方法,所述基于所述目标多方安全计算协议将所述联合查询算子转换为安全联合查询算子,包括:
基于所述目标多方安全计算协议中的隐私集合求交协议,将所述联合查询算子中的联合求交算子转换为安全联合求交算子;
基于所述目标多方安全计算协议中的混淆电路协议,将所述联合查询算子中的联合分组算子转换为安全联合分组算子,将所述安全联合分组算子以及所述安全联合求交算子组成安全联合查询算子。
12.根据权利要求11所述的联合查询方法,所述基于所述目标多方安全计算协议中的混淆电路协议将所述联合查询算子中的联合分组算子转换为安全联合分组算子,包括:
确定所述联合分组算子中的分组字段;
根据预设数据转换子算子构建策略,构建所述分组字段对应的数据转换子算子,其中,所述数据转换子算子用于对分组字段的字段值进行数据结构转换;
基于所述混淆电路协议,根据所述数据转换子算子生成的虚拟数据转换结果构建联合分组子算子;
将所述数据转换子算子以及所述联合分组子算子组成所述联合分组算子对应的安全联合分组算子。
13.根据权利要求8所述的联合查询方法,所述通过执行所述数据查询任务中的本地查询语句以及所述自定义查询函数,获得任务查询结果,包括:
在所述数据查询任务中提取本地查询语句,并通过所述本地查询语句对应的语句计算引擎执行所述本地查询语句,获得本地查询数据;
基于本地查询数据更新所述自定义查询函数,获得目标自定义查询函数;
通过所述算子引擎类型对应的算子计算引擎执行所述目标自定义查询函数,获得数据查询任务对应的任务执行结果。
14.根据权利要求13所述的联合查询方法,在所述目标自定义查询函数中包括安全联合求交算子和安全联合分组算子的情况下,所述通过所述算子引擎类型对应的算子计算引擎执行所述目标自定义查询函数,获得任务执行结果,包括:
通过所述算子引擎类型对应的算子计算引擎执行所述目标自定义查询函数中的安全联合求交算子,获得求交数据;
基于所述求交数据更新所述目标自定义查询函数中安全联合分组算子,获得目标安全联合分组算子;
执行所述目标安全联合分组算子,根据执行结果确定所述数据查询任务对应的任务执行结果。
15.根据权利要求14所述的联合查询方法,在所述目标安全联合分组算子包括数据转换子算子以及联合分组子算子的情况下,所述通过执行所述目标安全联合分组算子,根据执行结果确定所述数据查询任务对应的任务执行结果,包括:
通过执行所述数据转换子算子对所述求交数据中的分组字段值进行数据转换,根据转换结果获得更新求交数据;
基于所述更新求交数据更新所述联合分组子算子,获得目标联合分组子算子;
通过执行所述目标联合分组子算子对所述更新求交数据进行数据分组处理,根据执行结果确定所述数据查询任务对应的任务执行结果。
16.根据权利要求15所述的联合查询方法,在所述更新求交数据中包括位图数据以及待分组数据的情况下,所述更新求交数据中位图数据的获得,包括:
通过执行所述数据转换子算子确定所述求交数据中分组字段对应的标识字段;
按照所述标识字段的标识字段值对应的预设标识顺序,对所述求交数据进行排列,并根据排列结果创建所述标识字段值对应的索引值;
根据所述索引值以及所述索引值对应的分组字段值,确定所述分组字段值对应的位图子数据,并将位图子数据组成所述分组字段对应的位图数据。
17.一种联合查询方法,应用于客户端,包括:
确定发起方提交的目标查询语句,并将所述目标查询语句发送至服务端;
接收所述服务端返回的所述目标查询语句对应的查询信息;
在所述查询信息为查询成功的情况下,在所述目标查询语句对应的数据存储空间中提取所述目标查询语句对应的目标数据;
基于所述目标数据执行所述目标查询语句关联的目标任务。
18.根据权利要求17所述的联合查询方法,在所述目标任务为对象推荐任务的情况下,所述目标数据为用户消费数据,所述基于所述目标数据执行所述目标查询语句关联的目标任务,包括:
基于所述用户消费数据确定待推荐用户,并针对所述待推荐用户执行对象推荐任务,其中,所述对象推荐任务用于向所述待推荐用户推荐对象;或,
基于所述用户消费数据确定目标用户,并基于所述用户消费数据确定所述目标用户关联的目标对象,将所述目标对象推荐至所述目标用户,用于作为所述对象推荐任务的执行结果。
19.根据权利要求17所述的联合查询方法,在所述目标任务为用户分析任务的情况下,所述目标数据为用户广告访问数据,所述基于所述目标数据执行所述目标查询语句关联的目标任务,包括:
基于所述用户广告访问数据,确定广告用户的用户类型,以及基于所述用户广告访问数据确定所述用户类型针对广告位的访问频次;
根据所述访问频次执行所述用户分析任务。
20.一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该计算机可执行指令被处理器执行时实现权利要求1至19任意一项所述联合查询方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310353636.3A CN116383246A (zh) | 2023-03-31 | 2023-03-31 | 联合查询方法以及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310353636.3A CN116383246A (zh) | 2023-03-31 | 2023-03-31 | 联合查询方法以及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116383246A true CN116383246A (zh) | 2023-07-04 |
Family
ID=86961139
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310353636.3A Pending CN116383246A (zh) | 2023-03-31 | 2023-03-31 | 联合查询方法以及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116383246A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116955416A (zh) * | 2023-09-18 | 2023-10-27 | 腾讯科技(深圳)有限公司 | 数据处理方法、系统、设备及存储介质 |
-
2023
- 2023-03-31 CN CN202310353636.3A patent/CN116383246A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116955416A (zh) * | 2023-09-18 | 2023-10-27 | 腾讯科技(深圳)有限公司 | 数据处理方法、系统、设备及存储介质 |
CN116955416B (zh) * | 2023-09-18 | 2023-12-08 | 腾讯科技(深圳)有限公司 | 数据处理方法、系统、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11869012B2 (en) | Systems, devices, and methods for DLT-based data management platforms and data products | |
CN111382174B (zh) | 多方数据联合查询方法、装置、服务器和存储介质 | |
CN111046237B (zh) | 用户行为数据处理方法、装置、电子设备及可读介质 | |
US20230325389A1 (en) | Method and apparatus for federated data query, electronic device, and computer-readable storage medium | |
US20240054129A1 (en) | Query optimization methods, apparatuses, and systems for secure multi-party database | |
CN111753324B (zh) | 私有数据的处理方法、计算方法及所适用的设备 | |
Li et al. | An efficient blind filter: Location privacy protection and the access control in FinTech | |
CN113239395A (zh) | 数据查询方法、装置、设备、存储介质及程序产品 | |
US20230068770A1 (en) | Federated model training method and apparatus, electronic device, computer program product, and computer-readable storage medium | |
CN113315746B (zh) | 从用户设备向接收方设备匿名发送数据的系统和方法 | |
CN111737720A (zh) | 数据处理方法、装置及电子设备 | |
Li et al. | A blockchain-based credible and secure education experience data management scheme supporting for searchable encryption | |
US20230308290A1 (en) | Data sharing method and electronic device | |
Almekhlafi et al. | The literature review of blockchain adoption | |
CN116383246A (zh) | 联合查询方法以及装置 | |
US10839087B2 (en) | Secure data aggregation in databases using dynamic bucketization and grouping bucketization | |
Jia | Construction of online social network data mining model based on blockchain | |
US11886414B2 (en) | One-way hashing methodology for database records | |
Elmisery et al. | An agent based middleware for privacy aware recommender systems in IPTV networks | |
Huang et al. | Cloud storage model based on the BGV Fully Homomorphic encryption in the blockchain environment | |
CN116233253A (zh) | 业务处理方法、装置、计算机设备和存储介质 | |
US20230269085A1 (en) | Systems and methods for using secure, encrypted communications across distributed computer networks to efficiently update cryptography-based digital repositories for performing blockchain operations in decentralized applications | |
US20230306128A1 (en) | Systems and methods for using secure, encrypted communications across distributed computer networks to provide variable resiliency when indexing blockchain states for performing blockchain operations in decentralized applications using cryptography-based digital repositories | |
Zhang et al. | Efficient searchable symmetric encryption supporting dynamic multikeyword ranked search | |
CN116506227B (zh) | 数据处理方法、装置、计算机设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |