當我提到向外擴展數(shù)據(jù)庫系統(tǒng)時,我實際上只是討論對數(shù)據(jù)庫系統(tǒng)進行分割或劃分,以便你能利用那些部分,把它們分配到單獨的數(shù)據(jù)庫服務(wù)器上。這允許你在許多服務(wù)器間分散處理能力,以適應(yīng)不斷擴張的增長。
但是,額外的特性和功能需要更高的復(fù)雜程度。一個向外擴展的數(shù)據(jù)庫很難進行設(shè)計或管理。在你成功對一個數(shù)據(jù)庫系統(tǒng)實行向外擴展之前,你必須解決許多困難的商業(yè)和技術(shù)難題。
本文說明向外擴展數(shù)據(jù)庫系統(tǒng)的兩個選項,從而實現(xiàn)更高的可擴展性:水平數(shù)據(jù)劃分和垂直數(shù)據(jù)劃分。
水平數(shù)據(jù)劃分
使用水平數(shù)據(jù)劃分,數(shù)據(jù)庫結(jié)構(gòu)在數(shù)據(jù)庫實例方面沒有變化。通常,數(shù)據(jù)庫之間唯一的不同在于實例包含的數(shù)據(jù)不同。
開發(fā)出中間層應(yīng)用程序,使得實例間的數(shù)據(jù)得到適當維護,是這種解決方案的特點?赡芎茈y決定如何在數(shù)據(jù)庫實例間劃分數(shù)據(jù)。數(shù)據(jù)分配方法十分關(guān)鍵,因為我們需要在不同服務(wù)器間比較平均地分散數(shù)據(jù)負載。不進行這種平均分割,你就無法取得向外擴展數(shù)據(jù)庫的任何好處,因為查詢或事務(wù)處理的大部分IO仍然只發(fā)生在一臺服務(wù)器上。
既然全部數(shù)據(jù)不再保存在一臺服務(wù)器上,因此在必要時更難對所有數(shù)據(jù)執(zhí)行查詢。幸運的是,你可以建立分布式劃分視圖連接兩個服務(wù)器實例間的數(shù)據(jù),使得數(shù)據(jù)看起來就像保存在一臺服務(wù)器上。有一些特殊的視圖,它們利用連接的服務(wù)器和在數(shù)據(jù)表上建立的約束,有效地返回數(shù)據(jù),就好像你只查詢一臺服務(wù)器上的數(shù)據(jù)一樣。(我將在下周的文章中詳細討論分布式劃分視圖。)
另外,值得一提的是,如果服務(wù)器處在不同的地理位置,它們的性能可能會受到影響。在這種情況下,你可能希望復(fù)制實例間的數(shù)據(jù),以便每臺服務(wù)器擁有完整的數(shù)據(jù),但只負責維護特定的一塊數(shù)據(jù)。
垂直數(shù)據(jù)劃分
垂直數(shù)據(jù)劃分包括把數(shù)據(jù)庫表分割成在不同服務(wù)器上保存的不同數(shù)據(jù)庫實例。每臺服務(wù)器一般分配完成一個特殊的任務(wù)。這樣就可以對那些表中的IO進行分割。這種類型的分割取決于將系統(tǒng)邏輯地劃分成許多部分,以便這些部分能夠獨立操作。如果實例間需要最少量的交互進行事務(wù)處理,這種處理就很有必要。
例如,如果你的數(shù)據(jù)庫系統(tǒng)維護銷售、營銷和廣告
你可以采取一些措施,如在每一臺服務(wù)器上使用相互連接的表和視圖,以便實例可以從其它實例中查看數(shù)據(jù)。這樣做可以減少應(yīng)用程序?qū)記Q定在哪找到它需要的數(shù)據(jù)時所需的額外計算量。你需要保證應(yīng)用程序?qū)泳哂斜匾倪壿嬓裕詻Q定將數(shù)據(jù)保存在哪臺服務(wù)器上。
修改
你可以對水平和垂直數(shù)據(jù)劃分方法進行修改,使其更好地適應(yīng)你的環(huán)境。例如,你可以使用一個面向服務(wù)的架構(gòu)在服務(wù)器間分配處理能力;應(yīng)用復(fù)制確保數(shù)據(jù)庫實例相互之間保持緊密同步;以及組合應(yīng)用這些技巧。
更多試題請訪問:考試吧軟件水平考試欄目
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |