一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于五枝树的密态数据库索引构建与查询方法与流程

2022-02-22 19:38:47 来源:中国专利 TAG:


1.本发明涉及信息安全领域,尤其涉及一种基于五枝树的密态数据库索引构建与查询方法。


背景技术:

2.为了廉价的信息存储资源,很多用户将数据外包于云计算环境中。因云存在黑客攻击等大量安全威胁,用户需要对数据的存储与使用全过程加密,通常可借鉴不经意随机访问机(oblivious ram,oram)技术。不经意随机访问机指的是一种用户和云之间的安全通信协议,假设用户是可信的,云是不可信且好奇的,云能正常执行用户的通信协议但却尝试从任何数据访问中窃取用户私密数据。安全的不经意随机访问机能彻底隐藏数据内容和数据的读写规律,使得云始终无法获得数据的实际存储地址和数据的内容。常用的不经意随机访问机有path oram等,它提供了一个对私密数组数据的快速安全读、写接口。
3.常用的不经意随机访问机并没有对密态数据库进行充分优化。比如用户需要对一张密态数据库表执行连接查询,执行"select*from users where name='tom'and gender='male'",用户需要快速读取存储于云中的数据库表格users中的用户名为tom性别为male的用户,且不泄露私密数据。如果简单地使用不经意随机访问机来存储数据,数据查询过程很有可能会遍历几乎一半的数据库表格,效率极其低下。
4.为了提升数据库的连接查询效率,本发明提供了一种基于五枝树的密态数据库索引构建与查询方法。


技术实现要素:

5.为实现本发明之目的,采用以下技术方案予以实现:
6.一种基于五枝树的密态数据库索引构建与查询方法,包括:步骤1.构建五枝树结构;步骤2.初始化五枝树;步骤3.五枝树上的连接查询;其中构建五枝树包括构建五枝树节点和节点的分支,所述五枝树包括单关键词五枝树和多关键词五枝树。
7.所述的基于五枝树的密态数据库索引构建与查询方法,其中:
8.单关键词五枝树是一棵满二叉树,其任意一个非叶子节点都有两个孩子节点,假设w为一个关键词,一棵包含该关键词的高度为l的单关键词五枝树用(l,w)-tree表示,其满足如下的条件:
9.1)它的每个树节点都可以最多容纳一个关键词,称为元素;
10.2)每一个树节点要么为空,要么保存有关键词w;
11.3)它的任意的非叶子节点的元素等于左子树的元素的集合和右子树节点集合的并集;
12.4)任意一个树节点都有五根树枝,分别用b1,b2,b3,b4,b5表示;
13.5)对于任意的非叶子节点,它的b1和b2分别指向本节点的满二叉树左边的孩子节点和右边的孩子节点;对于叶子节点,它的b1和b2为空;
14.6)对于任意的非叶子节点,b3和b4分别指向本节点下方满二叉树的左边的最近的“连接点”和右边的最近的“连接点”,连接点指的是拥有两个非空孩子的树节点,如果不存在左边最近的连接点或右边的最近连接点,那么b3和b4分别指向左边子树的非空叶子节点和右边子树的非空叶子节点,对于任意的叶子节点,b3和b4为空;
15.7)如果一个节点的左边子节点为空,那么此节点的b3为空,如果一个节点的右边子节点为空,那么此节点的b4为空;
16.8)对于任意的非叶子节点,b5指向该非叶子节点下方最远的满层,满层的定义如下,在单关键词五枝树的一层中,如果所有的节点都非空,那么此层为满层,对于任意的叶子节点,b5指针为空。
17.所述的基于五枝树的密态数据库索引构建与查询方法,其中:多关键词五枝树指的是一组高度相同但关键词不同的单关键词五枝树的并集。
18.所述的基于五枝树的密态数据库索引构建与查询方法,其中:在一棵(l,w)-tree中,b1和b2指针分别是b3和b4指针的一部分,于是一个树节点可以用(b3,b4,b5)三根指针表示,一棵五枝树b5tree采用如下方法存储,对于任意的非空五枝树(l,w)-tree节点,假设p为此节点的绝对路径,r=(b3,b4,b5),为此节点的三根特殊指针,那么此节点存储所有的(w,p,r)元组数值。
19.所述的基于五枝树的密态数据库索引构建与查询方法,其中初始化五枝树包括:
20.步骤a、对文件排序:假设一个文件是一组关键词的集合,对n个要存入五枝树的文件,该步骤将每个文件从0到n-1进行排序;
21.步骤b、将文件放入五枝树的叶子节点中:构建一棵叶子数量大于n的五枝树,将步骤a中的文件和标识该文件的关键词分别放入五枝树的n个叶子节点中;
22.步骤c、根据叶子节点中的关键词填充父节点:根据单关键词五枝树的定义,任意非叶子节点中的元素等于左子树的元素的集合和右子树节点集合的并集;
23.步骤d、保存节点:按照步骤c的操作将所有节点填充完毕后保留非空的五枝树节点信息;
24.步骤e、计算节点的分枝并保存:将多关键词五枝树的分枝根据关键词分离出多棵单关键词五枝树,然后分别计算每个单关键词节点的三条分枝(b3,b4,b5)并保存,最终每个节点都表示为一个三元组(w,p,r),其中叶子节点还包括分离出来的文件;
25.步骤f、加密五枝树:使用不经意随机访问机提供的读写数据接口对五枝树的节点(w,p)和分支信息(r)进行加密并存储到云端。
26.所述的基于五枝树的密态数据库索引构建与查询方法,其中,五枝树上的连接查询是指包含多个关键词的查询,将包含u个关键词的u维连接查询表示为φ=(w1∧w2∧

∧wu),设d表示一棵单关键词五枝树((l,w)-tree)t中的一个树节点,五枝树上的连接查询算法search(t,φ,d)包括:
27.步骤a.搜索一个节点,如果这个节点符合连接查询条件,则输出此节点:根据输入的多关键词五枝树t和一个连接查询φ,从默认为根节点的节点d开始进行连接查询,判断在节点d中的每个关键词构成的单关键词五枝树的最底层是否为该关键词的满层,如果最底层是该关键词满层,则直接将该关键词从连接查询φ中移除得到简化后的连接查询φ,对简化后的连接查询φ中的下一个关键词继续进行上述判断和移除,如果连接查询φ中关
键词已全部被移除,则直接将节点d作为最终结果输出,上述情况下连接查询φ中的关键词都被移除,因此可视为连接查询条件为空;如果遍历所有关键词后连接查询条件不为空,则继续判断节点d是不是叶子节点,如果d是叶子节点且满足当前连接查询的条件,则将当前节点d作为结果输出;
28.步骤b、如果步骤a未获得满足查询条件的节点d,则跳跃到距离节点d最近的多关键词满层进行连接查询,对该满层中的全部节点递归调用本连接查询算法,包括:如果节点d不符合步骤a中的情况,没有作为结果输出,则判断是否存在距离节点d最近的多关键词满层,如果满足上述判断,则跳跃到最近的满层,对满层中所有节点递归调用本连接查询算法搜索,即执行search(t,φ,d),其中d是最近的满层中的节点,否则执行步骤c和步骤d;
29.步骤c、跳跃到连接查询中距离节点d最远的左边的长枝b3指针指向的节点,递归调用本连接查询算法搜索,即执行search(t,φ,d
φ
.left);
30.步骤d、跳跃到连接查询中距离节点d最远的右边的长枝b4指针指向的节点,递归调用本连接查询算法搜索,即执行search(t,φ,d
φ
.right)。
附图说明
31.图1为高度为4的单关键词五枝树构造示例图;
32.图2为高度为5的单关键词五枝树构造示例图;
33.图3为多关键词五枝树构造示例图;
34.图4为初始化五枝树的流程图;
35.图5为五枝树上连接查询的流程图。
具体实施方式
36.下面结合附图1-5,对本发明的具体实施方式进行详细说明。
37.基于五枝树的密态数据库索引构建与查询方法包括:步骤1.构建五枝树结构;步骤2.初始化五枝树;步骤3.五枝树上的连接查询。
38.步骤1.构建五枝树结构
39.构建五枝树结构包括构建五枝树节点和节点的分支,包括单关键词五枝树和多关键词五枝树两种新的数据结构以及五枝树的构建方法。
40.1、单关键词五枝树结构
41.单关键词五枝树是一棵满二叉树,任意一个非叶子节点都有两个孩子节点。假设w为一个关键词,一棵包含该关键词的高度为l的单关键词五枝树用(l,w)-tree表示,其满足如下的条件:
42.1)它的每个树节点都可以最多容纳一个关键词,称为元素;
43.2)每一个树节点要么为空,要么保存有关键词w;
44.3)它的任意的非叶子节点的元素等于左子树的元素的集合和右子树节点集合的并集;
45.4)任意一个树节点都有五根树枝(或者称指针),分别用b1,b2,b3,b4,b5表示,它们可以为空指针;
46.5)对于任意的非叶子节点,它的b1和b2分别指向本节点的满二叉树左边的孩子节
点和右边的孩子节点;对于叶子节点,它的b1和b2为空;
47.6)对于任意的非叶子节点,b3和b4分别指向本节点下方满二叉树的左边的最近的“连接点”和右边的最近的“连接点”。连接点指的是拥有两个非空孩子节点的树节点。如果不存在左边最近的连接点或右边的最近连接点,那么b3和b4分别指向左边子树的非空叶子节点和右边子树的非空叶子节点;对于任意的叶子节点,b3和b4为空;
48.7)如果一个节点的左边子节点为空,那么此节点的b3为空;如果一个节点的右边子节点为空,那么此节点的b4为空;
49.8)对于任意的非叶子节点,b5指向该非叶子节点下方最远的满层。满层的定义如下,在单关键词五枝树的一层中,如果所有的节点都非空,那么此层为满层。一个树节点下方可能存在多个满层;对于任意的叶子节点,b5指针为空;
50.2、多关键词五枝树
51.一棵多关键词五枝树指的是一组(数量大于或等于2)高度相同但关键词不同的单关键词五枝树的并集。为方便起见,以下本发明将多关键词五枝树直接称为五枝树(five-branch tree,简称b5tree)。
52.3、五枝树的表示方法
53.在一棵(l,w)-tree中,b1和b2指针分别是b3和b4指针的一部分,于是一个树节点可以用(b3,b4,b5)三根指针表示。一棵五枝树b5tree采用如下方法存储,对于任意的非空五枝树(l,w)-tree节点,假设p为此节点的绝对路径(指的是树根节点到此节点的字符串编码,其中树根用节点n1标识,左孩子节点用0表示,右孩子节点用1表示),r=(b3,b4,b5)为此节点的三根特殊指针,那么此节点存储所有的(w,p,r)元组数值。对于任意的空五枝树(l,w)-tree节点,它的五根指针不需要存储。
54.图1为一棵单关键词五枝树(4,w)-tree的构造示例,每个节点都有五条分枝。为方便起见,此处仅展现根节点n1的五根树枝,n1具有b1,b2,b3,b4,b5五根树枝,其中b1和b2分别指向根节点左边的孩子节点n2和右边的孩子节点n3,b3指向左边的最近的连接点,即n2,由于右边没有连接点,b4指向右边子树的非空叶子节点,即l5,图1中所示的单关键词五枝树中,第一层和第二层为满层,b5指向根节点下方最远的满层,即指向第二层。图2为一棵单关键词五枝树(5,w)-tree构造示例,该图中关键词的排列和图1中的(4,w)-tree不同,根节点n1的b3和b4与分枝b1和b2一样分别指向其左右孩子节点,即b1和b2指针分别是b3和b4指针的一部分,在这棵单关键词五枝树中,前四层都为满层,n1的b5分枝指向最远的满层即第四层。
55.图3为一棵高度为4的b5tree构造示例,其每个节点中的关键词为下方两棵(l,w)-tree节点中关键词的集合,前面已详细介绍了(l,w)-tree的结构,此处两棵分别包含关键词w,v的(l,w)-tree省略部分分枝表示,为方便起见,只给出了n1节点的(b3,b4,b5)三根指针以及n2,n3两个个节点的b3和b4两条分枝的指向。
56.步骤2.初始化五枝树
57.初始化五枝树包括初始化树中的每个节点和分枝,然后调用不经意随机访问机对其进行加密存储。如图4所示,五枝树的初始化包括6个步骤,具体描述如下。
58.步骤a、对文件排序。假设一个文件是一组关键词的集合,对n个要存入五枝树的文件,该步骤将每个文件从0到n-1进行排序。
59.步骤b、将文件放入五枝树的叶子节点中。构建一棵叶子数量大于n的五枝树,将步骤a中的文件和标识该文件的关键词分别放入五枝树的n个叶子节点中,即每个叶子节点保存一个文件以及标识该文件的一个关键词。
60.步骤c、根据叶子节点中的关键词填充父节点。根据单关键词五枝树的定义,任意非叶子节点中的元素等于左子树的元素的集合和右子树节点集合的并集。比如图3中两个文件l4和l5,l4中包含一个关键词{v},l5中包含两个关键词{w,v},将这两个文件放入五枝树的两个叶子节点中,这两个叶子节点的父节点n3中的关键词是{w,v},即两个叶子节点中关键词集合的并集{v}∪{w,v}。
61.步骤d、保存节点。按照步骤c的操作将所有节点填充完毕后保留非空的五枝树节点信息,空的节点中无关键词信息,舍弃空节点(空节点没有路径值,所以如果是空节点,则不会被访问到,即直接丢弃)。
62.步骤e、计算节点的分枝并保存。一棵五枝树是多棵单关键词五枝树的集合,此步骤计算每个单关键词五枝树的分枝。步骤d中的节点中包含多个关键词,将关键词按照图3的方式分离出多棵单关键词五枝树然后分别计算每个单关键词节点的三条分枝(b3,b4,b5)并保存。最终每个节点都可以表示为一个三元组(w,p,r),其中叶子节点还包括分离出来的文件。
63.步骤f、加密五枝树。本发明中使用不经意随机访问机提供的读写数据接口对五枝树的节点(w,p)和分支信息(r)进行加密存储到云端,假设oram为一个不经意随机访问机,它提供不经意数据读接口oram.read(a),表示远程私密读取存储于云中数组a中地址为a的数据,值为a[a]的内容;它也提供不经意的数据的写接口oram.write(a,data)表示远程私密写入存储于云中数组a中地址为a的数据,内容是data,即步骤e中的三元组(w,p,r)。读和写操作都不产生访问特征(access pattern)隐私泄露。对于任意(l,w)-tree节点,用户调用不经意随机访问机访问接口,通过oram.write(w||p,r),将数据远程私密写入云,其中||指的是字符串的连接符号。对于一棵b5tree,采用上述方法将所有(l,w)-tree存储于云。
[0064]
三、五枝树上的连接查询
[0065]
本发明所述的连接查询是指包含多个关键词的查询,包含u个关键词的u维连接查询表示为φ=(w1∧w2∧

∧wu)。节点符合该连接查询条件是指该节点包括连接查询中的全部u个关键词。本发明提出的五枝树上的连接查询算法search(t,φ,d)具体描述如下,其中d表示一棵单关键词五枝树((l,w)-tree)t中的一个树节点,(l,w)-tree的节点d的三根树枝(b3,b4,b5)用(dw.left,dw.right,dw.mid)来表示,其中dw.left表示(l,w)-tree的节点d的b3指针,它指向左边的最近连接点或叶子节点,dw.right表示(l,w)-tree的节点d的b4指针,它指向右边的最近连接点或叶子节点,dw.mid表示节点d的(l,w)-tree的节点d的b5指针,它指向节点d下方最远的满层,d.level表示节点d的当前层。d
φ
.mid表示节点d下方连接查询φ中最近的满层,即d
φ
.mid=min
w∈φ
{dw.mid},d
φ
.left表示节点d内连接查询φ中最长的左长枝(即b3指针),即d
φ
.left=longest
w∈φ
{dw.left},d
φ
.right表示节点d内连接查询φ最长的右长枝(即b4指针),即d
φ
.right=longest
w∈φ
{dw.right}。读取任意的树节点中的树枝数据,都采用不经意随机访问机接口以保护用户隐私数据。如图5所示,search(t,φ,d)可以描述如下:
[0066]
步骤a、搜索一个节点,如果这个节点符合连接查询条件,则输出此节点。根据输入
的多关键词五枝树t和一个连接查询φ,从节点d(默认为根节点)开始进行连接查询。判断在节点d中的每个关键词构成的单关键词五枝树的最底层是否为该关键词的满层,如果最底层是该关键词满层(即树的高度l)即b5指向该最底层,则说明所有的文件中都包含该关键词,直接将该关键词从连接查询φ中移除以得到简化后的连接查询,而不需要继续向下搜索该关键词。对简化后的连接查询φ中的下一个关键词继续进行上述判断和移除,如果连接查询φ中关键词已全部被移除(说明每个文件都满足连接查询的条件),则直接将节点d作为最终结果输出,上述情况下连接查询φ中的关键词都被移除,因此可视为连接查询条件为空;如果遍历所有关键词后连接查询条件不为空,则继续判断节点d是不是叶子节点,如果d是叶子节点且满足当前连接查询的条件(即叶子节点包含了连接查询中的所有关键词),则将当前节点d作为结果输出。
[0067]
步骤b、如果步骤a未获得满足查询条件的节点d,则跳跃到距离节点d最近的多关键词满层进行连接查询,对该满层中的全部节点递归调用本连接查询算法。具体如下:如果节点d不符合步骤a中的情况,没有作为结果输出,则判断是否存在距离节点d最近的多关键词满层,如果满足上述判断(即d
φ
.mid不为空)则跳跃到最近的满层,对满层中所有节点递归调用本连接查询算法搜索,即执行search(t,φ,d),其中d是最近的满层中的节点。否则执行步骤c和步骤d。
[0068]
步骤c、跳跃到连接查询中距离节点d最远的左边的长枝b3指针指向的节点,递归调用本连接查询算法搜索。即执行search(t,φ,d
φ
.left)。
[0069]
步骤d、跳跃到连接查询中距离节点d最远的右边的长枝b4指针指向的节点,递归调用本连接查询算法搜索。即执行search(t,φ,d
φ
.right)。
[0070]
以图3中的五枝树为例进行连接查询φ=(w∧v),具体步骤描述如下。
[0071]
步骤a、从根节点n1开始执行连接查询算法。判断关键词w构成的(l,w)-tree中最底层是否为满层,从图3可知底层不符合满层的定义,连接查询没有简化,d不为叶子节点,继续执行步骤b。
[0072]
步骤b、找到距离根节点最近的多关键词满层,两棵(l,w)-tree的满层都是第一层和第二层,距离根节点最近的满层即为第二层,从第二层中的两个节点开始进行连接查询。从满层中第一个节点n2开始递归执行连接查询算法,即执行search(t,φ,n2),不满足前面步骤的条件,执行步骤c。
[0073]
步骤c、对n2所在的所有(l,w)-tree中最长的左长枝所指向的节点递归执行连接查询算法,图3中n2在关键词w构成的(l,w)-tree中的左长枝指向叶子节点l0,而在关键词v构成的(l,w)-tree中的左长枝为空,因此对叶子节点l0执行search(t,φ,l0),不满足连接查询条件,则继续对n2节点执行步骤d。
[0074]
步骤d、继续对n2所在的所有(l,w)-tree中最长的右长枝所指向的节点递归执行连接查询算法,即对叶子节点l2执行search(t,φ,l2),查询满足条件将叶子节点l2作为结果输出。返回用同样的方法继续对满层中第二个节点进行连接查询,最终查询到两个叶子节点l2和l5作为最终的结果输出。
[0075]
通过本发明,有效解决了数据查询冗余以及查询消耗较多时间问题,具体体现为五枝树的长分支,能够支持快速跳跃连接查询。并且在查询过程中对于任一访问路径和关键词信息进行有效加密,较好保护了用户数据隐私。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献