以電商**為例,在**建立之初,日均訪問量可能只有幾百到幾千人,這時整個業務後台可能就乙個資料庫,所有業務表都放在這個資料庫中,一台普通的伺服器就可以支撐,而且這種架構對業務開發人員也非常友好,因為所有的表都在乙個庫中,這樣查詢語句就可以靈活關聯了,使用起來很便捷。
圖1 所有業務表都在乙個資料庫中
但是隨著業務的不斷發展,每天訪問**的人越來越多,資料庫的壓力也越來越大。通過分析發現,所有的訪問流量中,80%以上都是讀流量,只有20%左右的寫流量,這時可以通過讀寫分離來緩解資料庫的訪問壓力。
圖2 讀寫分離
由於**的訪問量越來越大,儘管採取了讀寫分離的方式,但隨著資料庫的壓力繼續增加,資料庫的瓶頸越來越突出。這時我們發現,我們的**演進到現在,交易、商品、使用者的資料都還在同乙個資料庫中。然而在這個巨大而且臃腫的資料庫中,表和表之間的資料很多是沒有關係的,也不需要join操作,理論上就應該把它們分別放到不同的伺服器,即垂直分庫。
圖3 垂直分庫
隨著業務的不斷增長,我們發現交易、商品、使用者這些庫都變得巨大無比,單機資料庫已經無法滿足業務的繼續增長,這時可以考慮對這些表進行水平拆分,即同乙個表中的資料拆分到兩個甚至多個資料庫中。以使用者表為例,資料可以根據userid的奇偶來確定資料的劃分。把id為奇數的放到db1,為偶數的放db2。
圖4 水平分表
配置複雜
基於開源中介軟體對一張大表進行水平拆分需要以下六步操作:
部署資料庫節點
安裝和部署中介軟體軟體(多個)
登入到各資料庫節點,建立子表
把子表的資訊,配置到每個中介軟體的配置檔案,然後啟動
用haproxy等負載均衡收斂中介軟體ip,對外提供乙個ip
業務正式訪問
運維極其不便
基於開源中介軟體對系統進行擴容需要進行以下幾步:
圖5 開源中介軟體系統擴容
開源中介軟體使用和運維的複雜性給業務發展造成了非常大的壓力,無形中為企業發展帶來了很大的負擔。
資料庫的演變史
目錄二 資料庫的演變方向 三 資料庫基本概念 四 軟體開發架構 五 資料庫的分類 兩大類 六 sql語句的由來 七 資料庫的本質 一 資料庫演變史 1.什麼是資料庫?1 顧名思義,資料庫 db,database 是按照資料結構來組織 儲存和管理資料的 倉庫 2 資料庫指的是以一定方式儲存在一起 能為...
資料庫技術演變與發展
隨著資訊科技的發展,採用兩維表結構的資料庫,已經無法儲存大量的多 非結構化複雜資料,以及各類資料之間的關係。關係型資料庫亟待突破。資訊科技平台的選擇常常是建立或重新建立應用系統時的關鍵問題,而資料庫正是其中需要做出選擇的關鍵平台。關聯式資料庫管理系統曾處於技術主流而獨領 但是這種傳統的資料庫管理系統...
資料庫資料結構
資料結構 數字型別 tinyint 1 byte 128,127 0,255 小整數值 smallint 2 bytes 32 768,32 767 0,65 535 大整數值 mediumint 3 bytes 8 388 608,8 388 607 0,16 777 215 大整數值 int或i...