[Azure][SQL]Azure SQL Data Sync 終於正式上市了

正式版本的 Daya Sync 已經正式上線,如果您有小型的資料表需要進行一些同步處理的話,不妨考慮看看這個功能。

在很久之前( 可以參考 Sky 的文章 : Windows Azure - SQL Database Data Sync ) Azure 就有提供 Data Sync 的功能,但一值都在 Beta 的階段,現在總算正式發行了。

之前在測試的時候並沒有覺得不好,但因為都還在 Beta 階段,因此也不大敢放到正式環境上來執行,此次剛好看到它已經正式 GA ,剛好自己又有在一些專案中有遇到類似的情況,就想說把這個部分拿來使用了。

再此借用微軟官方的圖片 ( 詳細說明可以參考網址 ),從下圖中我們可以看出來,當我們使用 Data Sync 的功能的時候,Azure 會在這個機制當中,去建立一個 Sync DB,因此當我們的原始資料庫,設定特定的資料表要發佈的時候,這些資訊就會記錄到 Sync DB 當中,而使用非同步的機制,可以讓 Hub DB 的資料庫,跟其他可以在雲端或地端的 Member DB 來進行資料同步。只是如果是地端的時候,您就必須在地端的環境上,去安裝一個 Sync Agent 的程式,透過這個程式來進行同步, 而如果  Member DB 是在雲端的話,那就不用安裝任何程式了。資料庫之間的同步資料

下面我們就來實作看看,首先在我們原始的資料庫上,也就是一開始的架構圖上面的 Hub DB,選擇「Sync to other databases」的選項,

接著我們選擇上方的「New Sync Group」去建立一個我們同步的群組

在建立資料群組的時候會有三個步驟,第一個步驟是設定群組的屬性和指定一個放來存放 Metadata 的資料庫。而由於 Data Sync 是採用一個定時更新的機制,因此這裡我們也要設定一個同步的頻率,在此範例中我們設定每 30 分鐘同步一次資料。

接下來第 2 個步驟是要指定你的 Member 資料庫有哪些,目前這些資料庫如果在雲端只能在同個訂閱下面,因此在下面的範例中,我們加入兩個 Member DB ,第一個是跟目前 Hub DB 在同一個 Azure Database Server ,第二個則是在不同地區的不同 Server 上面的資料庫。

第一個

第二個

接下來要選擇同步哪個資料表,這裡我選擇 Hub database ,並且按下旁邊的 Refresh Schema 的按鈕,此時下方就會出現我們遠則建立在 Hub DB 上面的資料表了,這裡我就先選擇我們等一下要拿來測試的 T1 資料表。

當我們完成上述的設定之後,接下來我們使用 SSMS 來查看我們 Member 資料表中的結構和資料,從下圖中我們可以看到 T1 這個資料表已經同步到 Member DB 上面了,除此之外也看到資料庫中增加了一些 Data Sync 所增加的資料表。

當資料有初始化的同步過去之後,接下來我們針對 Hub DB 內來進行資料異動,我們分別刪除一筆、更新一筆、新增一筆。

當更新完之後,我們從 Sync Group 中的 Log 可以看出來,在每半個小時就發生一次的 Sync ,而在最後這次的  Sync 中,也可以看到有成功的將三筆資料的異動給同步了。而也可以看到如果發生在同一個 Server 上的時候,處理的速度是蠻快的,但如果跨 Server 的時候,則可能就要多花一點時間了。


基本上使用 Data Sync 還是會有些限制,在一開始介紹 Daya Sync 的網址文章中,有特別整理出下圖的數據,因此如果要使用的話,可能要注意一下這些部分,看是否合乎您的環境。除此之外因為使用 Data Sync ,其實就是直接列用 Triiger 來動作,因此這些資料表的 DML 指令在運行的時候,則會比以往耗用更多的 DTU 資源,因此使用的時候可能要注意到這些細節的部分。