CN112148739B - 独立于加密数据库的密文索引方法及系统 - Google Patents

独立于加密数据库的密文索引方法及系统 Download PDF

Info

Publication number
CN112148739B
CN112148739B CN202011022190.9A CN202011022190A CN112148739B CN 112148739 B CN112148739 B CN 112148739B CN 202011022190 A CN202011022190 A CN 202011022190A CN 112148739 B CN112148739 B CN 112148739B
Authority
CN
China
Prior art keywords
data
index
database
ciphertext
memory structure
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.)
Active
Application number
CN202011022190.9A
Other languages
English (en)
Other versions
CN112148739A (zh
Inventor
胡家惠
杨志国
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shirong Energy Technology Co ltd
Original Assignee
Shirong Energy Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shirong Energy Technology Co ltd filed Critical Shirong Energy Technology Co ltd
Priority to CN202011022190.9A priority Critical patent/CN112148739B/zh
Publication of CN112148739A publication Critical patent/CN112148739A/zh
Application granted granted Critical
Publication of CN112148739B publication Critical patent/CN112148739B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/248Presentation of query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6227Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Fuzzy Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种独立于加密数据库的密文索引方法及系统,包括存储并运行于第一处理设备中的数据库,以及存储并运行于第二处理设备中的外部索引引擎,通过以下方法创建索引:使用数据库的socket通讯方式,直接传送数据库的基本表中的索引密文列数据至外部索引引擎;在将索引密文列数据插入至索引内存结构前,采用预设解密算法对索引密文列数据进行解密,获得明文数据;并把明文数据插入到索引内存结构中;在明文数据插入至索引内存结构后,对明文数据进行加密,并存储至磁盘进行持久保存。外部索引引擎独立于被加密的数据库,可以有效减低数据库本身的运行负载,提高数据更新效率和数据查询效率,提高数据库应用系统的性能。

Description

独立于加密数据库的密文索引方法及系统
技术领域
本发明涉及数据库领域,尤其涉及一种独立于加密数据库的密文索引方法及系统。
背景技术
数据库是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合,其能够与多个用户共享,具有尽可能小的冗余度,并且与应用程序彼此独立。
对于某些需要进行加密的数据库而言,在对数据库表完成列数据加密后,列数据以密文形式存放,对于数据库表的列数据索引搜索功能中的绝大部分功能会因为加密的原因而失效,只能对索引列进行等值搜索查询,不能进行各种范围查询。
如果用户的查询请求中包含了对加密的列数据的进行搜索的条件,数据库在执行搜索任务时,只能对数据库表进行全表扫描查询。全表扫描查询方式对于数据量很大的数据库表而言,在搜索时由于需要查询的数据量较大,会造成数据库的性能相比于一般查询而言,出现几十倍甚至上百倍的下降。查询速度出现大幅下降,带给用户的体验不佳。
相关技术中,为了解决上述加密数据库查询搜索量大,搜索过程耗时长的问题,使用数据库内部的SQL开发模块实现密文索引技术。使用该开发模块执行密文索引功能时,虽然可以完成数据库表的密文列的各种搜索查询过程,但是所有的索引查询过程,比如更新(包括增、删、改)等操作都只能在数据库内部完成。
对于存储的数据量很大的数据库表,对密文索引的每一个操作可能需要转化为对索引表的几十次解密操作,因此,对于数据库表的几十次更新操作,增大了数据库本身的性能损耗。经过对比测试,使用数据库内部SQL模块实现密文索引的索引更新性能比普通的数据库索引的更新性能下降了10倍甚至几十倍,严重影响了用户使用效率。
发明内容
为了解决上述技术问题,本发明提供了一种独立于加密数据库的密文索引方法及系统。
基于本发明的第一方面,提供了一种独立于加密数据库的密文索引方法,所述加密数据库包括存储并运行于第一处理设备中的数据库,以及存储并运行于第二处理设备中的外部索引引擎,通过以下方法创建索引:
使用数据库的socket通讯方式,直接传送所述数据库的基本表中的索引密文列数据至外部索引引擎;
在将所述索引密文列数据插入至所述外部索引引擎的内存结构前,采用预设解密算法对所述索引密文列数据进行解密,获得明文数据;
把所述明文数据插入到所述外部索引引擎的内存结构中;
在所述明文数据插入至所述外部索引引擎的内存结构后,对所述明文数据进行加密,并存储至磁盘进行持久化保存。
上述方法还具有以下特点:通过以下方法更新索引包括:
基于用户的数据更新请求,使用所述数据库的触发器机制将更新密文数据实时同步至相应的索引同步中间表中;
使用异步定时同步方式,通过数据库的socket通讯机制,将所述更新密文数据由所述索引同步中间表传输至所述外部索引引擎的内存结构中;
在所述更新密文数据插入所述外部索引引擎的内存结构前,采用所述预设解密算法对所述更新密文数据进行解密,获得更新明文数据;
插入所述更新明文数据至所述外部索引引擎的内存结构中;插入过程中,需要先在平衡二叉树数据结构中进行插入位置查找,如果查找路径中的节点数据在内存结构中,直接进行比较;如果查找路径中的节点数据不在内存中而在磁盘文件里,则先从磁盘文件读入再完成比较;在进行数据删除时,先在平衡二叉树数据结构中找到删除节点,直接进行节点删除;
在所述更新明文数据插入至所述外部索引引擎的内存结构后,对所述更新明文数据进行加密,并存储至磁盘进行持久化保存。
上述方法还具有以下特点:通过以下方法查询索引:
接收用户按照密文索引列进行查询的数据查询请求;
通过数据库的socket通讯方式传输所述数据查询请求至所述外部索引引擎进行数据搜索查询;搜索时从平衡二叉树的根节点开始搜索,搜索过程中把查询条件跟搜索路径中的平衡二叉树节点数据进行比较,如果节点数据在所述外部索引引擎的内存结构中,直接完成比较;如果节点数据在磁盘上,从磁盘文件读入相应数据再进行比较;
查询到满足所述数据查询请求的行号后,返回所述行号至所述数据库。
上述方法还具有以下特点:所述查询索引还包括:
将所述行号与所述索引同步中间表中存储的未更新至所述外部索引引擎中的数据合并;
确定合并完成后的目标行号;
通过数据库的扩展索引接口返回所述目标行号至所述数据库;
所述数据库根据所述目标行号和所述按照密文索引列进行查询得到的行号合并后,将满足查询条件的行列数据返回给用户。
根据本发明的第二方面,本发明还提供了一种独立于加密数据库的密文索引系统,所述系统包括第一处理设备和第二处理设备,所述第一处理设备中存储并运行数据库,所述第二处理设备运行外部索引引擎,所述第一处理设备包括:
第一通讯单元,用于使用数据库的socket通讯方式,直接传送所述数据库的基本表中的索引密文列数据至外部索引引擎;
第一处理单元,用于在将所述索引密文列数据插入至所述外部索引引擎的内存结构前,采用预设解密算法对所述索引密文列数据进行解密,获得明文数据;
所述第二处理设备包括第二存储单元,所述第二存储单元用于:
把所述明文数据插入到所述外部索引引擎的内存结构中;
在所述明文数据插入至所述外部索引引擎的内存结构后,对所述明文数据进行加密,并存储至磁盘进行持久化保存。
上述系统还具有以下特点:所述第一处理单元还用于:
基于用户的数据更新请求,使用所述数据库的触发器机制将更新密文数据实时同步至相应的索引同步中间表中;
使用异步定时同步方式,通过数据库的socket通讯机制,将所述更新密文数据由所述索引同步中间表传输至所述外部索引引擎的内存结构中;
在所述更新密文数据插入所述外部索引引擎的内存结构前,采用所述预设解密算法对所述更新密文数据进行解密,获得更新明文数据;
所述第二存储单元还用于:
插入所述更新明文数据至所述外部索引引擎的内存结构中;插入过程中,需要先在平衡二叉树数据结构中进行插入位置查找,如果查找路径中的节点数据在内存结构中,直接进行比较;如果查找路径中的节点数据不在内存中而在磁盘文件里,则先从磁盘文件读入再完成比较;在进行数据删除时,先在平衡二叉树数据结构中找到删除节点,直接进行节点删除;
在所述更新明文数据插入至所述外部索引引擎的内存结构后,对所述更新明文数据进行加密,并存储至磁盘进行持久化保存。
上述系统还具有以下特点:所述第一通讯单元还用于:
接收用户按照密文索引列进行查询的数据查询请求;
通过数据库的socket通讯方式传输所述数据查询请求至所述外部索引引擎进行数据搜索查询;搜索时从平衡二叉树的根节点开始搜索,搜索过程中把查询条件跟搜索路径中的平衡二叉树节点数据进行比较,如果节点数据在所述外部索引引擎的内存结构中,直接完成比较;如果节点数据在磁盘上,从磁盘文件读入相应数据再进行比较;
所述处理设备还包括第二处理单元,所述第二处理单元用于:
查询到满足所述数据查询请求的行号后,返回所述行号至所述数据库。
上述系统还具有以下特点:所述第一处理单元具体用于:
将所述行号与所述索引同步中间表中存储的未更新至所述外部索引引擎中的数据合并;
确定合并完成后的目标行号;
通过数据库的扩展索引接口返回所述目标行号至所述数据库;
所述数据库根据所述目标行号和所述按照密文索引列进行查询得到的行号合并后,将满足查询条件的行列数据返回给用户。
本发明中的独立于加密数据库的密文索引方法及系统,外部索引引擎独立于被加密的数据库,可以有效减低数据库本身的运行负载,提高数据更新效率和数据查询效率,提高数据库应用系统的性能,方便用户使用,提升了用户的使用感受。
附图说明
构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据一示例性实施例示出的索引方法的流程图;
图2是根据一示例性实施例示出的索引方法的流程图;
图3是根据一示例性实施例示出的索引方法的流程图;
图4是根据一示例性实施例示出的索引同步中间表的示例;
图5是根据一示例性实施例示出的平衡二叉树的示例;
图6是根据一示例性实施例示出的数据库索引根节点实现方式的示例;
图7是根据一示例性实施例示出的二叉树结构实现方式的示例;
图8是根据一示例性实施例示出的索引更新方法的流程图;
图9是根据一示例性实施例示出的查询索引方法的流程图;
图10是根据一示例性实施例示出的索引系统的框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
本发明提供了一种独立于加密数据库的密文索引方法,加密数据库包括存储并运行于第一处理设备中的数据库,以及存储并运行于第二处理设备中的外部索引引擎,由于将数据库和外部索引引擎分别运行在不同的处理设备上,一方面,减少了对数据库存储空间的占用;另一方面,有效降低了数据库本身的运行复杂程度。当需要进行数据索引时,利用独立存在于数据库外的外部索引引擎实现索引,索引速度更快,用户体验更佳。
根据一示例性实施例,如图1所示,本发明提供了一种独立于加密数据库的外部密文索引方法,以减少用户在使用加密数据库进行内容搜索过程中的时长,提升用户的使用体验。
当然,可以理解的是,对于无需进行加密的数据库,也可以使用本实施例中的索引方法对数据库的数据进行处理,以提高数据库的数据处理速度,至需要减少加密和解密步骤即可。
本实施例中的加密数据库包括数据库和外部索引引擎,其中,数据库存储并运行于第一处理设备,外部索引引擎存储并运行于第二处理设备。第一处理设备和第二处理设备均为硬件设备,也即外部索引引擎在物理上独立于数据库。第一处理设备和第二处理设备比如可以是服务器、计算设备等。
本实施例中,在使用本实施例中独立于加密数据库的密文索引方法时,通过以下方法创建索引:
S110、使用数据库的socket通讯方式,直接传送数据库的基本表中的索引密文列数据至外部索引引擎的内存结构;
S120、在将索引密文列数据插入至外部索引引擎的内存结构前,采用预设解密算法对索引密文列数据进行解密,获得明文数据;
S130、把明文数据插入至外部索引引擎的内存结构中;
S140、在明文数据插入至外部索引引擎的内存结构后,对明文数据进行加密,并存储至磁盘进行持久化保存。
本实施例中以索引密文列作为对象,进行索引密文列数据创建。该步骤中,索引密文列数据可以是管理人员通过输入方式录入至数据库中的,也可以是利用数据库自身的获取功能模块自动捕捉获取的。
其中,索引密文列数据比如可以是对索引密文列数据的增加、删除和修改等操作。
在将索引密文列数据创建过程中,通过数据库的socket通讯方式,直接传送数据库的基本表中的索引密文列数据至外部索引引擎的内存结构。由于索引密文列数据在数据库的基本表中是以加密形式存储的,为了减少数据索引时间,在索引密文列数据插入至外部索引引擎的内存结构前,需要采用与密文对应的预设解密算法对索引密文列数据进行解密,获得明文数据。索引密文列数据以明文数据形式存储在外部索引引擎的内存结构。
为了提升数据安全性,在明文数据插入至外部索引引擎的内存结构后,对明文数据进行加密,并存储至磁盘进行持久化保存。
本实施例中的独立于加密数据库的外部密文索引方法,如图2所示,本实施例中的方法涉及到的更新索引方法,包括:
S210、基于用户的数据更新请求,使用数据库的触发器机制将更新密文数据实时同步至相应的索引同步中间表中;
S220、使用异步定时同步方式,通过数据库的socket通讯机制,将所述更新密文数据由所述索引同步中间表传输至所述外部索引引擎的内存结构中;
S230、在所述更新密文数据插入所述外部索引引擎的内存结构前,采用所述预设解密算法对所述更新密文数据进行解密,获得更新明文数据;
S240、插入所述更新明文数据至所述外部索引引擎的内存结构中;
在该步骤中,插入过程中,需要先在平衡二叉树数据结构中进行插入位置查找,如果查找路径中的节点数据在内存结构中,直接进行比较;如果查找路径中的节点数据不在内存中而在磁盘文件里,则先从磁盘文件读入再完成比较;在进行数据删除时,先在平衡二叉树数据结构中找到删除节点,直接进行节点删除。
S250、在所述更新明文数据插入至所述外部索引引擎的内存结构后,对所述更新明文数据进行加密,并存储至磁盘进行持久化保存。
在本实施例中,触发器是数据库自带的功能模块,当接收到用户的数据更新请求时,触发器执行实时更新功能,将更新密文数据实时同步至索引同步中间表中,其中,索引同步中间表属于数据库。本步骤中的实时更新是指,当数据库接收到更新密文数据时,同步更新至索引同步中间表中,中间不做停留,以保证数据更新实时性。
在通过异步定时同步方式,通过数据库的socket通讯方式,将更新密文数据由索引同步中间表传输至外部索引引擎的内存结构时,依然利用触发器的定时任务功能,将已经更新至索引同步中间表中的更新密文数据,采用异步方式,更新至第二处理设备的外部索引引擎的内存结构中。其中,触发器发出的异步更新信息用于触发异步更新过程,异步更新指示,索引同步中间表在接收到更新密文数据后,并不是直接将更新密文数据发送至外部索引引擎的内存结构,而是等一段时间后,在预定的更新时刻将更新密文数据发送至外部索引引擎的内存结构中。
本实施例中,更新密文数据由索引同步中间表更新至外部索引引擎的内存结构中时,需要利用第二处理设备中运行的数据库程序的socket链接,通过socket链接把更新密文数据传输至独立于数据库的外部索引引擎的内存结构中,确保传输过程的安全性和可靠性。
另外,本实施例中的独立于加密数据库的密文索引方法在实现上述步骤时,利用了SQL的UTL_TCP API机制,无需额外使用其他外设功能,实现更加方便。
本实施例中,外部索引引擎的内存结构物理上独立于数据库,索引更新维护和搜索查询均可以在独立的第二处理设备上完成。由于将搜索查询过程中数据库中独立出来,可以降低数据库的运行负载,减少数据库的存储压力,从整体上提高了数据库的性能。
本实施例中,由于本实施例中的独立于加密数据库的密文索引方法应用在安全性更高的加密数据库中,为了保证数据传输过程的安全性,更新密文数据传输至外部索引引擎的内存结构时是加密状态。因此,当外部索引引擎的内存结构在接收到加密状态的更新密文数据后,要对更新密文数据进行解密,以获得明文更新数据。
由上述步骤进行解密后,获得以明文形式存在的更新明文数据,进而将其同步至外部索引引擎的内存结构中并存储。其中,更新密文数据也即索引KEY,在第二处理设备中,更新密文数据是以明文状态保存的,以方便在后续搜索查询过程中能够以明文形式进行查询,以提高搜索效率,提升用户使用体验。
为了保证数据可靠性,避免出现数据丢失和泄露的情况,在对更新后的外部索引引擎的内存结构进行存储之前,还要对解密后的明文更新数据进行加密存储。
在加密存储后,将加密后的数据写入比如磁盘、光盘等存储介质中,作为永久化保存介质,以备出现意外情况时使用或查询。
由于本实施例中,外部索引引擎的内存结构中的内容以明文形式存在,因此,在利用外部索引引擎的内存结构进行搜索查询时,无需加密和解密步骤,查询速度更快,极大地提升了搜索效率,用户体验更好,整体上有效提高了数据库透明加密的用户体验。
另外,由于将外部索引引擎的内存结构从数据库中独立出来,有效降低了加密和解密过程对数据库造成的影响,方便用户使用。由于更新密文数据更新至数据库的同步中间表和外部索引引擎的内存结构中是以异步方式更新的,外部索引引擎的内存结构中的更新密文数据的更新过程滞后于索引同步中间表中的更新过程,因此,更新密文数据能够较少的影响到用户表的增、删、改等操作的性能,给用户带来更好的使用体验。
根据一示例性实施例,如图3所示,本实施例中的独立于加密数据库的密文索引方法还包括查询索引方法,查询索引方法包括以下步骤:
S310、接收用户按照密文索引列进行查询的数据查询请求。
S320、通过socket通讯方式传输数据查询请求至索引内存结构进行数据搜索查询。
该步骤中,搜索时从平衡二叉树的根节点开始搜索,搜索过程中把查询条件跟搜索路径中的平衡二叉树节点数据进行比较,如果节点数据在所述外部索引引擎的内存结构中,直接完成比较;如果节点数据在磁盘上,从磁盘文件读入相应数据再进行比较。
S330、查询到满足数据查询请求的行号后,返回行号至数据库。
S340、将行号与索引同步中间表中存储的未更新至外部索引引擎的内存结构中的数据合并。
S350、确定合并完成后的目标行号。
S360、通过数据库的扩展索引接口返回目标行号至数据库。
S370、数据库根据目标行号和按照密文索引列进行查询得到的行号合并后,将满足查询条件的行列数据返回给用户。
用户在搜索查询过程中输入数据查询请求,数据查询请求可以是关键字等,根据数据库的内容可以进行调整。
由于实际的查询索引过程是在外部索引引擎的内存结构中进行的,因此,数据库接收到查询信息后,会将查询信息发送给外部索引引擎的内存结构。外部索引引擎的内存结构接收到查询信息后,在外部索引引擎的内存结构中以明文查询方式搜索查询信息对应的当前行号。
另外,由于存储在外部索引引擎的内存结构的存储介质中的数据都是加密状态,因此,当利用外部索引引擎的内存结构进行搜索查询时,第二处理设备要获取存储在存储介质中的加密数据,并对存储介质中的加密数据进行解密,获得解密数据。在获得解密数据后,根据接收到查询信息,从解密数据中确定与查询信息对应的当前行号。
由于更新密文数据更新至数据库的同步中间表和外部索引引擎的内存结构中是以异步方式更新的,外部索引引擎的内存结构中的更新密文数据的更新过程滞后于数据库的索引同步中间表中的更新过程。为了保证反馈给用户的行号的准确性,确保查询到最准确的结果,在外部索引引擎的内存结构中进行查询的同时,还要在索引同步中间表中进行查询。
因此,第一处理设备还要根据查询信息,在索引同步中间表中搜索查询与查询信息对应的待更新行号。也即,通过socket通讯方式传输数据查询请求至外部索引引擎的内存结构进行数据搜索查询,查询到满足数据查询请求的行号后,返回行号至数据库,将行号与索引同步中间表中存储的未更新至外部索引引擎的内存结构中的数据合并,以确定合并完成后的目标行号。
其中,首先返回搜索查询到的行号和未更新至外部索引引擎的内存结构的数据至扩展索引接口中,进而在扩展索引接口中对行号和待更新数据进行合并,以确定目标行号。
其中,在合并过程中,如果行号和待更新数据一致,则任意发送哪一个均可。如果行号和待更新数据不一致,则可以将待更新数据为准,以确保返回当前最真实的行号给客户。
在确定了目标行号后,连接用户查询SQL,返回目标行号,并回到数据库中进行进一步查询,并将最终的查询结构反馈给用户,完成整个搜索查询过程。
本实施例中,在数据库的外部索引引擎的内存结构中采用C语言实现密文索引技术,除索引的更新维护查询不会影响数据库的性能外,数据库本身的更新维护性能也得到很大提高。由于,索引数据在第二处理设备的外部索引引擎的内存结构中以明文存放,索引更新维护和查询时进行明文比较,性能比多次进行密文数据解密后再比较提高十几倍甚至几十倍,从而有效解决了现有技术中使用SQL实现密文索引更新太慢的缺陷。
需要说明的是,无论是上述的更新密文数据的过程,还是搜索查询过程中,本发明中的索引同步中间表作为临时存放需要更新至外部索引引擎的内存结构的数据ndata(索引密文列)和base_rowid(行号)。如上,索引同步中间表的更新过程是由触发器机制启动同步更新,而后再由定时程序将索引同步中间表中的更新密文数据以异步方式通过和第二处理设备中的外部索引引擎中的socket连接传输至外部索引引擎的内存结构中。并且,在对外部索引引擎的内存结构进行更新之前,要多ndata进行解密,而后再进行更新。如下图4所示,是本实施例提供的索引同步中间表中记载的内容的示例。
当用户进行搜索查询时,先查询外部索引引擎的内存结构中满足查询条件列的行号,再合并该索引同步中间表中还没有来得及同步到外部索引引擎的内存结构中的待更新数据,在数据库扩展索引接口中返回给用户SQL,最后由数据库执行SQL,得到最终得返回结果。
外部索引引擎的内存结构中存储的以明文形式存在的索引数据采用平衡二叉树描述,当然,除了平衡二叉树外,也可以采用B+树和B-树。平衡二叉树又称为AVL树,平衡二叉树的特点是每个节点最多有左右两棵子树,而且左右子树的深度之差绝对值不超过1,这样可以保证按任意索引键搜索时时间的均衡性。平衡二叉树的查找和维护的算法都可以使用C语言实现。如图5所示,是一个平衡二叉树结构示例。
在使用平衡二叉树实现本实施例中的方法过程中,如图6所示,数据库索引根节点采用单链表结构,用单链表描述内存中的数据库所有索引树,每个节点代表一棵索引树(AVL),包括索引名称,加密列名称,根节点指针,根节点磁盘文件位置,加解密函数名称,加解密密钥,加密列类型,如果是日期字段,还包括时间类型格式等域。通过根节点可以找到和检索各个索引树,根据各个索引的索引键值查找满足条件的行号(ROWID)。
另外,上述平衡二叉树结构在具体实现时的实施方式,如图7所示,每个数节点中保存索引键数据(DADT),行号(BASE_ROWID)。节点平衡因子(BF:有三种取值0,1,-1),内存左子节点指针(LCHILD),内存右节点指针(RCHILD)。存储介质(磁盘文件)左节点位置(DSKLEFT),磁盘文件右节点位置(DSKRIGHT),重复值个数(EQUIVALCOUNT),下一个等值节点内存指针(NEXT_EQUIVAL_NODE),用于在平衡二叉树中存储重复值。
在使用外部索引引擎的内存结构进行搜索查询过程中,可以采用等值查询的方法。比如,用索引进行等值查询(=),从索引树的根节点开始进行比较,如果结果相等,继续判断重复值是否大于1,如果大于1,连同所有的相等值行号一起返回。如果搜索值小于根节点值,则继续查找左子树,如果搜索值大于根节点,则继续查找右子树,用递归算法实现。
除了上述等值查询方法,还可以使用范围查询方法,查询范围包括大于(>)、大于或等于(≥)、小于(<)、小于或等于(≤)、大于和等于(>and<)、大于或等于和小于(≥and<)、大于和小于或等于(>and≤)、大于或等于和小于或等于(≥and≤)、like等。
查询范围以大于(>)为例,从索引树的根节点开始进行比较,如果搜索值大于根节点,则查询右子树,如果小于根节点,则根节点和整个右子树都满足查询条件,遍历右子树,返回根节点和整个右子树节点的行号,同时递归查询左子树,最后完成大于(>)查询。整个查询用递归算法实现。其他范围的查找方法与查询范围以大于(>)为例类似,在此,不再赘述。
如图8所示,对本实施例中的数据更新过程进行详细说明。第一处理设备获取更新密文数据,触发器发出实时同步信号,将更新密文数据更新至数据库索引同步中间表中。接着,第二处理设备在触发器发出的异步同步信号作用下,将更新密文数据更新至外部索引引擎的内存结构中,在更新之前,要先进行解锁,在外部索引引擎的内存结构中,更新密文数据以明文形式存在。对更新后外部索引引擎的内存结构中的数据重新进行加密后,存储至存储介质中。
如图9所示,对本实施例中的数据搜索查询过程进行详细说明。第一处理设备接收用户输入的查询信息,并将查询信息发送给第二处理设备。第二处理设备接收到查询信息后,首先在外部索引引擎的内存结构中进行明文查询,返回外部索引引擎的内存结构中的与查询信息对应的当前行号。同时,第一处理设备在数据库的索引同步中间表中搜索待更新行号。第一处理设备和第二处理设备分别反馈待更新行号和当前行号至数据库扩展索引接口,数据库扩展索引接口经过合并后确定目标行号,并连接用户SQL。接着使用目标行号在数据库的数据表中查询,返回当前行号对应的内容信息给用户,完成整个查询过程。
本发明还提供了一种独立于加密数据库的密文索引系统,应用于加密数据库。如图10所示,索引系统包括第一处理设备100和第二处理设备200,第一处理设备中存储并运行数据库,第二处理设备运行索引内存结构。第一处理设备100包括第一通讯单元110、第一处理单元120。其中,第二处理设备200包括第二处理单元210和第二存储单元220。
本发明中的索引系统用于实现上述独立于加密数据库的密文索引方法。
上面描述的内容可以单独地或者以各种方式组合起来实施,而这些变型方式都在本发明的保护范围之内。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现,相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的物品或者设备中还存在另外的相同要素。
以上实施例仅用以说明本发明的技术方案而非限制,仅仅参照较佳实施例对本发明进行了详细说明。本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,均应涵盖在本发明的权利要求范围当中。

Claims (6)

1.一种独立于加密数据库的密文索引方法,其特征在于,所述加密数据库包括存储并运行于第一处理设备中的数据库,以及存储并运行于第二处理设备中的外部索引引擎,通过以下方法创建索引:
使用数据库的socket通讯方式,直接传送所述数据库的基本表中的索引密文列数据至外部索引引擎的内存结构;
在将所述索引密文列数据插入至所述外部索引引擎的内存结构前,采用预设解密算法对所述索引密文列数据进行解密,获得明文数据;
把所述明文数据插入到所述外部索引引擎的内存结构中;
在所述明文数据插入至所述外部索引引擎的内存结构后,对所述明文数据进行加密,并存储至磁盘进行持久化保存;
基于用户的数据更新请求,使用所述数据库的触发器机制将更新密文数据实时同步至索引同步中间表中;
使用异步定时同步方式,通过数据库的socket通讯机制,将所述更新密文数据由所述索引同步中间表传输至所述外部索引引擎的内存结构中;
在所述更新密文数据插入所述外部索引引擎的内存结构前,采用所述预设解密算法对所述更新密文数据进行解密,获得更新明文数据;
插入所述更新明文数据至所述外部索引引擎的内存结构中;
其中,通过以下方法更新索引包括:
插入过程中,需要先在平衡二叉树数据结构中进行插入位置查找,如果查找路径中的节点数据在内存结构中,直接进行比较;如果查找路径中的节点数据不在内存中而在磁盘文件里,则先从磁盘文件读入再完成比较;在进行数据删除时,先在平衡二叉树数据结构中找到删除节点,直接进行节点删除;
在所述更新明文数据插入至所述外部索引引擎的内存结构后,对所述更新明文数据进行加密,并存储至磁盘进行持久化保存。
2.如权利要求1所述的方法,其特征在于,通过以下方法查询索引:
接收用户按照密文索引列进行查询的数据查询请求;
通过数据库的socket通讯方式传输所述数据查询请求至所述外部索引引擎进行数据搜索查询;搜索时从平衡二叉树的根节点开始搜索,搜索过程中把查询条件跟搜索路径中的平衡二叉树节点数据进行比较,如果节点数据在所述外部索引引擎的内存结构中,直接完成比较;如果节点数据在磁盘上,从磁盘文件读入相应数据再进行比较;查询到满足所述数据查询请求的行号后,返回所述行号至所述数据库。
3.如权利要求2所述的方法,其特征在于,所述查询索引还包括:
将所述行号与所述索引同步中间表中存储的未更新至所述外部索引引擎中的数据合并;
确定合并完成后的目标行号;
通过数据库的扩展索引接口返回所述目标行号至所述数据库;
所述数据库根据所述目标行号和所述按照密文索引列进行查询得到的行号合并后,将满足查询条件的行列数据返回给用户。
4.一种独立于加密数据库的密文索引系统,其特征在于,所述系统包括第一处理设备和第二处理设备,所述第一处理设备中存储并运行数据库,所述第二处理设备运行外部索引引擎,所述第一处理设备包括:
第一通讯单元,用于使用数据库的socket通讯方式,直接传送所述数据库的基本表中的索引密文列数据至外部索引引擎的内存结构;
第一处理单元,用于在将所述索引密文列数据插入至所述外部索引引擎的内存结构前,采用预设解密算法对所述索引密文列数据进行解密,获得明文数据;
所述第二处理设备包括第二存储单元,所述第二存储单元用于:
把所述明文数据插入到所述外部索引引擎的内存结构中;
在所述明文数据插入至所述外部索引引擎的内存结构后,对所述明文数据进行加密,并存储至磁盘进行持久化保存;
所述第一处理单元还用于:
基于用户的数据更新请求,使用所述数据库的触发器机制将更新密文数据实时同步至索引同步中间表中;
使用异步定时同步方式,通过数据库的socket通讯机制,将所述更新密文数据由所述索引同步中间表传输至所述外部索引引擎的内存结构中;
在所述更新密文数据插入所述外部索引引擎的内存结构前,采用所述预设解密算法对所述更新密文数据进行解密,获得更新明文数据;
所述第二存储单元还用于:
插入所述更新明文数据至所述外部索引引擎的内存结构中;
所述第二存储单元还用于:
插入过程中,需要先在平衡二叉树数据结构中进行插入位置查找,如果查找路径中的节点数据在内存结构中,直接进行比较;如果查找路径中的节点数据不在内存中而在磁盘文件里,则先从磁盘文件读入再完成比较;在进行数据删除时,先在平衡二叉树数据结构中找到删除节点,直接进行节点删除;
在所述更新明文数据插入至所述外部索引引擎的内存结构后,对所述更新明文数据进行加密,并存储至磁盘进行持久化保存。
5.根据权利要求4所述的系统,其特征在于,
所述第一通讯单元还用于:
接收用户按照密文索引列进行查询的数据查询请求;
通过数据库的socket通讯方式传输所述数据查询请求至所述外部索引引擎进行数据搜索查询;搜索时从平衡二叉树的根节点开始搜索,搜索过程中把查询条件跟搜索路径中的平衡二叉树节点数据进行比较,如果节点数据在所述外部索引引擎的内存结构中,直接完成比较;如果节点数据在磁盘上,从磁盘文件读入相应数据再进行比较;
所述处理设备还包括第二处理单元,所述第二处理单元用于:
查询到满足所述数据查询请求的行号后,返回所述行号至所述数据库。
6.根据权利要求5所述的系统,其特征在于,所述第一处理单元具体用于:
将所述行号与所述索引同步中间表中存储的未更新至所述外部索引引擎中的数据合并;
确定合并完成后的目标行号;
通过数据库的扩展索引接口返回所述目标行号至所述数据库;
所述数据库根据所述目标行号和所述按照密文索引列进行查询得到的行号合并后,将满足查询条件的行列数据返回给用户。
CN202011022190.9A 2020-09-25 2020-09-25 独立于加密数据库的密文索引方法及系统 Active CN112148739B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011022190.9A CN112148739B (zh) 2020-09-25 2020-09-25 独立于加密数据库的密文索引方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011022190.9A CN112148739B (zh) 2020-09-25 2020-09-25 独立于加密数据库的密文索引方法及系统

Publications (2)

Publication Number Publication Date
CN112148739A CN112148739A (zh) 2020-12-29
CN112148739B true CN112148739B (zh) 2023-12-29

Family

ID=73897089

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011022190.9A Active CN112148739B (zh) 2020-09-25 2020-09-25 独立于加密数据库的密文索引方法及系统

Country Status (1)

Country Link
CN (1) CN112148739B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113568927B (zh) * 2021-06-24 2024-03-29 华控清交信息科技(北京)有限公司 数据处理系统、方法、数据库引擎及用于数据处理的装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110238716A1 (en) * 2010-03-25 2011-09-29 International Business Machiness Corporation File index, metadata storage, and file system management for magnetic tape
CN103595730A (zh) * 2013-11-28 2014-02-19 中国科学院信息工程研究所 一种密文云存储方法和系统
CN106934030A (zh) * 2016-12-08 2017-07-07 戴林 一种面向数据库加密的密文索引方法和库内加密系统
CN107370725A (zh) * 2017-06-21 2017-11-21 西安电子科技大学 一种云环境下通用加密数据库的存取方法及系统
CN110084054A (zh) * 2019-05-08 2019-08-02 深圳豪杰创新电子有限公司 一种数据保密装置、方法、电子设备及存储介质
CN111492353A (zh) * 2018-08-15 2020-08-04 华为技术有限公司 一种安全的数据转移装置、系统和方法
US10740312B1 (en) * 2016-12-21 2020-08-11 Amazon Technologies, Inc. Asynchronous indexing of database tables

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110238716A1 (en) * 2010-03-25 2011-09-29 International Business Machiness Corporation File index, metadata storage, and file system management for magnetic tape
CN103595730A (zh) * 2013-11-28 2014-02-19 中国科学院信息工程研究所 一种密文云存储方法和系统
CN106934030A (zh) * 2016-12-08 2017-07-07 戴林 一种面向数据库加密的密文索引方法和库内加密系统
US10740312B1 (en) * 2016-12-21 2020-08-11 Amazon Technologies, Inc. Asynchronous indexing of database tables
CN107370725A (zh) * 2017-06-21 2017-11-21 西安电子科技大学 一种云环境下通用加密数据库的存取方法及系统
CN111492353A (zh) * 2018-08-15 2020-08-04 华为技术有限公司 一种安全的数据转移装置、系统和方法
CN110084054A (zh) * 2019-05-08 2019-08-02 深圳豪杰创新电子有限公司 一种数据保密装置、方法、电子设备及存储介质

Also Published As

Publication number Publication date
CN112148739A (zh) 2020-12-29

Similar Documents

Publication Publication Date Title
KR102407510B1 (ko) 데이터 저장 및 조회 방법, 장치, 기기 및 매체
CN107784044B (zh) 表数据查询方法及装置
CN107368527B (zh) 基于数据流的多属性索引方法
US7801883B2 (en) Method and apparatus for improving data processing speed through storage of record information of identity module
US20220035786A1 (en) Distributed database management system with dynamically split b-tree indexes
CN106407360B (zh) 一种数据的处理方法及装置
CN107357843B (zh) 基于数据流结构的海量网络数据查找方法
CN105447166A (zh) 一种基于关键字查找信息的方法及系统
CN109597829B (zh) 一种实现可搜索加密关系型数据库缓存的中间件方法
CN108874950B (zh) 一种基于er关系的数据分布存储方法及装置
CN110019644B (zh) 对话实现中的搜索方法、装置和计算机可读存储介质
JP2020123320A (ja) インデックスを管理するための方法、装置、設備及び記憶媒体
CN112148739B (zh) 独立于加密数据库的密文索引方法及系统
CN111046106A (zh) 缓存数据同步方法、装置、设备及介质
CN106603610A (zh) 一种数据获取方法及装置
CN111949725A (zh) 数据的查询方法、装置、电子设备及计算机可读存储介质
CN112699187A (zh) 关联数据处理方法、装置、设备、介质及产品
CN116028514A (zh) 数据更新方法及装置
CN113127717A (zh) 一种密钥检索方法和系统
CN115543993A (zh) 数据处理方法、装置、电子设备及存储介质
CN112527900A (zh) 一种数据库读多副本一致性的方法、装置、设备及介质
CN116955416B (zh) 数据处理方法、系统、设备及存储介质
CN111858609A (zh) 区块链模糊查询方法及装置
KR100519453B1 (ko) 객체지향 응용프로그램에서 사용되는 데이터베이스 작업제어장치 및 방법
CN101872356B (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
GR01 Patent grant
GR01 Patent grant