在客戶端與伺服器端複製資料的注意事項

2021-04-29 00:19:01 字數 2869 閱讀 7905

有時候出於某些特定的原因,需要在伺服器端與客戶端之間進行資料的同步。如下圖所示,某個公司在各地有銷售辦事處。為了便於管理,在每個銷售辦事處都設定了sql server客戶端應用程式。每天晚上總公司的資料庫伺服器需要與各自的辦事處客戶端之間的資料進行同步。這主要是通過伺服器與客戶端之間的資料複製功能來實現的。在sql server中有這方面現成的解決方案,實現起來也比較簡單。為此對於這個具體的實現,筆者就不做過多闡述了。筆者現在要就講的是,在設計並實現這個解決方案的時候,需要注意哪些問題。

注意事項一:按計畫同步與安需同步要一起實現。

但是,除了可以根據計畫來實現同步的話,有時會也需要能夠按需來進行同步。如在2023年6月1日晚上11點實現同步後,在6月2日早上7點之前總公司定義好了最新的**。6月2日以後的**要按這個最新的**表執行。此時在總公司伺服器處,就需要強制更新各個客戶端的**。這個就在計畫之外了。另外需要注意的是,根據計畫同步的時候,往往同步的是全部的資料,包括銷售資料、庫存量、新增加會員資訊等等。而按需實現同步的話,往往只是針對特定的表,如銷售**等等。所以在按需同步時,必須要能夠實現根據特定表來進行同步。如果在按需同步時,同步不必要的資料,則可能需要比較長的時間。而按需同步往往是用來針對一些特殊的情況,時間比較緊。所以只針對特定的表進行同步,以減少同步的時間,這是非常必要的,也是非常實際的乙個問題。

注意事項二:可以通過多種方式與伺服器實現資料同步。

一般來說,通過vpn隧道在客戶端與伺服器之間實現資料的複製,這是比較可行的方案。因為在客戶端與伺服器端之間建立vpn隧道,不僅可以增加資料的安全,而且還可以提高複製的效率。其整個同步過程所花費的時間是比較短的。但是其代價也是比較高的。如果辦事處與總公司的位置不是很遠,如在同乙個城市,則對企業來說,通過vpn隧道來實現客戶端與伺服器端資料的同步就顯得有點浪費。

所以,在設計這個解決方案的時候,資料庫管理員最好能夠考慮一下,能否採用其他一些更加便宜的方式來實現同步。如直接通過internet來實現同步。雖然這個方式可能會發生資料洩露的危險,而且速度也比較慢。但是**比較便宜。對於一般的企業來說,如服裝企業在同城設立銷售點的話,採用這個方式來實現同步也已經足夠了。為此在設計客戶端與伺服器端資料同步時,資料庫管理員需要向客戶說明各種同步渠道的差異,並根據客戶的要求來實現。而不能夠想當然而,認為vpn隧道不錯,就採用這個同步渠道。

注意事項三:設定更新源。

由於各地的辦事處都需要向伺服器提出更新的需要。不過為了提高資料的準確性,在伺服器上必須能夠設定,哪些內容只可以在伺服器上進行更新。如通常情況下,產品的**只能夠有伺服器來更新。像kfc各地銷售的**都是統一的。所以各地銷售點是不能夠更新伺服器方的**表。如果需要提價的話,往往是在伺服器端調整**,然後再把這個**資訊強制更新到各地的銷售辦事處。所以某些資料應當只在伺服器方進行更新。

為此,在部署這個方案時,資料庫管理員應該協同企業的管理人員,確定到底哪些資料只能夠在資料庫伺服器方進行更新。如果可行的話,資料庫管理員還可以給企業一些建議。即可以根據自己的經驗,把需要在伺服器方進行更新的內容列出來。這些內容有產品基本資訊、產品**、**方案等等。然後供企業使用者選擇。這會讓企業使用者能夠更加迅速、準確的選擇出相關的內容。當然,如果企業平時管理比較規範的話,那麼肯定也有這方面的書面資料。此時對於資料庫管理員來說可能工作起來更加的方便。無論如何,在部署這個解決方案時,資料庫管理員必須向企業客戶確認這方面的內容。不然的話,到時候出問題,資料庫管理員可要吃不了兜著走了。

注意事項三:要多某些記錄進行刷選。

不同的客戶端,從同乙個表中獲取資料,但是其獲取的紀錄可能是不同的。如乙個中式快餐店,在各地辦了很多分店。其為了招攬顧客,會不斷的推出新的品種。不過新產品剛剛推出的時候,往往只有在幾個特定的門店有的賣。企業希望通過這種方式來判斷顧問對新產品的接受程度。如果反響好的話,才會在各地的門店中推廣。

這個需求說出來簡單,但是在系統的實現上有一定的難度。具體來說,就是要求客戶端與伺服器之間在進行資料同步的時候,要能夠根據門店**的不同,進行記錄的刷選,把某些產品記錄過濾掉,以免造成不必要的麻煩。這在sqlserver資料庫上也是可以實現的,配置起來不是很複雜。在實現過程中,其難點是管理方面的問題。即企業需要根據實際情況,定義好相關的過濾規則。而企業平時主要是依靠口頭管理,缺乏相關的規則。為此在這個規則的定義上,就遇到了麻煩。

通常情況下,這個流程是各地連鎖店自己申請或者有企業總部指定,然後把新產品在這幾個門店試賣。從技術的角度來講,只是在連鎖店資訊中加入乙個字段,然後再過濾條件上加入乙個判斷條件即可。為此資料庫管理員還需要幫助企業確認相關的業務邏輯。往往著是實現這個需求的關鍵。如果這個業務邏輯定義的比較嚴格,而且企業會嚴格執行的話,那麼後續基本上不需要調整。而如果企業沒有明確的業務邏輯,而純粹是憑「靈感」的話,那麼後續調整可能會比較多。對於這一點,資料庫管理員自己不僅需要心中有數,而且還需要向企業說明這個問題,讓他們認識到這個事件的嚴重性。

注意事項四:必須控制遠端站點保持不同步狀態的時間。

為安全起見,相關應用程式還必須控制遠端站點保持不同步狀態的時間。簡單的說,就是當某個客戶端在規定的時間內沒有進行資料同步(如網路異常導致同步失敗),那麼該採取什麼措施?如可以設定乙個寬限期,第一次同步失敗後沒有關係,但是不能夠連續三次同步失敗。如果控制的比較嚴格,如同步失敗後,馬上就鎖住客戶端,不允許相關的應用程式再連線到這個客戶端。一般來說,對於即時性要求比較高的企業,如彩票行業、銀行等等都會有類似的要求。

可見,當客戶端不及時同步該如何處理,這也是因企業而異的。從sql server資料庫角度來講,可以設定不同的規則來處理這件事情。如可以即時鎖住客戶端,也可以給管理員提供警告,或者給與乙個寬限期。現在主要的問題是,企業要確定自己所需要的管理方式,並且在短時間內不會改變。然後,資料庫管理員就可以根據企業的要求,在資料庫客戶端與伺服器中進行相關的設定。通常情況下,為了資料能夠及時的同步,都需要在客戶端採取措施控制遠端站點保持不同步狀態的時間。

客戶端與伺服器端通訊

關係圖 傳送 邏輯管理器 處理邏輯傳送指令 指令解析管理器 根據協議xml解析指令成二進位制資料 把二進位制資料傳給伺服器 接收 伺服器傳送二進位制資料到客戶端 指令解析管理器 根據協議xml解析二進位制資料 根據解析資料對映到邏輯類來處理 2 1 3 20 2,2 21 1,1,2 指令名和指令名...

客戶端與伺服器端的區別

一般來說,客戶端就是我們使用的電腦 包括我們使用的瀏覽器ie,firefox 伺服器端就是存放網頁與資料庫資料的伺服器 電腦上裝的魔獸程式就是客戶端程式,你連線的伺服器 九城的伺服器 就是是伺服器端程式 我們通常所說的動態 設計一般都是b s結構的,b是browser的縮寫,就是客戶端程式。s是se...

客戶端跳轉與伺服器端跳轉

客戶端跳轉時用httpservletresopse物件的sendredirect函式實現,伺服器端跳轉是使用requestdispather物件的forward方法實現的。這兩者之間的區別主要體現在三個方面 1.使用伺服器端跳轉時,客戶瀏覽器的位址列並不會顯示目標位址的url,而是用客戶端跳轉時,位...