資料庫架構

2021-06-09 18:55:46 字數 1723 閱讀 6013

很少談架構方面的事情,主要是因為這確實是個對知識面和知識深度要求很高的領域,無論是開發語言的選擇、**的架構,伺服器的搭配、網路的架構、資料庫的架構還是第三方軟體的選用等,每一方面都是個很大的方向,每個方向都值得乙個人去研究一輩子;每每看到某某**的首席架構師之類的人(不過很多是海綿派),總覺得那就是樂於做技術的人的終極目標,總是有種崇拜感。

限於工作和知識的侷限性,以及抱著對各位朋友負責的態度,本文談論的架構僅限於資料庫方面,而且是基於sqlserver資料庫來談的,以免誤導各位。

sqlserver經過這些年的發展,其實已經有很多很好的技術可以使用,如replication、ssb、cluster、mirroring等(可以參考我在sqlserver dba 三十問和sqlserver 高可用、高效能和高保護延伸

資料庫架構需要考慮的問題:

資料可靠和一致性;

資料容災;

當資料量和訪問壓力變大時,方便擴充;

高度可用,出問題時能及時恢復,無單點故障;

不應因為某一台機器出現問題,導致整網效能的急劇下降;

方便維護;

關於下面架構的說明:

核心伺服器採用cluster,還採用了ssd做磁碟陣列(ssd可存放索引等資料);

核心伺服器的資料變更通過ssb,分發到兩台replication的主機中(這一步可以先對資料進行粗加工,加工成方便使用者查詢的資料形式,然後再通過ssb包裝後分發),使用了兩台ssb分發機,既可以分擔壓力,也可以實現無單點故障;ssb可用保證核心庫的資料和replication主機資料一致;當然這一步也可以直接使用replication來實現,但對核心伺服器的壓力會有所增加;

接下來將replication主機的資料通過分發伺服器分別分發到三颱訂閱機,也就是querydb伺服器;

六台querydb通過f5控制訪問,同時在前段加了臺memorycache的伺服器,增加快取,減少查詢的壓力(這一部分很多公司使用了搜尋引擎方面的技術,將資料庫中的資料生成xml檔案,再通過索引檔案來查詢資料);

b3和b4兩台ssb的作用是做querydb到核心伺服器的ssb訊息**,ssb訊息既能從querydb傳送到核心伺服器,同時也能從核心伺服器傳送到querydb;這樣有啥用呢?用處大了,因為核心伺服器只有一台,我們如果把**的所有操作都集中到核心伺服器處理,那在業務高峰時期,資料變更非常頻繁,核心伺服器壓力必定非常大,很可能抗不住,為預防這樣的問題,我們勢必要把部分壓力分擔出去,於是我們可以在使用者做註冊、下單等操作時,先將操作放到querydb中,再通過ssb把訊息傳送給核心伺服器,核心伺服器接受到ssb訊息後,會先放到佇列中,然後乙個個處理,這樣核心伺服器就不會因為同時處理過多的請求,而產生當機的風險,同時核心伺服器處理完資訊後,會將這些資料的變動通過replication分發到每台querydb中去,這樣querydb的資料還是會和核心伺服器保持一致,實現了通過querydb來記錄操作,然後運用ssb技術來分壓的效果;因為querydb有六台(還可以擴充套件),querydb上ssb壓力都分散了,所以也不會給querydb帶來很大的壓力(可能訊息會有小的延時,應該盡量在ssb通道上使用光纖網路);即便核心伺服器當機了,還是可以進行查詢資料、註冊和下訂單等操作,ssb會一直保留訊息。

架構2是兩個異地機房之間的架構,和架構1類似。

資料庫 3 1 資料庫架構

如何設計乙個關係型資料庫?乙個關係型資料庫應該包括以下內容 資料庫最主要的功能是什麼?就是儲存資料,因此它會有乙個儲存模組,來負責儲存我們的資料,儲存模組就類似於我們的os檔案系統,將資料最終持久化存入磁碟中,如存入機械硬碟,或者ssd固態硬碟,抑或是它們的磁碟陣列矩陣中。可是光有儲存是不行的,我們...

mysql資料庫架構

1.mysql整體邏輯架構 我們先下圖看看mysql整體邏輯架構 mysql s logical architecture 圖1第二層值得關注。這是mysql的核心部分。通常叫做 sql layer。在 mysql據庫系統處理底層資料之前的所有工作都是在這一層完成的,包括許可權判斷,sql解析,行計...

MPP 架構資料庫

mpp massively parallel processing 大規模並行處理系統,這樣的系統是由許多松耦合的處理單元組成的,要注意的是這裡指的是處理單元而不是處理器。每個單元內的 cpu都有自己私有的資源,如匯流排,記憶體,硬碟等。在每個單元內都有作業系統和管理資料庫的例項複本。這種結構最大的...