實時數倉項目需求及架構設計

第2章實時數倉項目需求及架構設計

2.1 項目需求分析

1)采集平臺

? (1)用戶行為數據采集平臺搭建

? (2)業務數據采集平臺搭建

2)離線需求

2.2 項目框架

2.2.1 技術選型

? 技術選型主要因素:數據量大小、業務需求、行業內經驗、技術成熟度、開發維護成本、總成本預算等。

  • 數據采集傳輸:FlumeKafkaMaxwell、Filebeat、Logstash
  • 數據存儲OLTP:MySQL、HDFS、HBase、Redis、MongoDB、
  • 數據存儲OLAP:Clickhouse、Greenplum、TDengine、influxdb
  • 數據計算: Hive、Spark、Flink
  • 數據查詢:Kylin、Clickhouse、Greenplum、Doris
  • 數據可視化:DataV、Superset、Echarts
  • 任務調度:DolphinScheduler、Azkaban、Airflow、Oozie、Xxl-job

2.2.2 系統數據流程設計

數據流圖 略

2.2.4 服務器選型

物理機VS云主機

  • 物理服務器:物理服務器是指獨立服務器,也就是指物理上的單獨服務器,物理服務器的構成包括處理器、硬盤、內存、系統總線等,和通用的計算機架構類似,但是由于需要提供高可靠的服務,因此在處理能力、穩定性、可靠性、安全性、可擴展性、可管理性等方面要求較高

  • 云服務器:云服務器是一種簡單高效、安全可靠、處理能力可彈性伸縮的計算服務。其管理方式比物理服務器更簡單高效。用戶無需提前購買硬件,即可迅速創建或釋放任意多臺云服務器。

物理機云主機
投入成本高額的信息化成本投入按需付費,無需服務器網絡和硬件維護,0運維成本,有效降低綜合成本
產品性能難以確保獲得持續可控的產品性能硬件資源的隔離+獨享帶寬,采用高端服務器進行部署,同時采用集中的管理與監控,確保業務穩定可靠;
管理能力日趨復雜的業務管理能力集中化的遠程管理平臺+多業務備份
擴展能力服務環境缺乏靈活的業務彈性按用戶需求靈活配置,快速的業務部署與配置、規模的彈性擴展能力
技術方面
安全方面
可靠性方面而物理機則相對來說硬件冗余較少,故障率較高云服務器是基于服務器集群的,因此硬件冗余度較高,故障率低
穩定性方面物理機宕機就是宕機,無法挽救云服務器可以故障自動遷移

2.2.5 集群規模

如何計算集群規模?

  1. 每天日活用戶100W,沒人一天平均100條。100W*100條=1億條數據

  2. 每條數據1K左右,每天1億數據。1億/1024/1024=100G

  3. 1年內服務器: 100G*360天 = 36T

  4. 副本數量:3個副本。 3*36T = 108T

  5. 預留20%-30%Buffer。 108T/0.7= 150T

  6. 假如每臺服務器8T硬盤 128G內存。 150T/8T=20臺服務器

分倉分層則還需要重新計算。

在企業中通常會搭建一套生產集群和一套測試集群。生產集群運行生產任務,測試集群用于上線前代碼編寫和測試。

2.3 規范

數據倉庫建設命名規范

2.3.1 表名規范

  • ODS層表名: 前綴為ODS_應用系統名(縮寫)數據表名 。數據表名稱必須以有特征含義的單詞或縮寫組成,中間可以用“”分割,例如:ODS_FUN_CUSTOMERINFO。表名稱不能用雙引號包含,表名長度不超過30個字符。如果ODS設計采用貼源設計,數據表名應與源系統一致

    集成入庫,一般用這樣的命名規范來表示:

    imp_ods_{源系統庫}_{源表名}_date
    

    表的命名,基本可以遵循以下規范:

    ods_{源系統庫}_{源表名}_date
    

    如果有特殊的時間要求,可在表后面加對應的時間標識,如 1d 或者 1m。

  • DW事實表表名: 前綴為DW_主題名(縮寫)功能描述 。數據表名稱必須以有特征含義的單詞或縮寫組成,中間可以用“”分割,例如:DW_ORD_DETAIL。表名稱不能用雙引號包含,表名長度不超過30個字符。

    維度表表名

  • 前綴為dm_ 。數據表名稱必須以有特征含義的單詞或縮寫組成,中間可以用“_”分割,例如:D_ACCOUNT、D_PUB_DATE。表名稱不能用雙引號包含,表名長度不超過30個字符。

  • 元數據表名: 前綴為M_應用名(縮寫)功能描述 。數據表名稱必須以有特征含義的單詞或縮寫組成,中間可以用“”分割,例如:M_ETL_TASK。表名稱不能用雙引號包含,表名長度不超過30個字符

第3章 用戶行為日志

目前主流的埋點方式,有代碼埋點(前端/后端)、可視化埋點、全埋點等。

****代碼埋點****是通過調用埋點SDK函數,在需要埋點的業務邏輯功能位置調用接口,上報埋點數據。例如,我們對頁面中的某個按鈕埋點后,當這個按鈕被點擊時,可以在這個按鈕對應的 OnClick 函數里面調用SDK提供的數據發送接口,來發送數據。

****可視化埋點****只需要研發人員集成采集 SDK,不需要寫埋點代碼,業務人員就可以通過訪問分析平臺的“圈選”功能,來“圈”出需要對用戶行為進行捕捉的控件,并對該事件進行命名。圈選完畢后,這些配置會同步到各個用戶的終端上,由采集 SDK 按照圈選的配置自動進行用戶行為數據的采集和發送。

****全埋點****是通過在產品中嵌入SDK,前端自動采集頁面上的全部用戶行為事件,上報埋點數據,相當于做了一個統一的埋點。然后再通過界面配置哪些數據需要在系統里面進行分析。

3.2 用戶行為日志內容

本項目收集和分析的用戶行為信息主要有****頁面瀏覽記錄、動作記錄、曝光記錄、啟動記錄和錯誤記錄。****

3.2.1 頁面瀏覽記錄

頁面瀏覽記錄,記錄的是訪客對頁面的瀏覽行為,該行為的環境信息主要有用戶信息、時間信息、地理位置信息、設備信息、應用信息、渠道信息及頁面信息等。

第4章 用戶行為數據采集模塊

flum安裝配置

kafka安裝配置

數據采集測試

寬表、窄表、維度表、事實表

一、概念

  • 寬表:把多個維度的字段都放在一張表存儲,增加數據冗余是為了減少關聯,便于查詢,查詢一張表就可以查出不同維度的多個字段

  • 窄表:和我們MySql普通表三范式相同,把相同維度的字段組成一張表,表和表之間關聯查詢其他維度數據。

  • 維度表:包含維度編碼和該維度下的多個屬性。

    注意 dw(dwd 和dws):存放著明細事實數據、維表數據及公共指標匯總數據,其中明細事實數據,維表數據一般通過ODS層數據加工生成;公共指標匯總數據一般根據維表數據和明細事實數據加工生成。

  • 事實表:包含一個業務事件的相關屬性。

? 事實表就是交易表。
? 維度表就是基礎表。
? 用來解釋事實表中關鍵字緯度的具體內容

二、寬表

2.1 寬表概念

? 寬表,顧名思義,就是比普通的數據表寬的表,比如數據庫表一,在數據庫中是五個字段,表二是四個字段,寬表就是把這兩個有業務聯系的表通過關聯字段弄到一個大表中,這樣列數自然就變多了,表也就寬了,所以就有了寬表。

2.2 為什么要用寬表

業務人員在做數據分析時,所需要的數據往往會存儲在數據庫的多張數據表中,比如訂單表中存儲了訂單編號、商品編號、訂購日期等,商品表中存儲了商品名稱、單價等商品信息,如果要同時查看訂單和商品信息,業務人員不知道數據結構,也很難做表間關聯,所以就要技術人員將兩個表提前關聯好形成寬表。

在olap技術發展過程中主要有MOLAP和ROLAP兩種形式,MOLAP中的數據文件通常叫做“CUBE”,這個名字大家都比較熟悉了,一般是各個olap產品自己的數據文件格式。而隨著數據庫性能的提升,ROLAP 產品逐漸流行起來(本文后續用到的產品潤乾報表就是一個典型的 ROLAP 產品),ROLAP 中數據保留在關系數據庫的事實表中,在使用用途上來說寬表約等于 CUBE。

通過寬表的使用,既能解決多維分析時多表的關聯問題又能提高數據查詢的速度和分析操作的便捷性。

功能模型

元數據管理

基礎事件維護

基礎事件元數據表

字段名類型說明
event_idbigint主鍵
event_namevarchar事件名稱
event_markvarchar事件標識符
event_groupbigint事件分組
event_changeint(1)標記為轉化 0 否 1 是
create_timedatetime創建時間
attr_idsvarchar屬性列表

事件屬性維護

屬性表

字段名類型說明
attr_idbigint主鍵
attr_namevarchar屬性名
attr_markvarchar屬性標識符
attr_typeint(1)屬性類型 1 文本 2 數字 3 是非
create_timedatetime創建時間

ods 明細表

ods_pv_event_yyyyMMdd

字段類型說明
create_timedatetime訪問時間
sourcevarchar來源
urlvarchar頁面url
client_ipvarchar訪問ip
uidvarchar訪客標識碼
client_typeint(1)設備類型:1 pc 2 h5 3 app
methodvarcharenum :get post delete put
result_codevarchar訪問結果狀態碼

dim維度表

dim_省份

字段類型說明
city_idintid
city_namevarchar城市名稱
parent_idint父id
city_codevarchar城市編碼
create_timedatetime創建時間

dim_客戶端類型

字段類型說明
client_idintid
client_namevarchar城市名稱
create_timedatetime創建時間

dw匯總數據

dw_pv_uv_cnt

字段類型說明
yyyyMMdddatetime
pv_numintpv瀏覽量
uv_numintuv瀏覽量
create_timedatetime創建時間

數據下載

數據治理

元數據管理實踐&數據血緣

? 什么是元數據?元數據MetaData狹義的解釋是用來描述數據的數據,廣義的來看,除了業務邏輯直接讀寫處理的那些業務數據,所有其它用來維持整個系統運轉所需的信息/數據都可以叫作元數據。比如數據表格的Schema信息,任務的血緣關系,用戶和腳本/任務的權限映射關系信息等等。

? 管理這些附加MetaData信息的目的,一方面是為了讓用戶能夠更高效的挖掘和使用數據,另一方面是為了讓平臺管理人員能更加有效的做好系統的維護管理工作。

元數據管理平臺管什么

? 數據治理的第一步,就是收集信息,很明顯,沒有數據就無從分析,也就無法有效的對平臺的數據鏈路進行管理和改進。所以元數據管理平臺很重要的一個功能就是信息的收集,至于收集哪些信息,取決于業務的需求和我們需要解決的目標問題。信息收集再多,如果不能發揮作用,那也就只是浪費存儲空間而已。所以元數據管理平臺還需要考慮如何以恰當的形式對這些元數據信息進行展示,進一步的,如何將這些元數據信息通過服務的形式提供給周邊上下游系統使用,真正幫助大數據平臺完成質量管理的閉環工作。

應該收集那些信息,雖然沒有絕對的標準,但是對大數據開發平臺來說,常見的元數據信息包括:

  • 數據的表結構Schema信息
  • 數據的空間存儲,讀寫記錄,權限歸屬和其它各類統計信息
  • 數據的血緣關系信息
  • 數據的業務屬性信息

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/44685.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/44685.shtml
英文地址,請注明出處:http://en.pswp.cn/web/44685.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

15 - matlab m_map地學繪圖工具基礎函數 - 一些數據轉換函數(二)

15 - matlab m_map地學繪圖工具基礎函數 - 一些數據轉換函數(二) 0. 引言1. 關于m_geodesic2. 關于mygrid_sand23. 結語 0. 引言 通過前面篇節已經將m_map繪圖工具中大多繪圖有關的函數進行過介紹,已經能夠滿足基本的繪圖需求,本節…

探索 `DatagramSocket` 類

DatagramSocket 類是 Java 網絡編程中的一個關鍵組件,專門用于處理 UDP(用戶數據報協議)通信。與基于連接的 TCP 不同,UDP 是一種無連接協議,適用于對速度和效率要求較高,但對可靠性要求相對較低的場景。 …

【JavaScript】包裝類

包裝類 JS 提供了三個主要的包裝類:String、Number、Boolean。如果嘗試把原始類型(string、number、boolean)數據當成對象使用,JS 會自動將其轉換為對應包裝類的實例。 我們先來看一下 “基本類型數據” 及 “其包裝類的實例” …

個人倒計時頁面源碼,實用倒計時單頁源碼

一、源碼描述 這是一款非常實用的個人倒計時頁面,支持設置未來一年時間,支持設置背景音樂,支持自定義下拉頁面,點擊向下箭頭查看。 二、源碼截圖 三、源碼下載

docker 常用命令,后面不斷更新

1.從Docker容器中下載文件到本地的方法 使用 docker cp 命令:該命令可以將文件或目錄從容器復制到主機。該方法簡單快捷,適用于少量文件的下載。 # 將容器名為my_container中的 /data/file.txt文件復制到本地/path/to/save/file.txt docker cp my_container:/data/…

深入探討【C++容器適配器】:現代編程中的【Stack與Queue】的實現

目錄 一、Stack(棧) 1.1 Stack的介紹 1.2 Stack的使用 1.3 Stack的模擬實現 二、Queue(隊列) 2.1 Queue的介紹 2.2 Queue的使用 2.3 Queue的模擬實現 三、容器適配器 3.1 什么是適配器 3.2 為什么選擇deque作為stack和…

kylin入門教程

Apache Kylin的入門教程主要涵蓋以下幾個方面: 一、Apache Kylin簡介 Apache Kylin是一個開源的分布式分析引擎,提供Hadoop之上的SQL接口及多維分析(OLAP)能力以支持超大規模數據。最初由eBay Inc.開發并貢獻至開源社區&#xf…

基于Vue和UCharts的前端組件化開發:實現高效、可維護的詞云圖與進度條組件

基于Vue和UCharts的前端組件化開發:實現高效、可維護的詞云圖與進度條組件 摘要 隨著前端技術的迅速發展和業務場景的日益復雜,傳統的整塊應用開發方式已無法滿足現代開發的需求。組件化開發作為一種有效的解決方案,能夠將系統拆分為獨立、…

Shell基礎之函數和數組

目錄 函數 什么是函數 函數的語法 函數的調用 函數的返回值 函數的案例 函數變量的作用域 遞歸函數 函數庫文件 數組 定義數組語法 數組操作 獲取所有元素 獲取元素下標 獲取數組長度 獲取數組元素 數組添加元素 刪除數組元素 刪除數組 遍歷數組元素 數組案…

解決pycharm無法識別miniconda

解決pycharm無法識別miniconda 找到miniconda安裝目錄下condabin/conda.bat文件,點擊load即可識別codna環境 a環境

Spring Boot(七十九):SprngBoot整合Apache tika做文件類型檢測

之前有一個章節介紹了Apache tika實現文檔內容解析,地址如下:Spring Boot(六十八):SpringBoot 整合Apache tika 實現文檔內容解析_springboot tika pptx-CSDN博客 下面我們介紹Apache tika實現文件類型檢測 1 引入依賴 <dependency><groupId>org.apache.tika&…

Docker 掛載目錄空間占滿修改/var/lib/docker/overlay2 的路徑解決方案

本文詳細描述了在CentOS7系統中卸載舊版Docker、安裝依賴、添加Docker源、配置存儲路徑并啟動Docker&#xff0c;使其在/home目錄下運行的過程。 以下是在CentOS 7下重新安裝Docker并將其安裝在/home/下的完整步驟&#xff1a; 卸載舊版本的Docker。如果您之前已經安裝了Dock…

仕考網:沒有學位證能考公務員嗎?

公務員考試需要滿足報名條件才能參加&#xff0c;沒有學位證能考公嗎? 沒有學位證書的考生也有機會參與公務員考試雖然可以選擇的崗位比較少&#xff0c;但可以報考參加那些不設定學位要求的崗位。當發布的公務員招錄信息中某一職位的學位要求標注為“無要求”時&#xff0c;…

【C++】:繼承[下篇](友元靜態成員菱形繼承菱形虛擬繼承)

目錄 一&#xff0c;繼承與友元二&#xff0c;繼承與靜態成員三&#xff0c;復雜的菱形繼承及菱形虛擬繼承四&#xff0c;繼承的總結和反思 點擊跳轉上一篇文章&#xff1a; 【C】&#xff1a;繼承(定義&&賦值兼容轉換&&作用域&&派生類的默認成員函數…

MATLAB Gazebo聯合仿真

準備仿真環境&#xff1a;在Gazebo中設置仿真場景&#xff0c;包括機器人模型、環境布局、傳感器和執行器等。編寫MATLAB腳本&#xff1a;在MATLAB中編寫控制算法和數據處理腳本&#xff0c;用于接收Gazebo中的傳感器數據&#xff0c;并生成控制命令。建立通信&#xff1a;通過…

DEBUG:jeston卡 遠程ssh編程

問題 jeston 打開網頁 gpt都不方便 而且只需要敲命令就行 解決 下載MobaXterm(window執行) liunx需要虛擬機 軟件 遠程快速復制命令

PHP文字ocr識別接口示例、人工智能的發展

全球在人工智能升級的大背景下&#xff0c;有一定規模的制造商開始大量部署人工智能機器人、系統&#xff0c;以此取代危險、簡單和重復性的工作。各種人工智能技術的迅猛發展&#xff0c;正在驅動各行業就業市場發現變革。 京東物流大家并不陌生&#xff0c;京東快遞機器人在…

vue中table內容和lable對不齊解決方案

問題&#xff1a; 代碼片段&#xff1a; <template><el-table :data"tableData" stripe style"width: 100%"><el-table-column prop"title" label"標題" width"80px" /><el-table-column prop"n…

Windows安全日志導致環境內存占用過高

Windows 環境內存占用高不釋放&#xff0c;目前遇到的常見情況如下&#xff1a; 情況一&#xff1a;JVM內存泄漏 這種網上的排查方式有很多&#xff0c;自行查閱即可 情況二&#xff1a;SQLserver內存配置過大 這種也是&#xff0c;從網上查找修改方式然后修改即可 情況三…

python的面向對象編程

為什么要面向對象編程&#xff1f; 偉大的領袖毛澤東曾說過&#xff1a;編程最大的敵人是重復。 最開始&#xff0c;在程序中寫的一條條語句&#xff0c;在執行的時候會變成一條條指令交給CPU執行。這就是**“程序是指令的集合”** 。為了簡化程序的設計&#xff0c;引入了函數…