MySQL是最流行的關系型數據庫軟件之一。由于其體積小、速度快、開源免費、簡單易用、維護成本低等,在集群架構中易擴展、高可用,因此深受開發者和企業的喜愛。
今天我們一起來學習了解下MySQL數據庫應用架構的發展。
單體架構
該架構指的是應用程序系統的所有數據存儲只需要一個MySQL實例,就能滿足數據的寫入和讀取需求。
單體架構
該架構適用于初期的小型應用程序,如果不斷發展成長為大型應用程序,它就會出現如下應用瓶頸:
- 需要存儲的數據量太大,超出一個MySQL實例的承受能力;
- 對數據庫的讀寫操作量太大,超出一個MySQL實例的承受能力;
- 如果僅有的這個MySQL實例掛掉了,整個應用程序也就不能對外提供服務了。
主從架構
該架構主要解決的就是上面單體架構的出現的應用瓶頸的。已有的MySQL實例充當主庫,負責寫入操作,存儲數據并同步從庫。然后通過新增一個及以上的MySQL實例作為從庫,來分擔讀取數據的壓力。也可以在主庫的MySQL實例掛掉之后,切換到從庫來保證應用程序的高可用性。
主從架構
該架構適用于寫少讀多的場景,如果出現大量的寫入操作,就會出現如下應用瓶頸:
- 對數據庫的寫操作量太大,超出一個MySQL主庫實例的承受能力;
- 需要存儲的寫入數據量太大,超出一個MySQL主庫實例的承受能力。
分庫分表
對于單體架構和主從架構都遇到過的寫入瓶頸和存儲瓶頸時,可以通過分庫分表來解決,它分為垂直拆分和水平拆分。
- 垂直拆分:就是專庫專用,按照不同的業務對數據表進行分類,發布到不同的數據庫上。
垂直拆分
這種拆分方式,能更清晰的對模塊進行劃分,但最終還是會存在單張表的大數據量,引起數據庫存儲瓶頸的問題。
- 水平拆分:就是將一張數據表按照某種規則進行拆分,拆成多張表,每個表中存儲一部分數據,分別放到不同的數據庫中。
水平拆分
這種拆分方式,能夠解決垂直拆分存在的單表大數據量問題。
因此,垂直拆分和水平拆分在實際應用中,可以結合使用,優勢互補。
作者:楊工,北京互聯網公司在職JAVA開發,專注分享寫作干貨。歡迎關注我,期待你的點贊評論。






