Ganymed:用于事务性 Web 应用的可扩展复制方案
1 引言
在当今数字化时代,数据网格、大规模动态内容生成的 Web 应用以及数据库服务提供,给数据库引擎带来了显著的可扩展性挑战。复制是解决这些问题的常见方法,但它涉及到艰难的权衡,尤其是在可扩展性和一致性之间的抉择。商业系统往往会放弃一致性,而研究解决方案通常要么提供折衷方案(以有限的可扩展性换取一致性),要么对数据模式和工作负载施加限制。
Ganymed 是一种基于中间件的系统,旨在解决这些问题。它能够在不牺牲一致性的前提下提供可扩展性,并且无需对数据进行分区或声明/提取事务访问模式。Ganymed 的主要组件是一个轻量级调度器,它使用 RSI - PC 这一新颖的调度算法,将事务路由到一组基于快照隔离的副本。
2 动机
数据库复制是在不同位置(称为副本)维护数据项多个副本的过程。其动机主要有两个方面:一是提高可用性,因为数据库系统能够更好地容忍故障;二是通过将事务负载分布到各个副本,提高系统的吞吐量并降低响应时间。
传统上,复制系统分为两种类型:积极(同步)和懒惰。积极系统在事务边界内保持副本同步,符合 1 - 副本可串行化,但传统的积极协议在性能和可扩展性方面存在显著缺点,如通信开销高、死锁概率大等,难以扩展到多个副本。为了克服这些问题,数据库设计者开始创建懒惰系统,其中副本可以在事务边界外更新。然而,懒惰复制会导致新问题,如事务读取陈旧数据、更新事务之间的冲突可能很晚才被检测到等。
Ganymed 试图结合积极和懒惰策略的优点。它使用一组完全复制的数据库,内部以懒惰方式工作,但在中间件层提供积极服务。此外,Ganymed 还能透明地处理配置更改、副本
超级会员免费看
订阅专栏 解锁全文
6303

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



