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