天天看點

SymmetricDS文檔翻譯--【Chapter 3. 詳細配置(Configuration)[section A]】

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個已經都被準備好了。