SymmetricDS文档翻译--【Chapter 3. 详细配置(Configuration)[section A]】

来源:互联网 发布:光环大数据贴吧 编辑:程序博客网 时间:2024/06/15 20:37

Chapter 3. Configuration

3.1. Groups

Groups 定义在NODE_GROUP表中。下面的SQL语句将分别为分销商店例子中的“corp”和“store”创建一个节点组。

insertinto SYM_NODE_GROUP                (node_group_id, description)          values ('store', 'A retail storenode');                             insert into SYM_NODE_GROUP          (node_group_id, description)          values ('corp', 'A corporate node');

insertinto SYM_NODE_GROUP                (node_group_id, description)          values ('store', 'A retail storenode');                             insert into SYM_NODE_GROUP          (node_group_id, description)          values ('corp', 'A corporate node');

3.2. Group Links

Group links定义在 NODE_GROUP_LINK表中。Links定义了一个组中节点如何联系其他组中的节点。下面是通信的机制。

Push(P)
表明数据源节点将通过HTTP PUT请求初始化通信。

Wait for Pull(W)
表明数据源节点将等待目标节点通过HTTP GET请求联系数据源节点拉取数据。

Route-Only(R)
Route-Only表明数据传送将不会通过SymmetricDS。这个类型在使用XML发布Router或者一个审计表改变Router的时候可能会非常有用。
如果配置数据在link上被同步,Link也可以定义。例如,你可能不想让远程节点能够改变配置,印象网络中的其他节点。在这种情况下,你可以在对应的Link上设置sync_config_enabled的值为0。

一个Link可以使用同一个节点组同时作为源和目标。这样的配置将允许一个节点组与该节点组中的其他节点数据同步。
下面的SQL语句将“corp”和“store”节点组连接。“store”节点将推送它们的数据变化到“corp”节点,“corp”节点将等待“store”节点拉取该节点上的数据变化。

insert into SYM_NODE_GROUP_LINK                 (source_node_group, target_node_group, data_event_action)           values ('store', 'corp', 'P');                   insert into SYM_NODE_GROUP_LINK                 (source_node_group, target_node_group, data_event_action)           values ('corp', 'store', 'W');

3.3. Channels

通过将数据分类到不同的Channel和不同的TRIGGER管理,用户可以获得更多数据流的控制和更多的可见性。此外,SymmetricDS也允许同步操作会被开启,挂起或者被channel重新调度。同步的频率和数据被同步的顺序也是在channel层被控制的。

下面的SQL语句为一个分销商店创建了的几个channel。一个“Item”channel处理商品和商品价格的信息的数据,“sale_transaction” Channel处理交易信息的数据。

insert into SYM_CHANNEL (channel_id, rocessing_order, max_batch_size, max_batch_to_send,                 extract_period_millis, batch_algorithm, enabled, description)           values ('item', 10, 1000, 10, 0, 'default', 1, 'Item and pricing data');                 insert into SYM_CHANNEL (channel_id, processing_order, max_batch_size,                 max_batch_to_send, extract_period_millis, batch_algorithm, enabled, description)           values ('sale_transaction', 1, 1000, 10, 60000,                 'transactional', 1, 'retail sale transactions from register');

Batch过程是Channel给将要被传输的数据分组,然后一起提交到客户端(其他的节点)。有三种不同的开箱即食(哈哈)的batch算法,可以在定义channel时通过指定batch_algorithm列的值指定想用的batch算法。

Default
在一个事务中所有的数据变化确保被batch到一起。多个事务将会被batch到一起,然后一起提交,直到没有更多的要发送的数据或者batch的大小达到设定的max_batch_size值。

Transactional
Batch将直接映射到数据库事务。如果有多个小的数据库事务,将会有很多的batch。此算法中,设定的max_batch_size的值不起任何作用。

Nontraditional
多个事务将会被batch到一起,然后一起提交,直到没有更多要发送的数据或者batch的大小达到max_batch_size设定的值。Batch将会在max_batch_size大小处被截断,不管是不是在事务的中间。

 

如果一个channel只包含了需要单向同步的数据库表,而且数据被路由到目标组的所有的节点,Channel上的batch将会被优化,以在所有的目的节点间共享提交的batch。在数据需要被路由到成千上万个节点时,这是一个非常重要的特性。当这个节点被检测的时候,你将会看到OUTGOING_BATCH表中的Batch的common_flag被设置为1。

Channel有几个与大小相关的属性。包括:

max_batch_size
指定此channel中的一个batch中可以处理的数据变化事件的最大值。

Max_batch_to_send
指定在两个节点的一次同步中要被发送给一个给定的channel的batch的最大值。一次同步就是一次推送数据或者一次拉取数据。例如,如果有12的batch已经准备好了要被发送给一个channel,max_batch_to_send等于10,然后只有这12个中的前10个被发送,即使这12个已经都被准备好了。

Max_data_to_route
指定一个channel一次route的数据行数的最大值。

 

根据你的同步需求,你可以分别指定在一个channel正在route数据的时候,是否读取和传输旧的数据(数据变化发生之前的数据),新的数据(数据变化发生之后的数据)和主键数据(就是主键)。这分别被channel表的use_old_data_to_route列,use_row_data_to_route列和use_pk_data_to_route列设置。默认情况下,它们都是1(true)。

如果一个channel上的数据包含Lob类型的数据,你可以设置channel表的contains_big_lob列为1(true),这会给SymmetricDS一个暗示,这个channel中包含Lob类型的数据。如果SymmetricDS知道DATA表中将不会包含大对象,SymmetricDS就可以利用一些数据库提供的特性们,所以,如果表中真有大对象,最好是配置上,让SymmetricDS知道。不同数据库对于一个大对象的大小的定义是不同的。

0 0
原创粉丝点击