# Hadoop離線數據分析平臺實戰——230項目數據存儲結構設計

Hadoop離線數據分析平臺實戰——230項目數據存儲結構設計

數據存儲設計

在本次項目中設計到數據存儲的有三個地方:
第一個就是將原始的日志數據按天保存到hdfs文件系統中;
第二個就是將etl解析后的數據保存到hbase中;
第三個就是將分析結果保存到mysql數據庫中。
其中存儲到hbase和mysql的這兩個過程需要設計具體的存儲結構。

HBase表結構設計

由于我們需要按天進行數據分析,
所以我們的hbase的rowkey中必須包含時間戳或者我們一天的數據就建立一個表。
這里我們采用在rowkey中包含時間戳的方式來進行講解;
另外hbase要求列簇一般盡量的少而且短,我們這里采用log來標示列簇。
所以最終我們創建一個單列簇的rowkey包含時間戳的eventlog表。
命令如下:
create 'eventlog', 'log'。rowkey設計規則為:timestamp+uuid.hashcode+random(4)

MySQL表結構設計

在mysql中我們采用維度信息表+統計分析結果表+分析輔助表三類表組成。
其中維度信息表用于存儲維度相關信息,名稱格式為:dimension_*
統計分析結果表用戶存儲最終的統計分析結果,以dimension維度id做主健,名稱格式為:stats_*
分析輔助表主要用戶在分析過程中使用到的其他輔助類型表。

MySql維度信息表設計

根據我們最終統計的維度信息來看,我們分別需要創建以下八個維度表:
平臺維度(platform),時間維度(date),瀏覽器維度(browser),地域維度(location),支付方式維度(payment),貨幣類型維度(currency_type),event維度(event),外鏈維度(inbound)。
另外還分別需要一個kpi維度和一個操作系統維度(os)表。
注意os表在本次項目中不會用到。

最終統計分析模塊和維度表關系

分析模塊 相關維度表
用戶基本信息分析 platform、date
瀏覽器信息分析 platform、date、browser
地域信息分析 platform、date、location
用戶瀏覽深度分析 platform、date、kpi
外鏈信息分析 platform、date、inbound
訂單信息分析 platform、date、currency_type、payment
事件分析 platform、date、event

MySql統計分析結果表設計

我們最終需要進行七個模塊的數據分析,
這七個模塊的展示數據最終是從我們的mysql數據庫中獲取的,
那么接下來就分別從這七個模塊來分析對應的mysql表結構設計。

用戶基本信息分析模塊表結構設計

用戶基本信息分析模塊中要求數據庫對應表有以下幾個維度的數據:
新增用戶數、活躍用戶數、總用戶數、新增會員數、活躍會員數、總會員數、會話個數、會話長度這八個統計指標,
除此之外還需要platform和date這兩個維度信息id以及created字段來標示修改時間。
其中通過platform和date這兩個字段信息來唯一確定表數據,
設計表名為: stats_user。
除了這個表以外,由于我們還需要統計分時段的數據信息,故還要求有一個分時存儲統計數據的表,設計表名為:stats_hourly。

stats_user表結構

列名 類型 默認值 描述
platform_dimension_id int(11) 非空,0 平臺id,pkey
date_dimension_id int(11) 非空,0 日期id,pkey
active_users int(11) 空。0 活躍用戶數
new_install_users int(11) 空。0 新增用戶數
total_intall_users int(11) 空。0 總用戶數
sessions int(11) 空。0 會話個數
sessions_length int(11) 空。0 會話長度
total_members int(11) 空。0 總會員數
active_members int(11) 空。0 活躍會員數
new_members int(11) 空。0 新增會員數
created date 空。null 記錄日期

瀏覽器信息分析模塊表結構設計

瀏覽器信息分析和用戶基本信息分析基本類型,
也包含以下幾個維度的數據:
新增用戶數、活躍用戶數、總用戶數、新增會員數、活躍會員數、總會員數、會話個數、會話長度這八個統計指標,
除此之外還需要一個pv計數的統計指標以及platform、date、browser這三個維度信息字段和create標示修改日期的字段。
其中通過platform、date和browser這三個字段信息來唯一確定表數據。
設計表名為: stats_device_browser

stats_device_browser表結構

列名 類型 默認值 描述
platform_dimension_id int(11) 非空,0 平臺id,pkey
date_dimension_id int(11) 非空,0 日期id,pkey
browser_dimension_id int(11) 非空,0 瀏覽器id,pkey
active_user int(11) 空,0 活躍用戶數
new_install_users int(11) 空,0 新增用戶數
total_intall_users int(11) 空,0 總用戶數
sessions int(11) 空,0 會話個數
sessions_length int(11) 空,0 會話長度
total_members int(11) 空,0 總會員數
active_members int(11) 空,0 活躍會員數
new_members int(11) 空,0 新增會員數
pv int(11) 空,0 pv數
created date 空,null 最后修改日期

地域信息分析模塊表結構設計

地域信息分析模塊只分析活躍用戶的地域分布情況以及跳出率相關分析,
故需要以下幾個統計指標:
活躍用戶數、會話個數、跳出會話個數。
除此之外需要platform、date、location這三個維度信息字段和create標示修改日期的字段。
其中通過platform、date和location這三個字段信息來唯一確定表數據。
設計表名為: stats_device_location

stats_device_location表結構

列名 類型 默認值 描述
platform_dimension_id int(11) 非空,0 平臺id,pkey
date_dimension_id int(11) 非空,0 日期id,pkey
location_dimension_id int(11) 非空,0 地域id,pkey
active_user int(11) 空,0 活躍用戶數
sessions int(11) 空,0 會話個數
bounce_sessions int(11) 空,0 跳出會話個數
created date 空,null 最后修改日期

用戶瀏覽深度分析模塊表結構設計

用戶瀏覽深度我們通過計算訪問不同數量頁面的用戶數/會話數來表示,
在本次項目中我們分為8個不同數量級的指標,
分別為:訪問1個pv、訪問2個pv、訪問3個pv、訪問4個pv,訪問5-10個pv(包含5但不包含10),訪問10-30個pv,訪問30-60個pv,訪問60+pv。
除此之外需要platform、date、kpi這三個維度信息字段和create標示修改日期的字段。
其中通過platform、date和kpi這三個字段信息來唯一確定表數據。
設計表名為: stats_view_depth

列名 類型 默認值 描述
platform_dimension_id int(11) 非空,0 平臺id,pkey
date_dimension_id int(11) 非空,0 日期id,pkey
kpi_dimension_id int(11) 非空,0 kpiid,pkey
pv1 int(11) 非空,0 訪問1個頁面
pv2 int(11) 非空,0 訪問2個頁面
pv3 int(11) 非空,0 訪問3個頁面
pv4 int(11) 非空,0 訪問4個頁面
pv5_10 int(11) 非空,0 訪問5-10個頁面
pv11_30 int(11) 非空,0 訪問11-29個頁面
pv30_60 int(11) 非空,0 訪問30-59個頁面
pv60plus int(11) 非空,0 訪問60+個頁面
created date 空,null 最后修改日期

外鏈信息分析模塊表結構設計

外鏈信息分析主要包括外鏈構成(偏好)分析和跳出率分析。
其中外鏈構成(偏好)我們通過活躍用戶數來標示,
需要我們需要幾下幾個統計指標:
活躍用戶數、會話個數、跳出會話個數。
除此之外需要platform、date、inbound這三個維度信息字段和create標示修改日期的字段。
其中通過platform、date和inbound這三個字段信息來唯一確定表數據。
設計表名為: stats_inbound

stats_inbound表結構

列名 類型 默認值 描述
platform_dimension_id int(11) 非空,0 平臺id,pkey
date_dimension_id int(11) 非空,0 日期id,pkey
inbound_dimension_id int(11) 非空,0 外鏈id,pkey
active_user int(11) 空,0 活躍用戶數
sessions int(11) 空,0 會話個數
bounce_sessions int(11) 空,0 跳出會話個數
created date 空,null 最后修改日期

訂單信息分析模塊表結構設計

訂單信息分析需要分析訂單數量和訂單金額相關統計信息,
故需要以下幾個指標的數據分析:
訂單數量、成功支付的訂單數量、退款訂單數量、訂單金額、成功支付金額、退款金額、總成功支付金額、總退款金額。
除此之外,我們還需要使用platform、date、currency_type和payment四個維度字段類表示確認唯一記錄。
另外需要添加一個created字段來表示數據日期。
表名設計為:stats_order

stats_order表結構

列名 類型 默認值 描述
platform_dimension_id int(11) 非空,0 平臺id,pkey
date_dimension_id int(11) 非空,0 日期id,pkey
currency_type_dimension_id int(11) 非空,0 貨幣類型id,pkey
payment_type_dimension_id int(11) 非空,0 支付類型id,pkey
orders int(11) 空,0 訂單數量
success_orders int(11) 空,0 成功支付的訂單數量
refund_orders int(11) 空,0 退款的訂單數量
order_amount int(11) 空,0 訂單金額
revenue_amount int(11) 空,0 支付金額
refund_amount int(11) 空,0 退款金額
total_revenue_amount int(11) 空,0 總的支付金額
total_refund_amount int(11) 空,0 總的退款金額
created date 空,null 最后修改日期

事件分析模塊表結構設計

在本次項目中,事件分析主要就是分析事件的觸發次數,
故對于的數據存儲結構為:times(觸發次數)以及platform、date、event三個維度字段和created字段,
表名設計為:stats_event

stats_event表結構

列名 類型 默認值 描述
platform_dimension_id int(11) 非空,0 平臺id,pkey
date_dimension_id int(11) 非空,0 日期id,pkey
event_dimension_id int(11) 非空,0 event維度id,pkey
times int(11) 空,0 觸發次數
created date 空,null 最后修改日期

MySql表結構設計總述

我們通過維度信息表和統計分析結果表的整合來保證我們數據展示的正常性,具體創建表結果的文件參考:
..\文檔\report.sql ;
其中我們創建數據庫的命令為:CREATE DATABASE report DEFAULT CHARACTER SET utf8 ;

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,825評論 6 546
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,814評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,980評論 0 384
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 64,064評論 1 319
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,779評論 6 414
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,109評論 1 330
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,099評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,287評論 0 291
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,799評論 1 338
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,515評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,750評論 1 375
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,221評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,933評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,327評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,667評論 1 296
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,492評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,703評論 2 380

推薦閱讀更多精彩內容