时态仅日志对象数据库系统中的对象与日志管理
1. 引言
如今,数据库系统的许多新兴应用领域对系统特性和性能提出了挑战,现有系统难以满足需求。这些应用领域普遍需要管理复杂对象、支持时态对象以及查询对象变化(例如特定时间 T 之后的更新)。像 XML/Web 数据库、地理信息系统和医疗领域的图像存档与通信系统(PACS)等,都是这类应用的典型代表。
仅日志对象数据库系统为满足这些需求提供了一个有趣的解决方案。该系统以连续、非覆盖的方式将日志以大块形式写入磁盘,一次写入操作可包含多个事务的多个对象和索引项。这种方式虽然可能牺牲一定的读取性能,但能显著提升写入性能。与之对比,当前大多数对象数据库系统(ODBs)采用原地更新数据的方式,为支持恢复和提高性能,会使用预写日志,但这往往导致大量小对象的写入,形成写入瓶颈,而仅日志方法可避免这一问题。
仅日志方法具有诸多吸引人的特性,如快速恢复,以及相比传统系统能更好地利用 RAID 技术。此外,使用仅日志方法时,保留对象的先前版本几乎无需额外成本,这对于事务时间对象数据库系统(TODB)尤为重要。在 TODB 中,对象更新不会使先前版本不可访问,每个对象版本都关联着系统维护的时间戳(创建该版本的事务的提交时间)。而在传统的原地更新系统中,保留对象的旧版本通常需要在更新前将先前版本复制到新位置,这会使写入成本翻倍。
以往的仅日志对象数据库系统基于页面服务器,但这种方式并非理想之选。按页面粒度操作会带来传统页面服务器的诸多弊端,例如聚类效果不佳时,即使只有页面的一小部分被更新,也需写回整个页面,同时主内存缓冲区的利用率也会降低。而且,基于页面的仅日志 ODB 会使事务管理变得困难,为避免页面级锁定,要么需要单独的日志,要么采用临
超级会员免费看
订阅专栏 解锁全文
2244

被折叠的 条评论
为什么被折叠?



