介绍
在数据库中存储一个关系r,有以下几种方法:
(1) 本地存储:数据在本地数据库系统中存储。
(2) 复制:系统维护某个关系r的几个完全相同的副本(拷贝) ,各个副本存储在不同的节点上。与复制相对的方式是只存储关系r的一个拷贝。
(3) 分片:关系被划分为几个片段(垂直分片、水平分片或混合分片) ,各个片段存储在不同的节点上。
(4) 复制和分片:关系被划分为几个片段,系统为每个片段维护几个副本。
数据复制实际上就是指在数据库系统的多个数据库间拷贝和维护数据库对象的过程。这个对象可以是整个表、部分列或行、索引、视图、过程或者他们的组合等。广义上,凡是通过数据库系统生成数据库对象副本的过程都可以称为复制。实现数据复制的几种常见方法主要有拷贝法(使用SQL语句中COPY命令) 、触发器方法、狭义意义上的复制技术方法。狭义的数据复制,是指由数据库系统提供的数据复制组件(数据复制模块)实现,由数据库系统管理的数据复制。
分类按复制的内容、方法分类1、表复制
是把某一时刻源数据表的内容通过网络复制到副本,因为复制的内容是某一时刻的表的状态,所以又形象地成为表快照。表复制传输的是数据,是将整个出版物复制给订购者。它的内容也可以是部分的行/列或者视图等。表复制,往往需要复制较多的数据。因而对网络资源需求相对较高,不仅要求有较高的传输速度,而且要保证网络传输的可靠性。
2、事务复制
是把修改源数据库的事务发送到副本。复制的可以是修改的表项、事务或事务日志。副本接收到复制内容后,通过在本地数据库执行接收到的事务操作来实现与源数据或者过程的一致。
事务复制在网络中传送的是事务,即将发生的变化传送给订购者,是一种增量复制。在事务复制中,由于要不断监视源数据库的数据变化,因而主服务器的负担较重。当出版数据发生变化时,这种变化很快会传递给订购者,而不像表复制那样等待一个相对较长的时间间隔。某些数据库系统中的过程化复制,实质上是一种程序化了的事务复制。
从参与复制的节点间的关系分类1、主从复制
复制中只允许从源数据库(即主数据库)向其他数据库(从数据库)复制对象,复制对象存放在从数据库站点中。主从复制是最基本的一种结构。在这种结构中,定义一个主节点,其源数据称为主节点数据(或主拷贝) ;定义1到n个复制节点,其从主节点复制过来的数据称为复制点数据(或副拷贝) 。数据更新操作只能在主拷贝上进行,然后复制给其它副拷贝。
2、对等复制
所有副本在任何节点都可以被修改,并且修改可以发送给其他副本,即所有站点的地位、作用是等同的,没有主从关系。
3、级联式复制
是主从结构的一个扩展,它也是由一个主拷贝和若干个副拷贝组成。不同于主从结构的是它允许每个从属副拷贝(从属站点)具有复制的能力,即一个从属副拷贝可以把接收到的复制数据再传给下一个从属副拷贝。例如,在Oracle中一个快照站点也可以作为主站点。
按照复制的复杂性分类当复制中主要是单向的更新或者说在只有主站点可以对数据进行更新时,我们常称之为基本复制。当复制中包含了双向或多向的更新,此时有可能产生多个站点同时更新某一数据的情况(如可更新的快照复制、对等复制及对等复制和基本复制混合的复制实现等) ,在实际数据库系统中往往称为高级复制。在高级复制中,往往会产生复制冲突,应用和实现相对复杂。其他的一些分类方法,可参见各数据库系统从不同角度对复制技术的分类。
发展趋势数据库技术正在以前所未有的速度发展和应用,同时也在推动数据库复制技术尤其是高级复制技术的进一步发展。在高级复制中,如何根据实际情况组合配置各种复制方案、尽量避免冲突、组合配置复制冲突解决方案是分布式数据库数据复制技术的难点。一方面这需要实际的环境的支撑;另一方面需要各种复制方案和冲突解决方案技术的发展;另外这些方案的组合搭配也包含了许多技术和技巧,而这些组合也需要不断在实践中检验。这都是今后复制数据库技术研究的重点。我们相信,随着技术的进步,特别是随着多主体高级数据复制技术的完善,数据库复制技术必将带给我们更多的安全和便利,为数据存储、传输提供更加方便、快捷的方法,为分布式数据库的应用提供更强大的功能。1