水平和垂直劃分擴充套件SQL Server系統
當我提到向外擴充套件資料庫系統時,我實際上只是討論對資料庫系統進行分割或劃分,以便你能利用那些部分,把它們分配到單獨的資料庫伺服器上。這允許你在許多伺服器間分散處理能力,以適應不斷擴張的增長。
但是,額外的特性和功能需要更高的複雜程度。一個向外擴充套件的資料庫很難進行設計或管理。在你成功對一個資料庫系統實行向外擴充套件之前,你必須解決許多困難的商業和技術難題。
本文說明向外擴充套件資料庫系統的兩個選項,從而實現更高的可擴充套件性:水平資料劃分和垂直資料劃分。
水平資料劃分
使用水平資料劃分,資料庫結構在資料庫例項方面沒有變化。通常,資料庫之間唯一的不同在於例項包含的資料不同。
開發出中間層應用程式,使得例項間的資料得到適當維護,是這種解決方案的特點。可能很難決定如何在資料庫例項間劃分資料。資料分配方法十分關鍵,因為我們需要在不同伺服器間比較平均地分散資料負載。不進行這種平均分割,你就無法取得向外擴充套件資料庫的任何好處,因為查詢或事務處理的大部分IO仍然只發生在一臺伺服器上。
既然全部資料不再儲存在一臺伺服器上,因此在必要時更難對所有資料執行查詢。幸運的是,你可以建立分散式劃分檢視連線兩個伺服器例項間的資料,使得資料看起來就像儲存在一臺伺服器上。有一些特殊的檢視,它們利用連線的伺服器和在資料表上建立的約束,有效地返回資料,就好像你只查詢一臺伺服器上的資料一樣。(我將在下週的文章中詳細討論分散式劃分檢視。)
另外,值得一提的是,如果伺服器處在不同的地理位置,它們的效能可能會受到影響。在這種情況下,你可能希望複製例項間的資料,以便每臺伺服器擁有完整的資料,但只負責維護特定的一塊資料。
垂直資料劃分
垂直資料劃分包括把資料庫表分割成在不同伺服器上儲存的不同資料庫例項。每臺伺服器一般分配完成一個特殊的任務。這樣就可以對那些表中的IO進行分割。這種型別的分割取決於將系統邏輯地劃分成許多部分,以便這些部分能夠獨立操作。如果例項間需要最少量的互動進行事務處理,這種處理就很有必要。
例如,如果你的資料庫系統維護銷售、營銷和廣告資料,最好是把這些表分割成單個的資料庫例項,阻止它們共享同一臺伺服器上的IO。可能你還需要處理這兩個共享一些相同資料(例如客戶資料)的系統。能夠分割這些商業功能,你就可以在必要時向外擴充套件資料庫環境,提高系統效率。
你可以採取一些措施,如在每一臺伺服器上使用相互連線的表和檢視,以便例項可以從其它例項中檢視資料。這樣做可以減少應用程式層決定在哪找到它需要的資料時所需的額外計算量。你需要保證應用程式層具有必要的邏輯性,以決定將資料儲存在哪臺伺服器上。
修改
你可以對水平和垂直資料劃分方法進行修改,使其更好地適應你的環境。例如,你可以使用一個面向服務的架構在伺服器間分配處理能力;應用複製確保資料庫例項相互之間保持緊密同步;以及組合應用這些技巧。
Tim Chapman是肯塔基州路易維爾市一家銀行的SQL Server資料庫管理員,他有超過7年的IT行業經驗。他還通過了微軟SQL Server 2000和SQL Server 2005的認證。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-558080/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 乾貨丨如何水平擴充套件和垂直擴充套件DolphinDB叢集?套件
- windows系統磁碟擴容/擴充套件Windows套件
- 正確讀取SQL Server中的擴充套件事件SQLServer套件事件
- Zabbix-server SNMPTrap擴充套件Server套件
- 分類擴充套件套件
- 負載均衡的原理(垂直擴充套件 Scale Up、橫向擴充套件 Scale Out)負載套件
- Linux 檔案系統擴充套件Linux套件
- 進行SQL Server縱向擴充套件的必備條件KVSQLServer套件
- PHP 系統樹圖擴充套件元件PHP套件元件
- sql中的擴充套件學習SQL套件
- 數論分塊擴充套件套件
- windows系統下PHP7.X(7.2/7.3)安裝sql server資料庫擴充套件的方式方法WindowsPHPSQLServer資料庫套件
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- 擴充套件.Django-許可權系統套件Django
- [外掛擴充套件]系統主題管理套件
- LVM : 擴充套件檔案系統的容量LVM套件
- 讀構建可擴充套件分散式系統:方法與實踐15可擴充套件系統的基本要素套件分散式
- uboot和系統移植擴充套件--主Makefile分析boot套件
- CentOS 系統下 PHP 怎麼新增擴充套件?CentOSPHP套件
- 【Kotlin】擴充套件屬性、擴充套件函式Kotlin套件函式
- ubuntu24.04系統gnome46用到擴充套件Ubuntu套件
- 未來系統擴充套件,報表怎麼辦?套件
- Sentinel 原理-如何為系統設定擴充套件點套件
- [外掛擴充套件]計劃任務外掛套件
- PAT1040 Longest Symmetric String (25分) 中心擴充套件法+動態規劃套件動態規劃
- Flink SQL 在快手的擴充套件和實踐SQL套件
- EFCore之SQL擴充套件元件BeetleX.EFCore.ExtensionSQL套件元件
- SpringMVC 擴充套件SpringMVC套件
- Mybatis擴充套件MyBatis套件
- 擴充套件工具套件
- Sanic 擴充套件套件
- ORACLE 擴充套件Oracle套件
- 中文分詞 PHP 擴充套件 SCWS 安裝中文分詞PHP套件
- iOS開發的分類和擴充套件iOS套件
- JMeter 擴充套件開發:擴充套件 TCP 取樣器JMeter套件TCP
- 使用Kotlin擴充套件函式擴充套件Spring Data案例Kotlin套件函式Spring
- Laravel 檔案系統擴充套件(支援 OSS+ 七牛)Laravel套件
- 如何重構CRM系統,滿足擴充套件的需求套件
- 讀構建可擴充套件分散式系統:方法與實踐09可擴充套件資料庫基礎套件分散式資料庫