[发明专利]一种无偏序关系的数据库密文索引方法无效
申请号: | 201010169784.2 | 申请日: | 2010-05-12 |
公开(公告)号: | CN102243630A | 公开(公告)日: | 2011-11-16 |
发明(设计)人: | 赵飞 | 申请(专利权)人: | 北京安华金和科技有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30;G06F21/00 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100081 北京市海*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 无偏序 关系 数据库 索引 方法 | ||
1.一种无偏序关系的数据库密文索引的建立方法,包括如下步骤:
(1)对每个敏感字段创建一个密文索引节点表和一个密文索引叶子表,其中密文索引节点表包含字段LEVELID、字段NodeId、字段NextNodeId和字段MaxKey;密文索引叶子表包含字段Pid、字段TROWID、字段NodeId、字段KEYVALUE;
(2)按照树状结构组织方式,在密文索引节点表中存储敏感字段的密文索引根节点和子节点数据,其中:
LEVELID:代表条目所属的节点类型。1代表根节点条目,2代表子节点条目。
NodeId:节点的ID值,用于区分不同节点的记录集合,所有相同节点下的记录具有相同的NodeId值。
NextNodeId:记录当前条目的下层节点的NodeId,用于维护节点间的关系;对于根节点中的每条记录,该值等于子节点中的某个节点的NodeId。对于子节点中的每条记录,该值等于叶子表中的某个叶子节点的NodeId。
MaxKey:记录当前条目的NextNodeId指向的下层节点中所有记录的最大值,以密文形式存储,节点中所有的MaxKey值之间没有任何的顺序关系,或用于描述顺序关系的辅助信息。
(3)按照树状结构组织方式,在密文索引叶子表中存储密文索引的叶子结点数据,其中:
Pid:表主键
TROWID:索引条目对应的数据的行标识。以ORACLE数据库为例,是表记录的ROWID。
NodeId:叶子节点ID,与节点表中子节点的某个条目的NextNodeId对应,所有相同叶子节点下的记录具有相同的值。
KEYVALUE:密文字段的值,以密文形式存储,是被加密的数据记录;在叶子节点表中,KEYVAKUE字段的数据之间没有任何的顺序关系,或用于描述顺序关系的辅助信息。
2.一种无偏序关系的数据库密文索引的检索方法,包括:
(1)在每个新的数据库连接创建的时候,将密文索引节点表中保存的根节点和子节点中的数据全部解密,经过排序后缓存在数组中;
(2)在每次开始一次新的查询的时候,判断当前密文索引的节点表数据是否发生了变更,如果发生了变更则重新对节点表中的数据进行缓存,如果没有发生变更则不对节点表中的数据进行缓存;
(3)根据不同查询条件分别进行处理:
如果是“=”查询,则执行下列步骤:
①从节点表数据缓存中找到叶子表中哪个叶子节点中可能存在符合条件的数据;
②一次性批量的取得该叶子节点中的所有记录并进行批量的解密;
③将解密后的数据排序后进行比对,找到并返回该叶子节点中所有符合条件的记录的TROWID;
如果是“<”或“<=”查询,则执行下列步骤:
①从节点表数据缓存中找到所有小于查询条件键值的子节点记录,直接返回这些子节点记录对应的叶子节点的所有记录的TROWID;
②找到第一条>=该键值的子节点记录,并批量的取得该记录指向的叶子节点的全部记录进行解密;
③将解密后的数据排序后进行比对,找到并返回该叶子节点中所有符合条件的记录的TROWID;
如果是“>”或“>=”查询,则执行下列步骤:
①从节点表数据缓存中找到所有大于查询条件键值的子节点记录,直接返回这些子节点记录对应的叶子节点的所有记录的TROWID;
②找到第一条<=该键值的子节点记录,并批量的取得该记录指向的叶子节点的全部记录进行解密;
③将解密后的数据排序后进行比对,找到并返回该叶子节点中所有符合条件的记录的TROWID;
如果是“KEY2<F<Key1”或“KEY2<F<=Key1”或“KEY2<=F<Key1”或“KEY2<=F<=Key1”查询,则执行下列步骤:
①从节点表数据缓存中找到所有<Key1并且>Key2的子节点记录,直接返回这些子节点记录对应的叶子节点的所有记录的TROWID;
②找到第一条>=Key1的子节点记录,并批量的取得该记录指向的叶子节点的全部记录进行解密,然后将解密后的数据排序后进行比对,找到并返回该叶子节点中所有符合条件的记录的TROWID;
③找到第一条<=Key2的子节点记录,并批量的取得该记录指向的叶子节点的全部记录进行解密,然后将解密后的数据排序后进行比对,找到并返回该叶子节点中所有符合条件的记录的TROWID。
3.一种无偏序关系的数据库密文索引的维护方法,根据不同的记录操作指令采取不同的维护步骤,包括:
如果是“INSERT”记录操作,则执行下列步骤:
①从节点表数据缓存中找到叶子表中哪个叶子节点中可能存在符合条件的数据,确定符合条件的叶子节点;
②如果该叶子节点中的记录数大于一个叶子节点可以包含的最大记录数的80%,则进入步骤3否则在该叶子节点中插入一条记录,然后返回;
③增加一个叶子节点,然后在该新增的叶子节点中插入一条记录。并相应的在上层子节点中新增一条对应这一新增的叶子节点的记录;
如果是“DELETE”记录操作,则直接将叶子表中TROWID符合删除条件的记录从叶子表中删除;
如果是“UPDATE”记录操作,则先执行“DELETE”操作,然后执行INSERT操作;
如果是“TRUNCATE”操作,则直接将密文索引表中的全部记录删除。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京安华金和科技有限公司,未经北京安华金和科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010169784.2/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种Flash源文档信息提取方法
- 下一篇:一种自定义消息对话框方法