SymmetricDS文檔翻譯--【Chapter 3. 詳細配置(Configuration)[section A]】,
Chapter 3. Configuration3.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知道。不同資料庫對於一個大對象的大小的定義是不同的。