白話數據產品(一)——數據倉庫

14 評論 35897 瀏覽 275 收藏 7 分鐘

數據倉庫是存放收集來的數據的地方,數據倉庫的特征有按時抽取、分層存儲、切片存儲、抽建模業務等。

數據產品的工作比較雜,從數據倉庫建模,指標體系建立,到數據產品工具的設計,再到偶爾一些數據分析報告的撰寫,甚至一些機器學習的預測模型都要有所了解。大公司可能每個職能都有專門的崗位來負責,小公司的話可能真的要你一條龍了。

其實數據產品從頭到尾做的事情就是幫公司收集數據、存儲數據、呈現數據、預測數據,拆分到具體的工作中,將會在下面介紹。

收集和存儲數據:數據倉庫

數據倉庫是存放收集來的數據的地方,做數據分析現在一般盡量不在業務數據上直接取數,因為對業務數據庫的壓力太大,影響線上業務的穩定。

1. 數據收集的時間間隔

數據倉庫里的數據按照數據收集的時間間隔大致分為兩類:

  • 一類是可以進行離線處理的數據,一般包括內部業務數據庫及外部數據(比如:爬蟲或第三方API);
  • 一類是需要實時處理的數據,比如:內部業務日志數據。

對于第一類一般的處理多數要求在“天”級別,比如說:一天從業務數據庫更新一次數據就足夠了,一般采用MapReduce等批處理框架來處理數據,批處理框架在進行大量數據的計算的時候有計算資源比較廉價等優勢。

而第二類實時數據處理,需要采用一些流處理框架,例如:Storm、Spark等,來處理數據,當業務發展到一定階段,業務人員對數據的實時性要求會越來越高,也就對大數據技術團隊提出了更高的要求,當然實時處理數據所需要付出的代價也是更高的。

我們要分辨清楚,哪些數據采用批處理就可以了,哪些數據是有實時處理的價值的,并不是說所有數據都實時處理就是更好,畢竟集群資源是有限的,要合理利用計算資源。

2. 數據的分層存儲

另外數據倉庫的數據存儲是分層級的,這個架構一方面跟數據拉取方式有關,一方面也是為了對數據進行層級的抽象處理。

一般來說數據倉庫會至少分為ODS、MID、DW三個層級,當然層級的名稱每個公司可能不同,這里主要是在作用上進行區分解釋。

  • ODS層存儲的是業務數據庫在一個時間范圍內新增或更新的數據,它的存儲是線性增長的,有數據發生變化,ODS才會存儲數據。
  • MID層是經由ODS層數據計算得出的最新的完整版數據,相當于是業務數據庫的一個拷貝,只不過是截止到某一個時間的。
  • DW層是對MID層進行業務模型的抽象之后的合并層,將一些冗余的庫表簡化,做成比較利于數據抽取的庫表。

因為MID層和DW層存儲的都是完整的數據,業務數據庫數據會不斷增長,導致這兩個層級里的數據每個切片的數據都是在增長,相當于是指數增長。

3. 數據的切片存儲

數據庫的存儲是分時間戳的,相當于是把數據按照快照的方式存了n個版本,當你想追溯在某天某時間的數據的時候,就可以通過定位特定的時間戳,追溯到相關的數據。

這種設計避免了業務庫數據會不斷覆蓋的問題,相當于是在數據分析的時候加了一個時間維度,提升了一個維度,看問題解決問題的角度也就被升華了。

4. 數據倉庫建模

MID層向DW層抽象的過程,需要數據產品對業務庫表進行建模。首先要清楚了解,你所要進行抽象的業務系統是什么樣的(感覺數據產品好累,還要去了解別人的系統是怎么玩的╮(╯_╰)╭)。

比如:你所要負責的是A業務系統的DW設計,那么首先你要把A業務系統的系統邏輯搞清楚,然后它所涉及的庫表都了解清楚,包括業務本身的庫表以及它所依賴的中后臺系統的庫表,以及各個數據庫之間的關系是怎樣,比如:是一對一還是一對多,當前庫表是否是最細粒度的數據。

一般來說建模要做到模塊互相獨立,粒度統一。因為考慮到后期做指標和取數的方便,在不同粒度上都有表是比較好的。

比如:一個電商分期業務,可能在訂單粒度上才能取到放款等數據,但是品類等維度又只能在商品粒度上取到(考慮到購物車,一個訂單可能對應多個商品),這時候就需要兩個粒度都建立對應的表才能滿足不同的取數需求。

 

作者:小九,一枚互金數據產品

本文由 @小九 原創發布于人人都是產品經理。未經許可,禁止轉載

題圖來自 Pexels,基于 CC0 協議

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 怎么聯系你,加我q2244999284

    來自香港 回復
  2. 非常好,點個贊!最近剛接手廣告平臺的數據接入相關產品,看了一些SQL都沒有你說的清楚

    回復
  3. 有點偏技術,好難懂,同產品崗??

    回復
  4. 大家期待已久的《數據產品經理實戰訓練營》終于在起點學院(人人都是產品經理旗下教育機構)上線啦!

    本課程非常適合新手數據產品經理,或者想要轉崗的產品經理、數據分析師、研發、產品運營等人群。

    課程會從基礎概念,到核心技能,再通過典型數據分析平臺的實戰,幫助大家構建完整的知識體系,掌握數據產品經理的基本功。

    學完后你會掌握怎么建指標體系、指標字典,如何設計數據埋點、保證數據質量,規劃大數據分析平臺等實際工作技能~

    現在就添加空空老師(微信id:anne012520),咨詢課程詳情并領取福利優惠吧!

    來自廣東 回復
  5. 本來一般都會建就是有商品表和訂單表啊,不知道你這是指的什么特別的

    回復
  6. 兩個粒度都建立表指的是哪兩個粒度各建立什么表

    回復
  7. 數倉建模的過程也是數據產品主導的嗎?我們這邊好像都是數據開發們主導的,產品主要focus在數據平臺上面誒,是我的理解有誤嗎?

    來自上海 回復
  8. 數據產品的工作這樣的???感覺跟技術有很大掛鉤呢。還想過轉行數據產品經理崗的

    回復
  9. “因為MID層和DW層存儲的都是完整的數據,業務數據庫數據會不斷增長,導致這兩個層級里的數據每個切片的數據都是在增長,相當于是指數增長“

    你好,我想咨詢下,為什么增長是指數增長,我的理解是每次只加上切片的增量數據就可以了吧

    來自廣東 回復
    1. 假設數據只增不改的單一場景下。對于ODS層,每增加一個切片是增加增量數據,但是對于MID層,每增加一個切片是增加了最新版的全量的數據。假設,每天穩定新增5000條數據,那ODS里面的數據總量就是5000、10000、15000…類似y=ax,但是MID層數據總量就是5000、15000、30000…類似y=ax^2+bx。
      文中描述的指數增長不太準確,在這里假設的比較簡單的場景下,相當于是二階增長。

      來自上海 回復
    2. 了解了,十分感謝

      來自廣東 回復
  10. 來自上海 回復
  11. 很干貨,給個贊

    回復
  12. 感謝分享

    回復