嵌入式数据库中的变更数据捕获

网友投稿 624 2023-04-13

嵌入式数据库中的变更数据捕获

嵌入式数据库中的变更数据捕获

在嵌入式数据库中实现CDC的第一个(也可能是最明显的)是实现事务的ACID属性的一部分:原子性,一致性,隔离性和持久性。将事务成功应用于数据库会将该数据库从一个一致状态移动到一个新的一致状态。相反,不成功将事务应用于数据库必须将数据库返回到在成功应用事务之前存在的一致状态。为了满足这些要求,数据库管理系统必须跟踪更改。实现细节因数据库系统而异,甚至在数据库系统系列中,从纯内存中数据库、持久内存中数据库以及部分或完全持久数据库(混合数据库)也有所不同。

对于纯内存数据库,没有记录更改的事务日志。因此,在事务处于活动状态时,更改或更改记录的前映像都需要保存在缓冲区中,以便在事务中止时可以将数据库还原到其事务前状态。

对于具有持久性的内存中数据库,所有更改也会追加到存储在持久性媒体上的事务日志中,该事务日志可在崩溃后重播以进行恢复。

对于持久性(基于磁盘的)数据库,还利用事务日志记录来优化性能和支持从崩溃中恢复。在这种情况下,可以提供两种形式的事务日志记录:撤消日志记录和预写日志记录 (WAL)。WAL 如上一段所述。撤消日志记录将已更改记录的前映像写入事务日志文件。在发生崩溃时,UNDO 日志信息用于回滚不完整的事务(即将数据库返回到上一个一致状态)。

CDC在某些数据库系统中的另一个内部用途是通过MVCC(多版本并发控制)实现乐观并发控制。乐观并发控制意味着应用程序不必获取锁,这也意味着应用程序永远不必等待另一个应用程序持有的锁。这要求数据库系统知道两个应用程序是否同时尝试修改同一个数据库对象。这是通过跟踪提交事务时检查的版本号来完成的(因此称为多版本并发控制)。如果对象的版本在应用程序获取对象副本和应用程序想要提交对该对象的更改之间发生了更改,则意味着另一个应用程序首先修改了基础对象,必须中止并重试此事务。MVCC 背后的理论是,这种冲突很少见,并且偶尔重试比总是必须获取锁并可能使用这些锁阻止其他应用程序更有效。

CDC 可在嵌入式数据库和/或第三方系统中用于可在应用程序中使用的其他目的:开放复制、触发器/事件通知和增量备份。

一些嵌入式数据库系统实现复制,例如,支持高可用性和/或数据库集群。此类系统使得在同一数据库系统的两个或多个实例之间复制数据或事务变得容易,但是当需要从嵌入式数据库复制到任何其他目标时,它们不是解决方案。有第三方产品试图填补这一空白,例如Actian DataConnect和*** Golden Gate。或者通过自定义提取-转换-加载 (ETL) 解决方案,该解决方案可能对源和/或目标数据库中的更改敏感。

嵌入式数据库系统中变更数据捕获的最后一个重要目的是实现增量备份设施。增量备份方案必须知道在上次完整快照或上次增量备份之间数据库中发生的增量更改。

结论

变更数据捕获是任何数据库管理系统的核心。它有助于实现并发性和持久性、复制、触发器/事件通知以及备份和还原的 ACID 属性。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:弹性扩容是什么意思?弹性扩容需要用到哪些技术?
下一篇:水平扩缩容步骤详解,水平扩缩容怎么操作
相关文章