mysql的纵向扩展方案_SQL Server横向扩展方案-SODA
SQL Server橫向擴展方案-SODA
每次在提到SQL Server擴展性問題的時候,似乎很多的SQL Server DBA或者使用微軟技術開發的朋友心里總是一整痛:SQL Server只能縱向的擴展(Scaling-Up),無法橫向的擴展(Scaling-Out)。
每次有人提到Oracle和SQL Server,第一句話就是:SQL Server無法搞負載均衡,而Oracle可以使用RAC。
每次我問其他的SQL Server DBA朋友:SQL Server自帶的Mirroring,Replication,Cluster難道不能搞負載均衡嗎?很多的人搖搖頭。最后不能不選擇第三方的方案。
后來,通過不斷的實踐和思考,我明白了為什么很多的朋友對SQL Server的橫向擴展能力不理解。其實SQL Server已經提供了橫向擴展所需要的所有技術和工具,但是如果單看每一種工具,可能認為達不到目的,但是如何把這些技術按照適當的設計,和組合,那么,絕對就是滿足功能的。
另外,做DBA的朋友,可能在技術上面有一定的局限性。因為很多的DBA是“純”的DBA,很少懂應用程序的設計,懂架構設計的人DBA就更加的少了。
其中,一個好的高性能的數據架構的做出,需要多方面的知識,需要既懂數據庫(知識能力要達到專業的DBA水平),也懂架構的人。這樣,就可以將應用和數據很好的結合在一起。
好了,說了這么多,希望對大家有些幫助,不要“盲目的”相信一些傳說和謠言,特別是對剛剛踏入技術行業的朋友,很容易讓大家望而卻步。
言歸正傳,我們來看看幾種實現SQL Server橫向擴展的方案:
1.Service Oriented Database Architecture (SODA)
2.Shared Scalable Database (SSD)
3.Peer-to-Peer (P2P) Replication
4.Data Dependent Routing
我們本篇就介紹這些方案以及實現的原理,我們站點后續會根據朋友們的需要給出更多相關的講解。
數據的分類
在講述SODA之前,我們先來看看考慮這樣一個問題:如何分割數據?
為什么要問這個問題,因為很多的時候,為了使得數據訪問的性能更好,合理的分布數據是一個非常好的手段。對于這個問題,這個問題的回答有很多,但是有一點是不變的,要根據數據的特性來分割,那么數據包含哪些特性呢,或者說數據可以分為哪幾種。
下面,我們就來看看這個問題。
引用類的數據
顧名思義,引用類的數據就是指代那些被應用程序使用,但是又不被程序所維護和管理的數據。一般而言,引用數據往往是不變的數據,或者是變化非常緩慢的數據。例如,電子商務網站中的產品的分類數據。
活動類的數據
也是見名知意。主要是指與一些特定的活動或者業務處理相關的數據。例如,在訂單或者庫存的系統中,會隨著業務的處理而產生出一些數據,這些的數據的作用范圍就是某個活動或者業務流程中,一旦活動或者流程結束,數據就沒了,除非處于某些特定的目的,例如作為歷史或者跟蹤的數據進行存儲保留。
資源類的數據
資源類的數據就是系統中的業務處理所依賴的核心數據,例如庫存數據,用戶用戶,訂單數據等。如果資源數據丟失,那么我們就無法處理業務,所以資源類的數據是非常重要的,必須保證它的高可用性和完整性。從這里也可以知道,資源類的數據和其他類型的數據的分割和管理方式是不一樣的,甚至使用的配套的設備都可以不一樣。
另外,因為SODA的引入,出現了另外一種類型的數據:服務交互數據。
服務交互數據
這一類的數據只要用了在是服務進行數據交互的。這類型的數據必須是被其他的服務理解,而且必須保證穩定。例如,如果一個訂單的信息在傳輸的過程中丟失了,那么信息的發送方必須要可以重新的產生和原先一樣的數據,然后再次發送。
好,大致的清楚了這些數據類型之后,我們繼續往下看。
Service Oriented Database Architecture (SODA)
相信大家對SOA都有所了解,我這里也不長篇大論的講SOA的細節,但是有點要提的就是:通過采用SOA,像外界隱藏了內部的實現細節,外面看到的都是一個個的服務,不用管服務內部是如何部署,采用什么技術平臺,采用什么數據庫提供數據等等。
SODA其實就是沿用了SOA的實現,實現基于數據庫的SOA。其實,我們可以這樣理解,我們的數據庫向應用程序或者其他的調用了提供了數據,也就是提供了數據的服務。在很多的應用中,我們都是采用比較直接的方式去訪問數據庫,但是現在,我們把數據庫那一端封裝起來,隱藏細節,然后以統一而標準的方式公布數據服務的接口,告訴應用程序:你甭管我是如何實現的,反正你只要調用我的接口,你需要的數據操作就完成了。此時應用程序和數據進行了解耦,使得他們獨立的保持變化,極大的提升了靈活性和后續的擴展性。
通過下面的圖,我們看看對SODA有個了解:
20120904105321.png(29.29 K)
9/5/2012 10:37:13 AM
采用了SODA之后,我們基本上面就已經不知道有數據庫這回事了,因為此時我們只知道存在數據服務,它可以滿足我們一切的數據需要。
在SQL Server中,實現SODA主要基于Service Broker來進行的,主要依賴下面的技術:SQLCLR,CacheSync,Native Web Service Support,Service Broker。
Native Web Service Support:因為SODA會服務的形式發布數據,所以肯定就需要一些基于web service的支持。在win2003以及以后版本,就為基于SQL Server的SODA提供了支持。可以支持SQL Server將數據用SOAP形式進行交互。
Service Broker:提供了一個強大的基于消息的機制。
CacheSync:緩存同步機制。可以使得依賴底層數據的那么緩存在底層的數據方式變化的時候更新緩存中的數據。
SQLCLR:強化和擴展對數據庫的編程,使得相關的邏輯直接駐留在數據庫中,從而減少遠程數據訪問的開銷。
很多的朋友可能希望,我們對上面的每一種技術,以及SODA的具體的設計和使用有個詳細的講解,這個我們以后會以視頻的方式給出,也會有一些文章發布,但是文字的表述能力確實有限,如果大家企業中需要,我們可以提供專門的培訓講解。
本系列文章主要是給那些已經懂的這些技術,在技術選型上的朋友一些參考。也給那些不太熟悉這些內容的朋友一個感覺,起碼知道有這么回事。
我們下篇文章繼續講述。
總結
以上是生活随笔為你收集整理的mysql的纵向扩展方案_SQL Server横向扩展方案-SODA的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux相关配置 集群免密码登录配置
- 下一篇: oracle 取消exp权限,oracl