一种数据查询方法、设备、系统及存储介质
文献发布时间:2023-06-19 19:30:30
技术领域
本申请涉及数据库技术领域,尤其涉及一种数据查询方法、设备、系统及存储介质。
背景技术
在关系型数据库中,多路连接聚合查询(multi-way join&aggregation query)是一种十分常见的分析型查询任务,其涉及到多张数据表的连接,并通过连接来进行数据筛选,在完成数据表的连接后,可在相应的数据列上进行聚合运算,从而完成查询任务。
目前,用户的数据通常托管在云端的数据库中,当需要对数据表中的数据进行处理、计算等查询操作时,仍需赋予云端的数据库读取明文数据的能力,从某种程度上对数据造成了一定程度的泄露。尽管云端的数据库中装配的可信硬件TEE等安全计算产品可用于保护数据的安全性,但其信任根基于对底层TEE硬件的信任,进一步归约为对TEE硬件生产商的信任;而且,基于TEE的安全计算产品极易受到侧信道攻击,这使得用户的数据仍存在泄露风险。
发明内容
本申请的多个方面提供一种数据查询方法、设备、系统及存储介质,用以解决数据查询过程中的安全性问题。
本申请实施例提供一种数据查询方法,包括:
从接收到的查询指令中,获取待连接的多张数据表对应的连接条件;
根据所述连接条件,在全同态加密状态下对所述多张数据表进行连接查询,以生成密态的连接结果表征信息,所述密态的连接结果表征信息用于表征所述查询指令所指定的聚合列中各密态数据的连接状态;
基于所述聚合列对应的聚合条件和所述密态的连接结果表征信息,在全同态加密状态下在所述聚合列上执行聚合查询,以生成密态的查询结果。
本申请实施例还提供一种计算设备,包括存储器、处理器和通信组件;
所述存储器用于存储一条或多条计算机指令;
所述处理器与所述存储器和所述通信组件耦合,用于执行所述一条或多条计算机指令,以用于执行前述的数据查询方法。
本申请实施例还提供一种数据库系统,包括数据查询节点和存储节点;
所述数据查询节点用于存储和执行计算机指令,所述存储节点用于存储执行所述计算机指令所需的数据表,所述计算机指令被所述数据查询节点执行时实现前述的数据查询方法
本申请实施例还提供一种存储计算机指令的计算机可读存储介质,当所述计算机指令被一个或多个处理器执行时,致使所述一个或多个处理器执行前述的数据查询方法。
在本申请实施例中,可从接收到的查询指令中,获取待连接的多张数据表对应的连接条件;并可根据连接条件,在全同态加密状态下对多张数据表进行连接查询,以生成密态的连接结果表征信息;基于查询指令中聚合列对应的聚合条件和密态的连接结果表征信息,在全同态加密状态下在聚合列上执行聚合查询,以生成密态的查询结果。据此,本申请实施例中,在连接查询阶段和聚合查询阶段中,数据表中的数据,各种中间计算以及中间产生的处理结果等均全程保持在密态,无任何数据泄露,这实现了一种全新的且更高安全级别的数据查询方案,从而可更好地解决数据查询过程中的安全性问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请一示例性实施例提供的一种数据查询方法的流程示意图;
图2为本申请一示例性实施例提供的一种数据查询方法的逻辑示意图;
图3为本申请一实施例提供的一种构建查询计划树的示例性方案的逻辑示意图;
图4为本申请一示例性实施例提供的一种优选实现方式的逻辑示意图;
图5为本申请一示例性实施例提供的一种维度统一处理的逻辑示意图;
图6为本申请一示例性实施例提供的一种统一打包维度的实现方案的逻辑示意图;
图7为本申请另一示例性实施例提供的一种计算设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前,数据查询过程中,仍存在数据安全性问题。为此,本申请的一些实施例中:可从接收到的查询指令中,获取待连接的多张数据表对应的连接条件;并可根据连接条件,在全同态加密状态下对多张数据表进行连接查询,以生成密态的连接结果表征信息;基于查询指令中聚合列对应的聚合条件和密态的连接结果表征信息,在全同态加密状态下在聚合列上执行聚合查询,以生成密态的查询结果。据此,本申请实施例中,在连接查询阶段和聚合查询阶段中,数据表中的数据,各种中间计算以及中间产生的处理结果等均全程保持在密态,无任何数据泄露,这实现了一种全新的且更高安全级别的数据查询方案,从而可更好地解决数据查询过程中的安全性问题。
以下结合附图,详细说明本申请各实施例提供的技术方案。
图1为本申请一示例性实施例提供的一种数据查询方法的流程示意图,图2为本申请一示例性实施例提供的一种数据查询方法的逻辑示意图。该方法可由数据查询装置执行,该数据处理装置可实现为软件、硬件或软件与硬件的结合,该数据处理装置可集成在计算设备中。参考图1,该方法可包括:
步骤100、从接收到的查询指令中,获取待连接的多张数据表对应的连接条件;
步骤101、根据连接条件,在全同态加密状态下对多张数据表进行连接查询,以生成密态的连接结果表征信息,密态的连接结果表征信息用于表征查询指令所指定的聚合列中各密态数据的连接状态;
步骤102、基于聚合列对应的聚合条件和密态的连接结果表征信息,在全同态加密状态下在聚合列上执行聚合查询,以生成密态的查询结果。
本申请实施例提供的数据查询方法可应用于在关系型数据库中进行多路连接聚合查询的场景中。本实施例中的关系型数据库可以部署在云端,也可部署在非云端,比如企业的自有机房中等,本实施例对所需数据表的存储位置不做限定。另外,本实施例提供的数据查询方法可通过对现有数据查询引擎进行代码修改或者向现有数据查询引擎提供调用接口等方式进行实施,本实施例对此也不做限定。
参考图1,在步骤100中,可接收查询指令。其中,查询指令可以是一段SQL(Structured Query Language,结构化查询语言)查询语句。实际应用中,用户可在其使用的客户端中输入待连接的多张数据表的标识信息、指定的聚合列的标识信息、聚合条件以及连接条件等,客户端可对连接条件及聚合条件中涉及到的查询参数进行全同态加密,密态的查询参数将携带在查询指令中。
本实施例中,采用全同态加密的方式进行各环节中的加密。全同态加密是一种同时满足加同态和乘同态性质,可以进行任意多次加和乘运算的加密函数。其中,对经过全同态加密的数据进行处理(加法计算或乘法计算)得到一个输出,将这一输出进行解密,其结果与用同一方法处理未加密的原始数据得到的输出结果是一样的。
基于此,参考图2,在步骤100中,可从接收到的查询指令中,获取待连接的多张数据表对应的连接条件。其中,查询指令中连接条件可以为多个,单个连接条件可以指向两个数据表,并指示两个数据表之间连接的条件。一段示例性的查询语句可以是:
Select
Sum (spending.sp_cost)
From
region,nation,supplier,spending
Where
region.r_regioncode=nation.n_regioncode
And nation.n_supplier=supplier.s_name
And supplier.s_division=spneding.sp_division
And region.r_supplier=supplier.s_name
上述示例性的查询语句中,指示待连接的多张数据表分别为region,nation,supplier和spending,且包含4个连接条件,其中,以连接条件region.r_regioncode =nation.n_regioncode为例,该连接条件用于指示将数据表region和数据表nation中在regioncode这一属性上取值相等的数据行建立连接。其中,上述的示例性的查询语句中的连接条件是一种典型的等值连接方式下的连接条件,但应当理解的是,本实施例中并不限定连接条件所对应的连接方式,本实施例可支持各种连接方式,只不过不同连接方式下的连接条件表征方式可能存在差别。
另外,参考图2,本实施例中,多张数据表中存储的数据也是经过全同态加密的,且仅加密一次即可。
在此基础上,参考图1,在步骤101中,可根据连接条件,在全同态加密状态下对多张数据表进行连接查询,以生成密态的连接结果表征信息。其中,在全同态加密状态下对多张数据表进行连接查询是指连接查询过程中涉及到的计算操作均在全同态加密状态下执行。
值得说明的是,上述的连接查询的执行过程是全程密态的,无任何数据泄露。在步骤101中,并不会直接输出连接查询的结果,而仅是使用连接结果表征信息来表征连接查询的结果,且连接结果表征信息也是密态的。这可有效避免连接结果的泄露。
本实施例中,密态的连接结果表征信息可用于表征查询指令所指定的聚合列中各密态数据的连接状态。发明人在研究过程中发现,聚合过程中并无需关注聚合列中的各个密态数据具体与哪些数据表中的哪些数据行连接,而仅需关注各密态数据是否被连接,以及被连接的次数即可,因此,本实施例中,连接状态可设计为包括但不限于聚合列中各密态数据各自被连接的次数,或者用于表征聚合列中各密态数据各自是否被连接的标识,等。当然,这些仅是示例性的,本实施例中还可支持将连接状态设计为其它的表征形式,而并不限于此。这样,密态的连接结果表征信息可直接参与到聚合过程中,而使得聚合过程中不再需要对连接结果进行再分析及再查询。
正如前文提及的,查询指令中还可包含聚合列对应的聚合条件,其中,聚合条件可以是指聚合函数,本实施例中,可支持各种类型的聚合函数,包括但不限于求和、统计数量、求最小值、求最大值或求均值等。
基于此,参考图1和图2,在步骤102中,可基于聚合列对应的聚合条件和密态的连接结果表征信息,在聚合列上执行密态聚合,以生成密态的查询结果。其中,密态聚合是指在密态下执行聚合查询,聚合查询是指通过来汇总聚合列中多个数据。
承接前文中密态的连接结果表征信息中包含聚合列中各密态数据各自被连接的次数的情况,以下说明几种示例性的聚合条件下的聚合查询过程:
若聚合条件为求和,则将聚合列和密态的连接结果表征信息进行阿达玛乘法计算后,将获得的各个密态的乘积进行密态加法,以生成密态的查询结果;
若聚合条件为统计数量,则将密态的连接结果表征信息中包含的各个密态的被连接的次数,进行密态加法计算,以生成密态的查询结果。
应当理解的是,在求和的情况下,由于聚合列中的数据和连接结果表征信息中的数据均为密态数据,因此,基于全同态加密技术的特性,聚合列和密态的连接结果表征信息之间可进行密态乘法计算,获得的乘积必然也是全同态加密的。而获得的乘积之间还可进一步执行密态加法计算,进而产生密态的查询结果。而在统计数量的情况下,则可直接对密态的连接结果表征信息内部包含的数据进行密态加法计算,而获得密态的查询结果。
以上仅示例了两种聚合条件,正如前文提及的,本实施例中可支持各种类型的聚合条件,对于不同的聚合条件,可对密态的连接结果查询信息进行变形后,再参与在全同态加密状态下的聚合查询过程,进而获得密态的查询结果。例如,可将密态的连接结果表征信息中的非0值转换为1,之后再与聚合列进行阿达玛乘法计算,这样,在获得的乘积中,聚合列中被连接的密态数据将保持原值,而未被连接的密态数据则被置为0;在此基础上,可执行求最大值、求最小值或求均值等聚合查询,从而生成密态的查询结果。
综上,本实施例中,可从接收到的查询指令中,获取待连接的多张数据表对应的连接条件;并可根据连接条件,在全同态加密状态下对多张数据表进行连接查询,以生成密态的连接结果表征信息;基于查询指令中聚合列对应的聚合条件和密态的连接结果表征信息,在全同态加密状态下在聚合列上执行聚合查询,以生成密态的查询结果。据此,本申请实施例中,在连接查询阶段和聚合查询阶段中,数据表中的数据,各种中间计算以及中间产生的处理结果等均全程保持在密态,无任何数据泄露,这实现了一种全新的且更高安全级别的数据查询方案,从而可更好地解决数据查询过程中的安全性问题。
在上述或下述实施例中,可采用多种实现方式在全同态加密状态下对多张数据表进行连接查询,例如,可按照传统的连接查询逻辑执行,而将执行过程中涉及到的计算置于全同态加密状态下进行即可。目前的连接查询逻辑有很多,在此不做穷举。
本实施例中,提供一种优选的实现方案,以在全同态加密状态下对多张数据表进行连接查询。
本实施例中,可在多张数据表中,确定各个连接条件各自所指向的数据表对。例如,前文提供的示例性的查询指令中,连接条件region.r_regioncode =nation.n_regioncode为例,其所指向的数据表对包括数据表region和数据表nation。这样,可得到一个或多个数据表对。
本实施例中,可针对各数据表对,在全同态加密状态下分别根据对应的连接条件执行连接查询,以生成密态的中间结果表征信息,中间结果表征信息用于表征两个数据表之间的数据行连接状态。
以确定出的各数据表对中的任意一个第一数据表对为例,在全同态加密状态下对第一数据表对进行连接查询的方案可以是:
根据第一数据表对所对应的目标连接条件所指向的待比较的密文列和/或密态查询参数,执行同态比较操作,以生成第一数据表对所对应的密态的中间结果表征信息。
举例来说,若目标连接条件为等值连接,则可确定其在第一数据表对包含的两个数据表中所指向的密文列,并对两个密文列包含的密态数据进行同态比较。比较结果为相同的情况下,密态的中间结果表征信息中的对应元素对应的连接状态则赋值为允许连接,相反,则赋值为禁止连接。
再举例来说,若目标连接条件中指定了需进行等值连接的密文列,且为其中一个密文列指定了密态的查询参数,例如,目标连接条件为A.name=B.name and A.age>10;则密文列A.name和密文列B.name之间进行同态比较,密文列A.name中包含的密态数据还需分别与查询参数10对应的密文进行同态比较。两个同态比较操作结果均为通过的情况下,密态的中间结果表征信息中的对应元素对应的连接状态则赋值为允许连接,相反,则赋值为禁止连接。
以上同态比较操作仅是示例性的,本实施例并不限于此。应当理解的是,本实施例中,在连接查询过程中,涉及到的查询参数、数据表中的数据等均全程在密态下执行计算和流转,无任何数据泄露。
在此基础上,可将各数据表对各自所对应的密态的中间结果表征信息传递至聚合列,以在聚合列上生成密态的连接结果表征信息。
这里值得说明的是,本实施例中,查询指令中可以指定一个或多个聚合列,而连接条件则是与聚合列具有关联关系,因此,本实施例中,可按照这种关联关系而将密态的中间结果表征信息传递至正确的聚合列。
这样,与聚合列关联的各个数据表对各自对应的密态的中间结果表征信息,可在聚合列上得以汇总,从而在聚合列上生成密态的连接结果表征信息。也即是,在聚合列上生成的密态的连接结果表征信息是综合查询指令中各密态的连接结果而生成的,这使得密态的连接结果中的每个元素都同时符合查询指令中各连接条件。这可有效保证聚合列上生成的密态的连接结果表征信息的准确性。
本实施例中,可采用多种实现方式将将各数据表对各自所对应的密态的中间结果表征信息传递至聚合列。图4为本申请一示例性实施例提供的一种优选实现方式的逻辑示意图,参考图4,在该优选实现方式中:
可构建查询指令对应的查询计划树,查询计划树以数据表为节点,其中,聚合列所属的数据表作为根节点;
针对查询计划树中未处理的目标边,根据目标边连接的子节点上存储的密态的第一记录信息、目标边连接的父节点上存储的密态的第二记录信息以及目标边对应的数据表对所对应的中间结果表征信息,计算密态的第三记录信息;
将父节点上存储的密态的第二记录更新为密态的第三记录,并删除目标边。其中,在查询计划树的剩余结构中,选择与叶子节点连接的边作为目标边。这样可有效避免密态的中间结果表征信息的漏传。
图3为本申请一实施例提供的一种构建查询计划树的示例性方案的逻辑示意图。参考图3,在该示例性方案中:可以多张数据表分别作为顶点,以数据表之间存在的连接关系作为边,构建查询指令对应的查询图;对查询图中存在的环状结构进行拆分,以产生查询计划树。图3中的(a)图为对应于前述示例性的查询语句而生成的查询图,查询图中的4个顶点分别对应查询语句中涉及到的4个数据表,查询图中的5条边分别对应查询语句中的5个连接条件所指示的连接关系。
其中,若查询指令中涉及多个聚合列且属于不同数据表,则可为查询指令生成多个独立的查询图,并分别进行环状结构的拆分,以得到多个独立的查询树。
在得到查询图后,若查询图中存在环状结构,则需要对环状结构进行拆分。环状结构的定义为两个或多个节点经过一系列边的连接,形成一个封闭图形。如图3的查询图中包含至少两个环状结构,例如,RrRsRn和RsRnRsp。对环状结构进行拆分的示例性过程可以是:
1、指定聚合列所属的数据表作为根节点(此例中为Rsp)。
2、针对查询图中的一个环状结构,若根节点不在该环状结构上,则可将该环状结构上任意一节点作为被拆分节点。将选中的被拆分节点进行一次复制,以产生两个相同的节点,分别连接其原始的邻居节点。若根节点处于某一环状结构,则根节点不可拆分,需拆分环状结构上的其它节点。
3. 若被拆分节点在查询图或拆分过程中产生的中间图中,还连接其它非环状结构中的边及节点,则这些边及节点与被拆分节点一同复制。
4. 重复上述的步骤2及3,直到查询图中不再存在环状结构,即得到查询计划树。
以图3为例,环RrRsRn可拆解任一节点,环RsRnRsp仅能拆分Rs和Rn两个节点。图示中(b)图为对Rr节点进行拆分后的结果,(c)图为在(b)图之后对Rn节点进行拆分后的结果。图3中的(c)图即为得到的查询计划树。
应当理解的是,若查询图中无环状结构(即查询图本身即为树状结构),则无需执行前述的拆分操作,而直接得到查询计划树。
另外,上述对环状结构进行拆分的示例性过程中,按照不同的拆分策略(例如,选取的的拆分节点不同,或者定义的环状结构不同),可能导致最终得到的查询计划树存在差别,本实施例中可支持使用其中的任意一种查询计划树。通过查询计划树,可保证在全同态加密状态下的连接查询过程中查询顺序的稳定性,无需再穷举各种可能的查询路径,可有效节省计算量。
优选地,还可分别计算按照不同的拆分策略得到的查询计划树各自对应的计算代价;选出计算代价最低的查询计划树,作为为查询指令所构建的查询计划树。其中,计算代价可等于查询计划树中所需执行的计算次数的总和。这里的计算可包括前述或下述实施例中提到的同态加法及同态乘法计算。这样,可通过选用计算代价最低的查询计划树而进一步节省在全同态加密状态下的连接查询过程中的计算量。
经过上述构建查询计划树的示例性方案可知,查询计划树中以数据表作为节点,且聚合列所属的数据表作为其中的根节点。
在此基础上,在当前的优先实现方案中,可沿查询计划树中的查询路径,将各数据表对各自对应的密态的中间结果表征信息传递至聚合列(对应查询计划树中的根节点)。
为此,可在查询计划树中的各个节点上分别存储密态的记录信息。密态的记录信息用于保存对收到的密态的中间结果表征信息进行密态的汇总处理后而生成的汇总信息。应当理解的是,各个节点上生成的汇总信息依然保持密态,因此,无任何数据泄露。各个节点可继续将自身存储的密态的记录信息传递至其父节点,以供其父节点更新自身存储的密态的记录信息,这样,密态的中间结果表征信息可按照查询计划树逐层传递至根节点。通过在节点上进行密态的汇总处理,不仅可保证密态的中间结果表征信息不会发生丢失,而且汇总信息的表征复杂度要远低于多个密态的中间结果表征信息的总体表征复杂度,因此,还可有效降低计算密态的连接结果表征信息的复杂度,节省计算量。
其中,各个节点上可预先存储密态的初始信息,该初始信息可用于表征节点对应的数据表中各数据行的连接状态均为允许连接。在实现形式上,初始信息可采用一阶张量,该节点对应的数据表中的每一行对应张量中的一个元素,该一阶张量中元素的初始值可全部为1,以表征节点对应的数据表中各数据行的连接状态均为允许连接。
基于此,在当前的优选实现方式中,查询计划树中,任意一个节点上存储的记录信息,可能是该节点在其它已处理边中作为父节点时得到的;也可能是由于该子节点上并未发生任何密态的汇总处理,因此,依然存储的是初始信息。这样,针对查询计划中的未处理的目标边,其连接的子节点上存储的密态的第一记录信息可能为该子节点在其它已处理边中作为父节点时得到的,也可能是该子节点上存储的初始信息,同样,父节点上存储的第二记录信息可能为该父节点在其它已处理边中作为父节点时得到的,也可能是该父节点上存储的初始信息。
为便于计算,相应地,第一记录信息、第二记录信息、第三记录信息和中间结果表征信息的也可采用张量进行表征。其中,中间结果表征信息可采用二阶张量,二阶张量的的两个维度分别代表两个数据表,二阶张量中的元素用于表征数据行连接状态且取值为0或1;若两个数据行的连接状态为允许连接,则对应的元素取值为1,若连接状态为禁止连接,则对应的元素取值为0。
这样,前述的密态的汇总处理可以是:对密态的第一记录信息、密态的第二记录信息和密态的中间结果表征信息进行维度统一后,执行阿达玛乘法计算,以生成密态的第三记录信息。正如前文提及的,密态的中间结果表征信息中的维度可代表数据表,而密态的第一记录信息和密态的第二记录信息中的维度可能是对密态的中间结果表征信息进行汇总处理而得到的,因此,其维度也代表数据表。这导致,密态的第一记录信息、密态的第二记录信息和密态的中间结果表征信息之间可能存在维度不统一的问题,为此,在执行阿达玛乘法计算之前,可线进行维度统一处理,当然,如果三者的维度统一,则可无需再执行维度统一处理。
图5为本申请一示例性实施例提供的一种维度统一处理的逻辑示意图。参考图5,维度统一的过程可包括:
针对任意两个待乘张量,计算两个张量的维度的并集;
若第一张量的维度为并集的真子集,则为第一张量增加未包含在并集中的维度;
在新增的维度上复制第一张量中的原始元素,以生成维度统一后的第一张量;
其中,第一张量为两个待乘张量中的任意一个,复制的次数为新增的维度对应的数据表中包含的数据行数。
参考图5,两个待乘张量的维度分别为张量[a,b]和张量[b,c],双方的维度的并集为[a,b,c],则对于张量[a,b]来说,需要增加维度c,对于张量[b,c]来说,则需要增加维度a。其中,张量[a,b]的原始元素为:
张量[b,c]的元素元素为:
则参考图5,在对张量[a,b]进行维度统一时,可将张量[a,b]的原始元素在新增的维度c方向上复制3次,得到2*2*3的张量,共12个元素。在对张量[b,c]进行维度统一时,可将张量[b,c]的原始元素在新增的维度a方向上复制2次,得到2*2*3的张量,也共12个元素。这样,维度统一后,张量[a,b]和张量[b,c]的维度一致。
另外,在对密态的第一记录信息、密态的第二记录信息和密态的中间结果表征信息进行维度统一后,执行阿达玛乘法计算的过程中,可先对密态的第一记录信息和密态的中间结果表征信息进行维度统一并进行阿达玛乘法计算;将产生的密态的计算结果再与密态的第二记录信息进行维度统一并进行阿达玛乘法计算,以得到密态的第三记录信息。当然,还可采用其它的乘法计算顺序,而并不限于此。
在完成对目标边的处理后,可删除目标边,并继续在查询计划树中寻找未处理的边。参考图4,对于目标边所连接的父节点来说,若在完成目标边的处理后,确定该父节点与其各个子节点之间的边均已完成处理,则可对该父节点进行密态收缩。密态收缩的过程可以是:在该父节点上存储的密态的第三记录信息中确定待收缩的目标维度;沿目标维度的方向执行元素的密态累加计算,以生成收缩后的密态的第四记录信息;将父节点上存储的密态的第三记录信息更新为密态的第四记录信息。
举例来说,若密态的第三记录信息包括3个维度m,n和k,并确定待收缩的目标维度为k,则可沿k方向执行元素的密态累加计算,密态累加计算的结果将更新至m和n两个维度所组成的张量中的相应元素上,从而获得密态的第四记录信息,也即是这里产生的张量[m,n],并可将父节点上存储的密态的第三记录信息更新为密态的第四记录信息。
可知,经过密态收缩后,该父节点上的记录信息的维度得以减少,这使得该父节点上存储的记录信息的复杂度大大降低,但同时间接保留了该父节点收到的各个密态的中间结果表征信息,因此,这可有效降低密态的中间结果表征信息的后续传输复杂度,提高传输效率。
为了更高效且更准确地为节点确定出待收缩的目标维度,在一种示例性的方案中,可在查询计划树中的各个节点上存储持久维度集,其中,持久维度集中存储有节点需要保留的维度的标识信息。在该示例性方案中,持久维度集中的维度可按以下方式确定出:
若查询计划树中存在同根分裂节点,则确定同根分裂节点的最小共同祖先节点;
查找同根分裂节点与最小共同祖先节点之间存在的途径节点;
将同根分裂节点上的数据表对应的维度加入途径节点上存储的持久维度集中。
参考图3,Rn的持久维度集为{ r,n},Rs的持久维度集为{s,r,n},Rsp持久维度集为{sp}。
承接上述为目标边中的父节点确定待收缩的目标维度的过程,则基于父节点上存储的持久维度集,确定目标维度的过程可以是:将父节点上存储的密态的第三记录信息中未包含在父节点对应的持久维度集中的维度,作为目标维度。
若该父节点为图3中的Rsp节点,其存储的密态的第三记录信息中包含的维度为{sp,r,n},而其存储的持久维度集则为{sp},则其待收缩的维度为r和n。则可首先在r维度方向上执行密态的累加计算,将密态的累加计算的结果更新至n和sp两个维度所组成的张量中的相应元素上,再在n维度方向上执行密态的累加计算,并将密态的累加计算的结果更新至sp维度上,获得以sp作为维度的一阶张量,该一阶张量中的元素个数与数据表sp中的行数一致,该一阶张量中的元素值可用于表征数据表sp中聚合列包含的各个密态数据的被连接次数。应当理解的是,该一阶张量也是密态的。
基于此,参考4,在当前的优选实现方式中,若目标边连接的父节点为查询计划树中的根节点,则可基于该父节点上存储的密态的第四记录信息,而生成密态的连接结果表征信息。按照上述的密态收缩方案,第四记录信息中的元素值表征的是聚合列中各同态加密数据各自被连接的次数,因此,可直接使用该密态的第四记录信息作为密态的连接结果表征信息,当然,也可在该密态的第四记录信息的基础上继续进行变形,以生成密态的连接结果表征信息。例如,承接图3中的Rsp节点上产生的一阶张量,可直接使用该密态的一阶张量本身作为密态密态的连接结果表征信息。
据此,在当前的优优选实现方式中,可为查询指令构建查询计划树,并按照查询计划树中指定的查询顺序,将各个密态的中间结果表征信息逐层传递至查询计划树中的根节点,也在传递过程中,可在途径的节点上执行密态汇总处理及密态收缩处理等,以降低密态的中间结果表征信息的传递复杂度,提高传递效率和准确性。
应当理解的是,除了前述的优选实现方式,本实施例中还可采用其它实现方式来实现密态的中间结果表征信息的传递,例如,可无需构建查询计划树,而将所有的密态的中间结果表征信息直接传递至聚合列等,本实施例并不限于此。
在上述或下述实施例中,数据表中存储的数据、查询指令中携带的连接条件、数据查询过程中产生的中间结果表征信息以及连接结果表征信息等,均可支持按维度打包的全同态加密方式,也均可支持单个数据单独进行全同态加密方式。
其中,对于打包的全同态加密方式,在数据查询过程中发生的密态乘法计算、密态加法计算、维度统一等密态处理逻辑中,可能出现打包维度不统一的问题。
为此,本实施例中,针对任意两个待乘、待加或待维度统一的输入张量,若对两个输入乘张量进行全同态加密时分别在不用的维度上进行打包,则任选一输入张量作为待转换张量;按照另一输入张量采用的打包维度,对待转换张量重新打包,以统一两个输入张量的打包维度。
图6为本申请一示例性实施例提供的一种统一打包维度的实现方案的逻辑示意图。参考图6,若待转换张量的打包维度为第一维度,另一输入张量的打包维度为第二维度,则对待转换张量重新打包的过程可以是:
从待转换张量的第一维度中的目标待转换打包单元中确定出位于第二维度中目标打包单元下的目标元素;
对目标待转换打包单元中的各元素进行平移,以使平移后的目标元素在目标待转换打包单元中的位次与其在目标打包单元中的位次一致;
对目标待转换打包单元对应的转换向量和旋转后的密态的目标待转换打包单元,执行阿达玛乘法计算并对产生的密态的乘积执行密态累加计算,以生成目标待转换打包单元对应的目标打包单元下待打包元素,转换向量在目标元素对应的位置上的元素值为1,其它位置上的元素值为0;
计算待转换张量中的其它待转换打包单元对应的目标打包单元下待打包元素;
按序对待转换张量中各行对应的目标打包单元下待打包元素进行打包;
其中,目标待转换打包单元为待转换张量中的任意一个待转换打包单元。
以图6示出的(1)图中的张量作为待转换张量,该待转换张量采用按行(第一维度)打包的全同态加密方式。若当前的目标列(对应于第二维度中的目标打包单元)定为第1列,则参考图6,可对该待转换张量中第一行(对应于第一维度中的目标待转换打包单元)的元素A1向右平移0位,并将平移后的第一行与其对应的转换向量[1,0,0,0]执行阿达玛乘法计算,产生的密态的乘积可参考图6示出的(2)图;还可继续对第一行产生的密态的乘积执行密态累加计算,以产生第一行对应的第1列下待打包元素A1,参考图6示出的(3)图。应当理解的是,据此产生的第1列下待打包元素A1保持密态。还可对该待转换张量中第二行的元素B1向右平移1位,并将平移后的第二行与其对应的转换向量[0,1,0,0]执行阿达玛乘法计算,以产生第二行对应的第1列下待打包元素B1。按照同样的方式,可产生第三行和第四行对应的第一列下的待打包元素,参考图6示出的(3)图。在此基础上,可按序对产生的密态的目标列下待打包元素进行打包,以获得目标列下的打包结果。按照同样的方案逻辑,可获得其它列下的打包结果,从而可将待转换张量转换为按列打包的全同态加密方式。
据此,本实施例中,数据查询过程中涉及到的加密数据均可支持打包的全同态加密方式,并可按本实施例提供的转换方案,对打包维度进行统一,以保证数据查询过程中涉及到的各种密态处理逻辑的执行,提高处理效率和准确性。
需要说明的是,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的记录信息、张量等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
图7为本申请另一示例性实施例提供的一种计算设备的结构示意图。如图7所示,该计算设备包括:存储器70、处理器71。
处理器71,与存储器70耦合,用于执行存储器70中的计算机程序,以用于:
从接收到的查询指令中,获取待连接的多张数据表对应的连接条件;
根据连接条件,在全同态加密状态下对多张数据表进行的连接查询,以生成密态的连接结果表征信息,密态的连接结果表征信息用于表征查询指令所指定的聚合列中各密态数据的连接状态;
基于聚合列对应的聚合条件和密态的连接结果表征信息,在全同态加密状态下在聚合列上执行聚合查询,以生成密态的查询结果。
在一可选实施例中,处理器71在根据连接条件,在全同态加密状态下对多张数据表进行连接查询,以生成密态的连接结果表征信息时,具体用于:
在多张数据表中,确定各个连接条件各自所指向的数据表对;
针对各数据表对,在全同态加密状态下分别根据对应的连接条件执行的连接查询,以生成密态的中间结果表征信息,中间结果表征信息用于表征两个数据表之间的数据行连接状态;
将各数据表对各自所对应的密态的中间结果表征信息传递至聚合列,以在聚合列上生成密态的连接结果表征信息。
在一可选实施例中,处理器71在针对各数据表对,在全同态加密状态下分别根据对应的连接条件执行连接查询,以生成密态的中间结果表征信息时,具体用于:
根据第一数据表对所对应的目标连接条件所指向的待比较的密文列和/或密态查询参数,执行同态比较操作,以生成第一数据表对所对应的密态的中间结果表征信息;
其中,第一数据表对为各数据表对中的任意一个。
在一可选实施例中,处理器71在将各数据表对各自对应的密态的中间结果表征信息传递至聚合列,以在聚合列上生成密态的连接结果表征信息时,具体可用于:
构建查询指令对应的查询计划树,查询计划树以数据表为节点,其中,聚合列所属的数据表作为根节点;
针对查询计划树中未处理的目标边,根据目标边连接的子节点上存储的密态的第一记录信息、目标边连接的父节点上存储的密态的第二记录信息以及目标边对应的数据表对所对应的中间结果表征信息,计算密态的第三记录信息,目标边在查询计划树的剩余结构中连接叶子节点;
将父节点上存储的密态的第二记录更新为密态的第三记录,并删除目标边;
其中,任意节点上存储的密态的记录信息为节点自身在其它已处理边中作为父节点时得到的或节点自身存储的密态的初始信息,初始信息表征节点对应的数据表中的各个数据行的连接状态均为允许连接。
在一可选实施例中,采用张量表征第一记录信息、第二记录信息、第三记录信息和中间结果表征信息,处理器71在计算密态的第三记录信息时,具体可用于:
对密态的第一记录信息、密态的第二记录信息和密态的中间结果表征信息进行维度统一后,执行阿达玛乘法计算,以生成密态的第三记录信息;
其中,中间结果表征信息采用二阶张量,二阶张量的的两个维度分别代表两个数据表,二阶张量中的元素用于表征数据行连接状态且取值为0或1;若两个数据行的连接状态为允许连接,则对应的元素取值为1,若连接状态为禁止连接,则对应的元素取值为0。
在一可选实施例中,处理器71还可用于:
针对任意两个待乘张量,计算两个张量的维度的并集;
若第一张量的维度为并集的真子集,则为第一张量增加未包含在并集中的维度;
在新增的维度上复制第一张量中的原始元素,以生成维度统一后的第一张量;
其中,第一张量为两个待乘张量中的任意一个,复制的次数为新增的维度对应的数据表中包含的数据行数。
在一可选实施例中,处理器71还可用于:
若在完成目标边的处理后,确定父节点与其各个子节点之间的边已完成处理,则在父节点上存储的密态的第三记录信息中确定待收缩的目标维度;
沿目标维度的方向执行元素的密态累加计算,以生成收缩后的密态的第四记录信息;
将父节点上存储的密态的第三记录更新为密态的第四记录信息。
在一可选实施例中,查询计划树的各个节点上还存储有持久维度集,方法处理器71还可用于:
若查询计划树中存在同根分裂节点,则确定同根分裂节点的最小共同祖先节点;
查找同根分裂节点与最小共同祖先节点之间存在的途径节点;
将同根分裂节点上的数据表对应的维度加入途径节点上存储的持久维度集中;
在父节点上存储的密态的记录信息中确定待收缩的目标维度时,具体可用于:
将父节点上存储的第三密态的记录信息中未包含在父节点对应的持久维度集中的维度,作为目标维度。
在一可选实施例中,处理器71在构建查询指令对应的查询计划树时,具体可用于:
以多张数据表分别作为顶点,以数据表之间存在的连接关系作为边,构建查询指令对应的查询图;
对查询图中存在的环状结构进行拆分,以产生查询计划树。
在一可选实施例中,密态的连接结果表征信息中包含聚合列中各密态数据各自被连接的次数。
在一可选实施例中,处理器71在基于聚合列对应的聚合条件和密态的连接结果表征信息,在全同态加密状态下在聚合列上执行聚合查询,以生成密态的查询结果时,具体可用于:
若聚合条件为求和,则将聚合列和密态的连接结果表征信息进行阿达玛乘法计算后,将获得的各个密态的乘积进行密态加法,以生成密态的查询结果;
若聚合条件为统计数量,则将密态的连接结果表征信息中包含的各个密态的被连接的次数,进行密态加法计算,以生成密态的查询结果。
在一可选实施例中,处理器71还可用于:
针对任意两个待乘、待加或待维度统一的输入张量,若对两个输入乘张量进行全同态加密时分别在不用的维度上进行打包,则任选一输入张量作为待转换张量;
按照另一输入张量采用的打包维度,对待转换张量重新打包,以统一两个输入张量的打包维度。
在一可选实施例中,若待转换张量的打包维度为第一维度,另一输入张量的打包维度为第二维度,则处理器71在对待转换张量重新打包时,可具体用于:
从待转换张量的第一维度中的目标待转换打包单元中确定出位于第二维度中目标打包单元下的目标元素;
对目标待转换打包单元中的各元素进行平移,以使平移后的目标元素在目标待转换打包单元中的位次与其在目标打包单元中的位次一致;
对目标待转换打包单元对应的转换向量和旋转后的密态的目标待转换打包单元,执行阿达玛乘法计算并对产生的密态的乘积执行密态累加计算,以生成目标待转换打包单元对应的目标打包单元下待打包元素,转换向量在目标元素对应的位置上的元素值为1,其它位置上的元素值为0;
计算待转换张量中的其它待转换打包单元对应的目标打包单元下待打包元素;
按序对待转换张量中各行对应的目标打包单元下待打包元素进行打包;
其中,目标待转换打包单元为待转换张量中的任意一个待转换打包单元。
进一步,如图7所示,该计算设备还包括:通信组件72、电源组件73等其它组件。图7中仅示意性给出部分组件,并不意味着计算设备只包括图7所示组件。
值得说明的是,上述关于计算设备各实施例中的技术细节,可参考前述的方法实施例中的相关描述,为节省篇幅,在此不再赘述,但这不应造成本申请保护范围的损失。
本申请实施例还提供一种数据库系统,包括数据查询节点和存储节点;
数据查询节点用于存储和执行计算机指令,存储节点用于存储执行前述计算机指令所需的数据表,计算机指令被数据查询节点执行时实现前述方法实施例中的各步骤。
其中,数据库系统可部署在云端,存储节点和数据查询节点均可为逻辑节点,在物理实现上,两者均可实现为一台或多台云服务器。相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被执行时能够实现上述方法实施例中的各步骤。
上述图7中的存储器,用于存储计算机程序,并可被配置为存储其它各种数据以支持在计算平台上的操作。这些数据的示例包括用于在计算平台上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
上述图7中的通信组件,被配置为便于通信组件所在设备和其他设备之间有线或无线方式的通信。通信组件所在设备可以接入基于通信标准的无线网络,如WiFi,2G、3G、4G/LTE、5G等移动通信网络,或它们的组合。在一个示例性实施例中,通信组件经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
上述图7中的电源组件,为电源组件所在设备的各种组件提供电力。电源组件可以包括电源管理系统,一个或多个电源,及其他与为电源组件所在设备生成、管理和分配电力相关联的组件。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器 (CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (RAM) 和/或非易失性内存等形式,如只读存储器 (ROM) 或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器 (SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器 (ROM)、电可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘 (DVD) 或其他光学存储、磁盒式磁带,磁带式磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体 (transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
- 一种数据查询方法、装置、电子设备及存储介质
- 一种数据查询方法、装置、电子设备及存储介质
- 一种元数据查询方法、装置、设备及计算机可读存储介质
- 一种数据库高并发查询方法、设备和计算机可存储介质
- 一种数据查询方法、计算机可读存储介质及终端设备
- 数据存储、查询方法及设备、数据处理设备、存储介质
- 数据查询方法、数据存储方法及相应的设备、系统、介质