Why SQL Server May Be More Suitable for You than Oracle RAC
Oracle RAC架構圖:
SQL Server的負載平衡(Load Balancing)作法:目前在SQL Server上有三種作法可以達到負載平衡(Load Balancing),我們就逐一的介紹:
- Replication (複寫)
- Log Shipping (日記檔傳送)
- Database Mirroring (鏡射)
Transactional Replication主要設定架構上有兩種,第一種是一台讀寫資料庫,其他台為唯讀,另一種為多台資料庫可同時讀寫,架構的選擇上主要看你的程式架構而定,假設你的資料庫中Primary Key使用了大量的流水號(IDENTITY)又同時使用在有Master與Detailed的表格時,就只能使用第一種架構,因為當資料庫將資料同步到另一台電腦時,因為流水號的重取,會造成另一台資料庫中的流水號不同步,所以使用第一種架構把Insert、Update與Delete移到第一台然後再同步到其他台,就可以完成而不需修改太多的程式,而程式只要調整將Select的部份指定到其他台即可達到負載平衡(Load Balancing),而在第二種的架構上可以使用SQL Server 2005 推出的新架構 Peer-to-Peer Transactional Replication即可達成,而且效能與同步化的時間差絕對讓你滿意,此二種架構的同步時間也是目前所有架構中,同步時間最短的,只需約1~3秒(實際情況示網路架構與資料量而定,但保證是所有架構中最快的一種)內即可完資料的同步。
Peer-to-Peer Transactional Replication架構圖:
參考文章:SQL Server 分散式架構 - 點對點交易式複寫 + NLB
2、Log Shipping (日記檔傳送):這是三個方案之中最便宜也是最簡單的方案,這個主要將第一台的紀錄檔(Log) 傳送到另外一台,而另外一台可以提供唯讀(Standby)的方式讓使用者進行存取,而同步時間因為是透過SQL Agent的排程進行,所以可以設定在一分鐘以內,而這個方案也是我目前遇到的客戶中最多人使用的方案。
Log Shipping 架構圖:
參考文章:如何建立 Log Shipping
3、Database Mirroring (鏡射):這是一個在SQL Server 2005推出的新功能,推出的時候真的有讓我非常的驚艷,很多人可能會想說我會不會寫錯了,Database Mirroring 的架構是屬於Active與Passive二種,那到底該如何進行負載平衡(Load Balancing)呢,這個就要透過資料庫快照(Database Snapshot),透過這個方法就可以將硬體發揮到極限,才不會白白的浪費硬體,但是有一個非常大的問題需要解決,那就是當你要重作快照的時候,需要中斷使用者的需求,所以會有停止服務的時間差產生,這個問題想當然也是有方法可解,那就是透過二個資料庫快照進行切換,假設我已每10分鐘重作一次,10:00的時候使用第一個快照,10:10的時候使用第二個,這時候第一個就可以準備開始重作快照,等到約10:19分的時候就可以開始重作快照,然後再切換回第一個,以此類推,即可達到負載平衡(Load Balancing)。
參考文章:SQL Server - 如何建立 Database Mirroring
Database Mirroring 架構圖:
最後上面的三個架構並沒有一定的好與壞,主要還是視客戶的需求而定,大家可以嘗試評估看看自已的需求,再選擇最合適的架構即可。
相關文章:
- SQL Server 2008 R2 容錯移轉叢集環境架設 - 利用 VM 與 Windows Storage Server - Part I
- SQL Server 2008 R2 容錯移轉叢集環境架設 - 利用 VM 與 Windows Storage Server - Part II
- SQL Server 2008 R2 容錯移轉叢集環境架設 - 利用 VM 與 Windows Storage Server - Part III(終)
- SQL Server - 雙主動模式叢集環境架設
- SQL Server - 如何建立 Database Mirroring
- 如何建立 Log Shipping
- SQL Server 分散式架構 - 點對點交易式複寫 + NLB
關鍵字:Load Balancing、Database Mirroring、Replication、Log Shipping
沒有留言:
張貼留言