資料架構難點-資料分佈(r12筆記第43天)
資料架構是架構設計中很重要的一環,可能對於很多DBA而言,資料管理,資料最佳化,資料遷移類的工作居多,而對於資料架構方面的工作也會思考少一些,這方面就會薄弱一些。
如果在這個行業裡有一定的經驗,就會發現如果細細來看資料架構,原來很多東西我們是在這麼用,但是沒有一個系統的整理和分類來歸納出來,有些時候我們做技術很容易陷入一個漩渦,那就是很容易去考慮一些非常具體的事情,而很難從整體上來把握。今天下午看了下溫昱老師的書《一線架構師實踐指南》,這方面的很多盲點都得到了一個系統的解答。
資料架構中的一個難點:資料分佈問題在資料架構中是很重要的一環。隨著資料,系統量級,業務場景的需求,資料分佈有6中具體策略。分別是獨立Schema,集中,分割槽,複製,子集,重組。
這幾個概念聽起來可能有些抽象,我們逐個來說一下,其實我們很多場景就是這麼在用。
獨立Schema:一個大系統由很多子系統組成,比如業務A有表testa,業務B有表testb,則他們都有獨立的Schema來定義存放,這樣能夠減少系統之間的相互影響,避免將問題複雜化。
這一點來說在Oracle是使用者Schema,在MySQL則是database這個層級體現出來。
集中:這種策略的核心就是“集中儲存,分佈訪問”,比如很多業務都會訪問表test1,test2,test3,則這些資料是集中儲存起來的,不同的業務根據需求來分佈訪問。這一點用Oracle RAC來解釋最清晰不過了。可以使用共享儲存來集中式儲存應用資料,然後透過多個計算節點來擴充套件讀寫需求。
分割槽:這個分割槽和資料庫裡的分割槽表不同,這個是基於架構層面,水平分割槽和垂直分割槽,水平分割槽的使用場景要廣泛的多,比如一個使用者資訊表,存放了不同的區域的使用者資料,我們可以根據地域來作為區分依據,這樣就把這個表的資料做這樣的拆分,放在不同的使用者下,或者放在同一個使用者表結構相同,表名不同的表裡裡面。 而相對來說,垂直分割槽的使用場景就侷限很多,比如表test有a,b,c,d四個欄位,做垂直分割槽就可以拆分,比如(a,b),(c,d) 。總體來說分割槽隨著資料量的增長需要提前規劃和設計。
複製:這個概念說通俗一些就是多副本,存在多分資料的情況,這個主要是透過實時或者快照級別來保持多個資料副本的資料一致性。這個策略在MySQL中Master,Slave的讀寫分離就是一個很典型的例子,或者是MySQL最新的MGR就是一個很經典的說明。 Oracle中的Primary,Active Data Guard也是一種體現。
最終是保證有多分資料副本,達到資料一致性。
子集:這個模式相對有些抽象,和複製有一些相似,但是是子集資料的一致性,比如我們有大量的使用者交易資料,根據不同的渠道,比如網銀渠道,手機微信支付,支付寶支付等會做特定的資料子集的一致性同步。
重組,這個分為兩種型別,統計性重組和結構性重組,就是從不同的維度來進行資料鑽取。比如我們根據一些交易資料的細節,需要得到一個基本的資料情況,比如交易流水總量,賬單資訊等,在很多統計分析的場景中就會存在,這是統計性重組。
而如果我們有使用者的概要資訊,使用者的詳細資訊放在更多具體表中關聯,這樣的情況就是結構性重組。其實Oracle中的物化檢視重新整理在平日的工作中,這兩種型別就很常見。
我們簡單總結一下,比如一個醫院的使用者資料和病歷資料,從資料架構的分佈角度來考慮,該怎麼設計,首先是使用者資料,這個極可能要統一集中式管理,所以集中就是一個相對合適的方案,而使用者的病歷資料考慮到地域性的特點,為了提高效能和訪問情況,可以考慮使用複製的方案。
比如電信行業的計費資料,資料量非常大,在資料架構的分佈上,就需要採用分割槽的策略,比如我們按照賬期的業務規則來劃分,把不同賬期的資料分佈在不同的資料儲存中。
比如遊戲行業資料架構中的資料分佈,不同的遊戲服彼此獨立,沒有強耦合關聯,就可以考慮使用分割槽的策略,而使用者的基礎資訊這些需要做到平臺化,基於管理和安全形度,最好能夠統一規劃,所以集中就是一個很不錯的方案。
當然從質量屬性方面來看。這6中方案還是有一定的特點,有優勢有劣勢。
我們就從可靠性,可伸縮性,通訊開銷,客觀理性,資料一致性這幾個方面來看看六種資料分佈方案的情況。
可靠性上,複製最佳。
可伸縮性方面,分割槽中的水平分割槽最佳
通訊開銷方面,獨立Schema最佳
可管理性方面,獨立Schema和幾種策略最佳
資料一致性方面,集中最佳。
可以發現,子集和重組均沒有入榜,也能夠間接說明這兩種資料分佈還是有一些特定的使用場景,不具有普適性。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-2137833/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料流架構學習筆記(二)-Redux架構筆記Redux
- 資料流架構學習筆記(一)-Flux架構筆記UX
- 資料結構筆記資料結構筆記
- 大資料架構和模式(一)——大資料分類和架構簡介大資料架構模式
- 系統架構設計筆記(97)—— 資料包架構筆記
- 資料結構筆記——概述資料結構筆記
- 資料結構筆記——棧資料結構筆記
- orientDB學習筆記(三)資料庫 構架設計筆記資料庫
- 【虹科乾貨】Lambda資料架構和Kappa資料架構——構建現代資料架構架構APP
- 大資料分類和架構簡介大資料架構
- 資料倉儲架構分層設計架構
- 按照業務領域畫資料架構圖 業務架構 資料架構架構
- 筆記:大話資料結構筆記資料結構
- 資料結構筆記——佇列資料結構筆記佇列
- 資料結構學習筆記資料結構筆記
- [做題筆記] 資料結構筆記資料結構
- 架構之路(五):忘記資料庫架構資料庫
- 架構之:資料流架構架構
- 《JavaScript資料結構與演算法》筆記——第3章 棧JavaScript資料結構演算法筆記
- 《JavaScript資料結構與演算法》筆記——第6章 集合JavaScript資料結構演算法筆記
- DW2.0下一代資料倉儲架構_第11章 時間相關資料(讀書筆記)架構筆記
- 【goldengate】官方文件筆記四 Oracle GoldenGate實時資料分佈Go筆記Oracle
- 馬斯克剛公佈Twitter資料讀取架構圖馬斯克架構
- MySQL中的批量初始化資料的對比測試(r12筆記第71天)MySql筆記
- DW2.0下一代資料倉儲架構_第12章 DW2.0的資料流(讀書筆記)架構筆記
- DW2.0下一代資料倉儲架構_第8章 資料模型和DW2.0(讀書筆記)架構模型筆記
- DW2.0下一代資料倉儲架構_第19章 DW2.0和非結構化資料(讀書筆記)架構筆記
- 資料湖+資料倉儲 = 資料湖庫架構架構
- 好程式設計師大資料學習筆記:Storm架構程式設計師大資料筆記ORM架構
- 玩足彩的一點感受(r12筆記第80天)筆記
- 資料結構學習筆記--棧資料結構筆記
- 資料結構學習筆記1資料結構筆記
- 線性表__資料結構筆記資料結構筆記
- 資料結構筆記——演算法資料結構筆記演算法
- 《JavaScript資料結構與演算法》筆記——第4章 佇列JavaScript資料結構演算法筆記佇列
- 《JavaScript資料結構與演算法》筆記——第2章 陣列JavaScript資料結構演算法筆記陣列
- 資料管理架構:單體資料架構與分散式資料網格比較 - enyo架構分散式
- 讀資料湖倉04資料架構與資料工程架構