數(shù)據(jù)量下的存儲設計模式探索

      網(wǎng)友投稿 748 2025-04-01

      引言

      現(xiàn)實世界商務競爭越演越烈,出現(xiàn)更多的細分市場、深度營銷和定制功能,這導致各種商務應用的用戶數(shù)和業(yè)務復雜度同步增加。反映到數(shù)據(jù)庫里,就是表的數(shù)量和數(shù)據(jù)量日益增長,數(shù)據(jù)庫響應速度日益緩慢。

      為什么一個功能好的產品,往往上線后就出現(xiàn)性能問題,不得不反復回爐修改?為什么一到業(yè)務高峰期,系統(tǒng)就慢的動彈不得,只能關閉部分業(yè)務保障關鍵業(yè)務?數(shù)據(jù)量從十萬到百萬,從百萬到千萬,從千萬到上億,從億再向兆跨越,如何保障程序能夠經受住大數(shù)據(jù)量的考驗?這都是我們面臨的真實現(xiàn)狀,也是大家反復在思考的問題。

      《道德經》上說:“有道無術,術尚可求,有術無道,止于術。”眾人把目光集中在系統(tǒng)架構、查詢算法、數(shù)據(jù)庫軟件的底層原理等等“術”上,卻忽視了深刻理解數(shù)據(jù)這條光明大“道”。數(shù)據(jù)從哪里來?要到哪里去?數(shù)據(jù)用來讀還是寫?數(shù)據(jù)與數(shù)據(jù)之間有什么樣的關系?數(shù)據(jù)的增長速度如何控制?最有價值的數(shù)據(jù)是什么?數(shù)據(jù)什么時候可以丟棄?假如不能回答這一長串問題,如果不是以這一長串問題的答案為程序設計的出發(fā)點,代碼如何能經受大數(shù)據(jù)量的考驗?

      在數(shù)據(jù)的采集、計算、展現(xiàn)和存儲這一設計鏈條中,開發(fā)者通常負責設計關系型數(shù)據(jù)模型,編寫程序計算和展現(xiàn)數(shù)據(jù),數(shù)據(jù)庫管理員負責數(shù)據(jù)文件存放位置、表空間存儲參數(shù)等的架構設計。但是,數(shù)據(jù)庫管理員往往不了解業(yè)務,不了解數(shù)據(jù)的特點,數(shù)據(jù)存儲設計表現(xiàn)為千“表”一律。

      數(shù)據(jù)存儲設計模式是根據(jù)數(shù)據(jù)的真正特點,仔細分析數(shù)據(jù)流向、數(shù)據(jù)訪問特點、數(shù)據(jù)量、數(shù)據(jù)增長量和數(shù)據(jù)生命周期,對數(shù)據(jù)進行分類,然后根據(jù)不同類型的數(shù)據(jù)設計不同的存儲策略。正確的應用數(shù)據(jù)存儲設計模式,可以幾倍,甚至幾十倍的提高數(shù)據(jù)訪問效率。

      大數(shù)據(jù)量下的數(shù)據(jù)特點

      全球最大數(shù)據(jù)庫的數(shù)據(jù)量已經先后越過了MB量級、GB量級和TB量級,站到了PB量級的門口。在龐大的數(shù)據(jù)量面前,對數(shù)據(jù)進行分類顯得尤為重要。人們對數(shù)據(jù)感興趣的時間是不一樣的,大量的數(shù)據(jù)進入數(shù)據(jù)庫后,經過計算、聚集和轉換,僅有少量的活躍數(shù)據(jù)需要長期保留在數(shù)據(jù)庫中,剩下的數(shù)據(jù)只有備查的價值,可以暫時存儲在數(shù)據(jù)庫中或者離線備份,等到休眠數(shù)據(jù)完全沒有價值后直接刪除。

      需要長期保留在數(shù)據(jù)庫的活躍數(shù)據(jù)可以稱之為核心數(shù)據(jù),它是整個商業(yè)活動中最有價值的數(shù)據(jù),需要長期甚至永久的保留。程序完成處理后只需要備查的休眠數(shù)據(jù)可以稱之為過程數(shù)據(jù),是伴隨核心數(shù)據(jù)流動所產生的數(shù)據(jù),它的存在周期視商業(yè)活動的重要性而定。

      數(shù)據(jù)的分類有利于把資源聚焦于有價值的數(shù)據(jù),我們可以通過以下幾個方面識別核心數(shù)據(jù)和過程數(shù)據(jù):

      識別項

      核心數(shù)據(jù)

      過程數(shù)據(jù)

      數(shù)據(jù)流向

      幾乎不流動

      按工作流的方式運動

      數(shù)據(jù)的訪問特點

      主要讀,多半是關聯(lián)查詢

      主要寫,更新和刪除涉及到查詢

      數(shù)據(jù)量

      非常大

      數(shù)據(jù)的增長量

      增長緩慢或者完全不增長

      增長迅速,甚至是爆發(fā)性的

      數(shù)據(jù)生命周期

      長,甚至永久的保留

      短,幾天到幾個月不等

      表類型

      表說明

      核心表

      數(shù)據(jù)生命周期長,讀比寫的訪問頻率高,數(shù)據(jù)增長慢

      恒數(shù)表

      數(shù)據(jù)量小,總是讀,很少寫

      遞增表

      數(shù)據(jù)量大,經常讀,很少寫。某些情況會頻繁寫。

      在大數(shù)據(jù)量環(huán)境下,數(shù)據(jù)庫服務器的資源是昂貴的,混合核心數(shù)據(jù)和過程數(shù)據(jù)的后果就是資源被不重要的數(shù)據(jù)占用,被不必要的進程占用,導致性能緩慢和堵塞。常見的誤解數(shù)據(jù)特點的現(xiàn)象包括:

      核心數(shù)據(jù)和過程數(shù)據(jù)以不同字段的形式在同一條記錄里存放

      核心數(shù)據(jù)和過程數(shù)據(jù)以不同記錄的形式在同一張表里存放

      把不同隊列的過程數(shù)據(jù)在同一張表里存放

      過程數(shù)據(jù)沒有合適的退出機制,長期保留在數(shù)據(jù)庫中

      數(shù)據(jù)表的分類

      在一個大數(shù)據(jù)量環(huán)境中,表的數(shù)量往往達到數(shù)千張。根據(jù)核心數(shù)據(jù)和過程數(shù)據(jù)的不同特點,可以將表大致分為2個大類,4個子類。

      核心表及子類的明細定義如下:

      表類型

      表說明

      核心表

      數(shù)據(jù)生命周期長,讀比寫的訪問頻率高,數(shù)據(jù)增長慢

      恒數(shù)表

      數(shù)據(jù)量小,總是讀,很少寫

      遞增表

      數(shù)據(jù)量大,經常讀,很少寫。某些情況會頻繁寫。

      在核心表的關系型數(shù)據(jù)模型設計階段,有以下原則需要遵守:

      務必要尊重范式,即確保原子性,檢查對鍵的依賴性,檢查屬性獨立性等三個原則。

      嚴格控制關鍵遞增表的字段個數(shù)和字段長度。

      重要的遞增表的屬性一旦定義,不允許隨意添加字段。后續(xù)業(yè)務升級最好是增加新的遞增表。

      如果遞增表總是需要做范圍查詢,應重新審視關系型模型。

      過程表及子類的明細定義如下:

      表類型

      表說明

      過程表

      數(shù)據(jù)生命周期短,寫比讀的訪問頻率高,數(shù)據(jù)增長快

      流水表

      數(shù)據(jù)量大,經常寫,很少讀。只插不改,定期刪。

      狀態(tài)表

      數(shù)據(jù)量大,經常寫,經常讀。邊插邊改邊刪。

      在過程表的關系型數(shù)據(jù)模型設計階段,有以下原則需要遵守:

      設計明顯的代表數(shù)據(jù)生命周期終止的字段

      從增刪改的代價來考慮,插入代價最小,修改需檢索數(shù)據(jù),刪除最為昂貴,可考慮多設計流水表,少設計狀態(tài)表。

      數(shù)據(jù)表的分類有利于圍繞不同類型的數(shù)據(jù)進行不同的存儲模式設計。我們可以通過數(shù)據(jù)流向、數(shù)據(jù)訪問特點、數(shù)據(jù)量、數(shù)據(jù)增長量和數(shù)據(jù)生命周期等識別四種表類型:

      識別項

      恒數(shù)表

      遞增表

      流水表

      狀態(tài)表

      數(shù)據(jù)流向

      幾乎不流動

      數(shù)據(jù)很少流動

      數(shù)據(jù)不流動

      數(shù)據(jù)在不同的表之間流動

      數(shù)據(jù)的訪問特點

      讀很頻繁,很少寫

      讀很頻繁,很少寫,每次僅訪問表中的極少量數(shù)據(jù)

      只插不改不刪,數(shù)據(jù)生成后只用來備查

      讀和寫都很頻繁,不光是插還要改和刪

      數(shù)據(jù)量

      數(shù)據(jù)量小,一般在萬條以內

      數(shù)據(jù)量大,一般在幾萬條到上億條以內

      數(shù)據(jù)量很大,一般在幾十萬條到上億條以內

      數(shù)據(jù)量很大,一般在幾千條到上千萬條以間

      數(shù)據(jù)的增長量

      幾乎不增長

      增長緩慢

      增長快

      增長快

      成功應用數(shù)據(jù)存儲模式的步驟

      建立數(shù)據(jù)存儲模式管理小組

      正如同大型程序的核心模塊會成立專門的核心開發(fā)小組一樣,大數(shù)據(jù)量也值得成立專門的管理團隊進行數(shù)據(jù)存儲模式管理。

      開發(fā)團隊往往是按照業(yè)務模塊來劃分的,核心表被各個業(yè)務模塊使用,但沒有專人管理核心表。幾乎伴隨每一次大的業(yè)務升級,核心表都會被添加字段,少則幾個,多則十幾個。表面上,添加的字段節(jié)省了某個業(yè)務的關聯(lián)查詢的時間,但其惡果是核心表的過度膨脹和關系型模型的模糊,最終會拖累整體業(yè)務性能。

      數(shù)據(jù)存儲模式管理小組能夠站在業(yè)務的整體角度去審查核心表的變動是否合理,維護關系型模型和控制核心數(shù)據(jù)的整體規(guī)模。更重要的是,他們能夠根據(jù)數(shù)據(jù)規(guī)模和業(yè)務特點制定統(tǒng)一的數(shù)據(jù)存儲模式,并在各個開發(fā)小組中推廣。在存儲模式實施有困難的時候,小組能給開發(fā)者提出有益的設計建議。

      架構中的存儲設計模式

      對重要的商業(yè)應用來說,數(shù)據(jù)庫并非只有一個,而是1(生產庫)+N(容災庫)的方式在運行。再加上數(shù)據(jù)增長到一定量級時,數(shù)據(jù)庫的物理拆分將不可避免,從一個大數(shù)據(jù)庫變成多個小的數(shù)據(jù)庫。面對這么多的數(shù)據(jù)庫,軟件架構師需要從更高層面進行數(shù)據(jù)存儲設計。

      首先,架構師要考慮的是如何利用容災庫來減輕生產庫的壓力?容災庫和生產庫是準實時同步,數(shù)據(jù)一般是相差一天或者更短時間,最新的技術已經能做到容災庫在只讀打開的狀態(tài)下與生產庫保持同步。容災庫適合用于備份、抽取數(shù)據(jù)源、綜合統(tǒng)計、報表和壓力測試。要做到容災庫接管綜合統(tǒng)計和報表功能,架構師需要解決查詢的跨庫問題和生成報表的寫數(shù)據(jù)庫問題。

      另一個重要的問題是如何對數(shù)據(jù)庫做拆分?傳統(tǒng)的思路是按照行政區(qū)域劃分數(shù)據(jù)庫,這種方式的優(yōu)點在于容易操作,程序的改造難度小,缺點在于核心數(shù)據(jù)同步的工作量大,容易出現(xiàn)數(shù)據(jù)不一致。另一種思路是核心庫加衛(wèi)星庫的方式,即核心庫存放活躍的核心數(shù)據(jù),衛(wèi)星庫存放休眠的過程數(shù)據(jù)。這種類似分區(qū)數(shù)據(jù)庫的工作模式有利于核心業(yè)務的資源保障,對架構師的設計能力提出了很高挑戰(zhàn)。

      了解存儲技術的最新趨勢

      大數(shù)據(jù)量下的存儲設計模式探索

      如同已經發(fā)生的每一次技術浪潮一樣,存儲技術的巨大進步會給存儲模式設計帶來顛覆式的影響。我們需要了解存儲技術的最新趨勢,并在數(shù)據(jù)存儲模式設計中考慮這一變化。

      這里就以存儲介質的技術變革,來舉例分析存儲技術的進步對存儲模式設計的影響。由于傳統(tǒng)磁盤的機械式運動,造成物理讀和邏輯讀,以及順序讀和離散讀的巨大性能差別。因此,以往的設計思路是將數(shù)據(jù)盡可能的緩存到內存中,避免磁盤I/O,尤其是避免磁盤離散讀。隨著固態(tài)硬盤的技術成熟,物理讀和邏輯讀,以及順序讀和離散讀的性能差別會大幅縮小,取而代之的是讀和寫的巨大性能差別。新的設計思路需要把重點放在減少數(shù)據(jù)流動,減少事務提交等方面上來。

      結束語

      如今,全世界的數(shù)據(jù)庫都面臨數(shù)據(jù)量的爆炸式增長,多核CPU、內存數(shù)據(jù)庫、固態(tài)硬盤,甚至超高性能的多機集群等硬件性能的提升逐漸追不上數(shù)據(jù)增長的速度,我們必須要開拓新的優(yōu)化思路來建設一個高效穩(wěn)定的信息系統(tǒng)。

      我們需要深刻的理解數(shù)據(jù)——識別數(shù)據(jù)流向、數(shù)據(jù)訪問特點、數(shù)據(jù)量、數(shù)據(jù)增長量和數(shù)據(jù)生命周期等數(shù)據(jù)特性,并據(jù)此展開核心數(shù)據(jù)和過程數(shù)據(jù)的存儲設計、程序設計和架構設計,才能滿足不僅要實現(xiàn)功能正確,還必須足夠快的商業(yè)需要。

      轉載請注明出處:華為云博客 https://portal.hwclouds.com/blogs

      存儲 數(shù)據(jù)庫 存儲

      版權聲明:本文內容由網(wǎng)絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網(wǎng)絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內刪除侵權內容。

      上一篇:excel表格首行固定的操作教程(如何將excel表首行固定)
      下一篇:電子表格如何截圖(電子表格截圖一整張怎么截圖)
      相關文章
      亚洲AV乱码久久精品蜜桃 | 91亚洲视频在线观看| 亚洲精品午夜无码专区| 国产精品亚洲va在线观看| 亚洲精品第一国产综合亚AV| 亚洲精品午夜国产va久久| 亚洲免费闲人蜜桃| 亚洲精品国产成人中文| 亚洲欧洲日产韩国在线| 亚洲精品成人网站在线播放| 亚洲精品综合久久中文字幕| 久久综合亚洲色HEZYO社区| 亚洲综合色丁香麻豆| 亚洲男人电影天堂| 亚洲乱码中文论理电影| 亚洲国产av美女网站| wwwxxx亚洲| 亚洲国产精品无码久久| 国产亚洲精品AAAA片APP| 少妇亚洲免费精品| 国产亚洲情侣一区二区无| 中文字幕亚洲无线码a| 国产精品亚洲片在线| 亚洲国产高清在线| 亚洲色av性色在线观无码| 亚洲国产精品日韩在线观看| 亚洲人成电影网站| 亚洲日产乱码一二三区别| 99亚洲精品卡2卡三卡4卡2卡| 亚洲高清无码专区视频| 亚洲中文字幕在线第六区| 亚洲AV无码精品色午夜果冻不卡| 亚洲成av人片天堂网| 亚洲黄色三级视频| 久久亚洲精品专区蓝色区| 蜜桃传媒一区二区亚洲AV| 亚洲天堂中文字幕在线| 亚洲日本va中文字幕久久| 亚洲一区二区三区首页| 亚洲最大成人网色香蕉| 亚洲国产精品一区二区三区在线观看|