金仓数据库KingbaseES客体重用
关键字:
KingbaseES、客体重用、人大金仓
什么是客体重用
根据百度百科,客体重用(object reuse)指在对客体初始指定、分配或再分配一个主体之前,撤销对该客体的全部授权信息,当前主体获得对一个已被释放客体的访问权时,当前主体不能获得原主体活动所产生的任何信息。
KingbaseES通过在资源申请和释放的位置清除介质上残留的信息,以达到客体重用的要求。
KingbaseES的客体重用
- 加载插件
修改kingbase.conf文件中shared_preload_libraries 参数后重启数据库。
shared_preload_libraries = 'sysreuse_residual_data'
- 配置参数
ALTER SYSTEM SET sysreuse_residual_data.enable_obj_reuse = on;
SELECT sys_reload_conf();
- 卸载插件
- 修改kingbase.conf文件中shared_preload_libraries 参数后重启数据库。
shared_preload_libraries = ''
- 残留信息清理方法
共享缓冲区和磁盘文件均采用全0覆盖的方式清理残留数据。
实现方式
插件reuse_residual_data通过在事务提交阶段插入hook实现插入对缓存和磁盘进行清空的操作。
例如,在函数StmgrDoUnlinkAll()中,会对本轮事务中被删除的数据库对象进行缓存资源的释放和磁盘文件的删除,在DropRelFileNodesAllBuf()中调用InvalidateBuffer(),在InvalidateBuffer中插入hook:InvalidateBufferHook可以拿到缓存块并进行清理。回到函数StmgrDoUnlinkAll()中,在缓存得到释放后,会开始逐个删除磁盘文件(unlink),插入hook:stmgr_dounlinkall_hook在文件删除前将其中的全部内容使用0覆盖一遍。
参考资料
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




