SymmetricDS文档翻译--【Chapter1.简介(Introduction)】(一)

2015-02-03 11:41:04 · 作者: · 浏览: 63

本用户指南将简要介绍SymmetricDS配置中基础的和高级的概念。读完本指南,你将对SymmetricDS的能力和其中的概念有一个更好的理解。

1.1. System Requirements

SymmetricDS使用Java编写,需要JRE或者JDK 6.0及以上版本。

任何一个拥有Trigger技术和JDBC驱动的数据库都可能能够使用SymmetricDS。数据库通过Database Dialect被抽象,以支持不同的数据库特性。下面的数据库方言已经被包含进此发行版中(version 3.6.14):

1. MySQL 5.0.2及以上版本

2. MariaDB及以上版本

3. Oracle 10g及以上版本

4. PostgreSQL 8.2.5及以上版本

5. Sql Server 2005及以上版本

6. Sql Server Azure

7. HSQLDB 2.x

8. H2 1.x

9. Apache Derby 10.3.2.1及以上版本

10. IBM DB2 9.5及以上版本

11. Firebird 2.0及以上版本

12. Interbase 2009及以上版本

13. Greenplum 8.2.15及以上版本

14. SQLite 3及以上版本

15. Sybase Adaptive ServerEnterprise 12.5及以上版本

16. Sybase SQL Anywhere 9及以上版本

附录C Database Notes,可以查看你选用的数据库的兼容性问题和其他细节。

1.2. Concepts

1.2.1 Notes

SymmetricDS是一个基于Java的应用,提供了一个同步引擎,这个引擎在数据同步中作为一个agent(代理,代理后边说的那个数据库实例),提供一个数据库实例和网络中其他同步引擎之间的数据同步。

一个SymmetricDS引擎叫做一个Node。SymmetricDS被设计为可以扩展到成千上万个节点。属性配置文件中提供的数据库连接字符串,数据库用户名和数据库密码配置数据库连接信息。SymmetricDS可以同步数据库连接可以访问的任意的数据库表,只要数据库用户被分配了合适的数据库权限。

?R???
'钡赙jX???D谱??u,??????\⒑h?^???钎∑ァ麾q绫店?X?????{^??????
-寸?{^??荽?5?А注w?K)?阝p4?i??
$?g?'I,???????骗$,?i??'I觑z?1g???o?K)?阝p4?床??'K?嬉???
/?}v?Z???j??徂???'I,??????)?阝p4?i??
 ??甸?圆??'K?K)?阝p4??董??晦???j亘??觌?kz?董??晦?K?-?下载所需的配置。在一个节点被注册之后,SymmetricDS也可以在开始同步之前提供一个数据初始负载操作。

SymmetricDS将在启动时安装或者更新它的数据库触发器;当预定的同步触发器任务运行的时候,SymmetricDS会定期地再次安装新的触发器和更新原有的触发器(默认情况下,是在每天午夜)。当决定一个触发器是否需要被重新建立的时候,同步触发器任务会检测数据库结构或者触发器配置的变化。可选择地,同步触发器任务可以被关闭,DBA可以自己生成和运行数据库触发器DDL脚本。

在变化的数据被数据库触发器插入到SymmetricDS的DATA系统表之后,这些数据被Router Job分批然后分配到某个SymmetricDS节点。路由数据指的是在SymmetricDS网络中选择一个数据应该发送的节点。默认情况下,一个节点的数据根据节点组标识被路由。可选地,数据和目标节点的特性也可以在路由过程中使用。一个数据的batch是一组数据的变化。这一组数据一起被传送和加载到目标节点,作为一个数据库事务提交。Batch信息记录在SymmetricDS的OUTGOING_BATCH系统表中。Batch是节点特定的,每个节点只有自己处理过的Batch的记录。DATA和OUTGOING_BATCH通过DATA_EVENT联系。Batch的发送状态记录在OUTGOING_BATCH中。在数据被发送到远程节点之后,batch的状态被改为“OK”。

1.2.3. Change Data Delivery

数据通过HTTP或者HTTPS发送到远程节点。数据可以通过这两种方式中的一种发送,发送的方式依赖于配置的节点的组之间的传输链路的类型。一个节点组可以被配置成推送变化到某个节点组中的其他节点,也可以配置成从某个节点组中的其他节点拉取数据。推送数据的操作是通过在数据源节点初始化一个Push Job实现。如果有多个等待被发送的Batch,推送节点将通过使用同一个HTTP HEAD请求来保持同一个到各个目标节点的连接。如果预留的请求被接受,数据源节点将从batch中提取所有的数据。数据以CSV格式被提取高内存缓冲区中,直到缓冲区大小达到配置的阀值,数据通过HTTP PUT被发送到目标节点。下一个Batch接着被提取和发送。这将一直重复直到给每一个channel发送的batch达到最大值,或者没有batch可以发送为止。因为所有的batch通过一个HTTP PUT请求发送,目标节点也将返回一个batch的状态的列表。

拉取请求在目标节点通过Pull Job初始化。一个拉取请求使用HTTP GET提交方式。在Push过程中执行的提取过程也会在Pull过程中执行。

在数据被提取,发送之后,数据加载到目标节点。与提取过程相似,随着数据不断被接收,数据加载器将以CSV格式缓存数据到内存缓冲区中,直到达到阀值。如果达到阀值,数据被刷写到一个文件中然后继续接收数据。一个batch中所有的数据都是本地可用的,一个数据库连接从连接池中取出,然后在源数据库中发生的事情会在目标数据库再次重演。

1.2.4. Data Channels

数据总是以在特定channel中记录的顺序被发送到远程节点。一个channel是用户定义的一组互相依赖的表。捕获的属于一个组的表的数据总是一起被同步。每一个触发器必须被分配一个channel id作为trigger定义的一部分。Channel id记录在SymmetricDS的SYM_DATA和SYM_OUTGOING_BATCH系统表中。如果一个batch加载失败,将不会再有数据发送到这个channel直到这个失败被处理。但是,其他channel上的数据将不受影响,继续同步。

如果远程节点离线,数据仍然在源数据库端被记录,直到远程节点重新上线。可选地,可以设置一个超时时间,超过此时间,下线的节点将从网络中删除。SymmetricDS捕获的数据所在的表的数据将在被发送后或者配置的保留时间到期后从SymmetricDS存放捕获的数据的系统表中被删除。将要发送到一个关闭的节点的没有被发送的数据变化也将被清除。

SymmetricDS在数据完整性错误的时候的默认的处理方式是尝试修复这些数据。如果一个插入statement执行,但是表中已经存在这样的一行数据,SymmetricDS将会回退插入操作然后尝试更新已经存在的行。同样地,如果一个在源数据库节点上成功执行的更新操作在目标节点上执行的时候,没有找到要更新的行,SymmetricDS将会回退更新操作,然后将这行数据插入到数据库中。如果在目标节点执行删除操作,但是没有找到要删除的行,这种情况将会被简单的记录。这些处理方式可以通过调整配置来进行冲突监测和处理。

SymmetricDS使用标准的web技术设计,所以它可以被扩展成不同数据库类型的多个客户端。它可以同步数据到与部署的数据库和网络基础设施支持的客户端一样多的客户端节点;也可以从这么多数量的客户端拉取数据以同步数据。当一个两层的数据库和网络基础设施不够用的时候,一个SymmetricDS网络