摘要:
本文提出了一个数据库动态恢复系统,该系统能够在提供数据库持续访问能力的同时自动检测和恢复恶意事务造成的数据损坏。本文的创新点可以归结为以下几个方面:
1) 提出了扩展读的概念,并指出扩展读可能造成数据受损范围扩散。为了评估由扩展读操作引起的受损数据扩散,我们提出了细粒度事务日志记录事务执行过程中读写的数据项。 细粒度事务日志由若干记录组成,每条记录存储了在哪个时刻,特定事务访问了哪些数据项,数据操作如何等信息。细粒度事务日志是进行数据受损范围评估和数据恢复的基础;
2) 构造了受损范围评估管理器, 根据细粒度事务日志分析事务之间的读写依赖关系,找出所有依赖于恶意操作的事务(受损事务)。恶意事务以及受损事务所修改的数据项即为受损数据。我们构造回滚事务以恢复受损数据;
3)针对盲写这一特殊类型的事务,我们指出在数据恢复过程中,盲写事务可能丢失修改。我们提出了盲写事务丢失修改的条件并构造补偿事务以避免丢失修改造成的数据丢失;
4)我们分析了动态恢复中前向恢复和传统的后向恢复的不同,提出了在动态恢复中针对回滚事务和补偿事务的调度准则和算法。我们提出了去除与合并算法用于消除回滚事务和补偿事务构造过程中可能出现的冗余操作;
5)我们构造了受损数据访问控制管理器,以限制在数据修复过程中由于新的用户事务的不间断访问造成的数据受损范围的进一步扩散。实验证明,受损数据访问控制管理器在数据库繁忙的时段能够大大缩短受损数据修复时间,提高恢复效率。
数据库动态恢复系统包含三个主要组件:受损范围评估管理器,事务调度处理器以及受损数据访问控制管理器。受损范围评估管理器根据由细粒度事务日志得到的事务读写依赖关系分析由恶意事务导致的受损数据扩散,并构造回滚事务修复受损数据。针对盲写事务,构造补偿事务以保留盲写事务的执行结果。事务调度器根据调度正确性准则对回滚事务以及补偿事务进行事务调度。去除与合并算法用于消除在事务调度过程中可能出现的冗余操作。受损数据访问控制管理器用于隔离受损数据在恢复过程中的用户请求,以避免数据受损范围的进一步扩散,确保数据恢复的正确性和高效性。我们使用Java语言开发系统平台,数据恢复系统作为中间件连接用户请求和后台数据库。细粒度访问日志以表的形式存储于SQL Server 2000 数据库系统中,数据库恢复系统分析事务读写依赖关系并构建回滚事务和补偿事务发送至后台数据库。数据恢复系统作为中间件独立部署和运行。
我们进行了一系列实验,在功能和性能上对数据恢复系统进行了测试。尤其是TPC-W平台测试,证明了数据恢复系统的可用性和高效性。在普通模式下,系统造成的性能损耗控制在6.94% to 30.30%。对于实用系统的安全性要求,这个性能损耗是可以接受的。我们会进行进一步的工作,包括一下两个方面:1)分析是否存在除读写依赖关系以外的事务依赖关系可能造成数据受损范围扩散,并改进现有的受损数据评估算法以满足由于新的事务依赖关系所导致的不同; 2)提出一套衡量受损范围评估与恢复的量化指标,用于衡量由于引进数据恢复安全机制造成的系统性能损耗。
数据库动态恢复系统具有较高的实用价值。细粒度访问日志系统提供安全审计机制;动态恢复系统提供动态恢复功能以保证数据库系统在被攻击情况下的可用性及可生存性。 从市场角度来讲,该系统可以作为独立部署和运行的软件发布,可以用于电子商务,军事项目,重要政府部门的安全防火墙,也可用于数据库系统的独立安全服务,有较高的实用价值和应用前景。