[發明專利]一種無偏序關系的數據庫密文索引方法無效
| 申請號: | 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.szxzyx.cn/pat/books/201010169784.2/1.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種Flash源文檔信息提取方法
- 下一篇:一種自定義消息對話框方法





