美團點評酒旅數據倉庫建設實踐
在美團點評酒旅事業群內,業務由傳統的團購形式轉向預訂、直連等更加豐富的產品形式,業務系統也在迅速的迭代變化,這些都對數據倉庫的擴展性、穩定性、易用性提出了更高要求。對此,我們采取了分層次、分主題的方式,本文將分享這一過程中的一些經驗。
技術架構
隨著美團點評整體的系統架構調整,我們在分層次建設數據倉庫的過程中,不斷優化并調整我們的層次結構,下圖展示了技術架構的變遷。
我們把它們簡稱為三代數倉模型層次。在第一代數倉模型層次中,由于當時美團整體的業務系統所支持的產品形式比較單一(團購),業務系統中包含了所有業務品類的數據,所以由平臺的角色來加工數據倉庫基礎層是非常合適的,平臺統一建設,支持各個業務線使用,所以在本階段中我們酒旅只是建立了一個相對比較簡單的數據集市。
但隨著美團原本集中的業務系統不能快速響應各個業務線迅速的發展與業務變化時,酒旅中的酒店業務線開始有了自己的業務系統來支持預訂、房惠、團購、直連等產品形式,境內度假業務線也開始有了自己的業務系統來支持門票預訂、門票直連、跟團游等復雜業務。我們開始了第二代數倉模型層次的建設,由建設數據集市的形式轉變成了直接建設酒旅數據倉庫,成為了酒旅自身業務系統數據的唯一加工者。由于系統調整初期給我們帶來的重構、修改以及新增等數據處理工作非常大,我們采用了比較短平快的Kimball所提的維度建模的方式建設了酒旅數據倉庫。
在第二代數倉模型層次運轉一段時間后,我們的業務又迎來了一個巨大的變化,上海團隊和我們融合了,同時我們酒旅自身的業務系統重構的頻率相對較高,對我們的數倉模型穩定性造成了非常大的影響,原本的維度模型非常難適配這么迅速的變化。下圖就是我們數倉模型當時所面臨的挑戰:
于是我們在ODS與多維明細層中間加入了數據整合層,參照Bill Inmon所提出的企業信息工廠建設的模式,基本按照三范式的原則來進行數據整合,由業務驅動調整成了由技術驅動的方式來建設數據倉庫基礎層。下圖是該層次的一些描述:
使用本基礎層的最根本出發點還是在于我們的供應鏈、業務、數據它們本身的多樣性,如果業務、數據相對比較單一、簡單,本層次的架構方案很可能將不再適用。
業務架構
下面介紹我們的主題建設,實際上在傳統的一些如銀行、制造業、電信、零售等行業里,都有一些比較成熟的模型,如耳熟能詳的BDWM、FS-LDM、MLDM等等模型,它們都是經過一些具有相類似行業的企業在二三十年數據倉庫建設中所積累的行業經驗,不斷的優化并通用化。但我們所處的O2O行業本身就沒有可借鑒的成熟的數據倉庫主題以及模型,所以,我們在摸索建設兩年的時間里,我們目前總結了下面比較適合我們現狀的七大主題(后續可能還會新增):
參與人主題
用戶子主題:使用我們服務的所有人都是我們的用戶,這是我們數據中至關重要的實體,也是我們數倉中非常重要的一個主題,對用戶數據的系統化建設能夠很好的幫助我們企業快速的發展,不斷提高用戶的體驗、擴大我們的用戶群。
BD子主題:通過BD的業務擴展,建立我們與商戶之間的關系,讓用戶通過我們的服務訪問到商戶所發布的信息,對BD數據的建設,能夠讓我們的商戶覆蓋更加迅速、讓我們和商戶之間的關系更加緊密。
供應商子主題:供應商無論作為直簽還是作為三方簽約對象,對我們的業務發展都非常重要,通過對其數據的建設,可以讓我們彼此雙贏,通過我們的平臺讓雙方的業務迅速發展。
流量主題
用戶通過App或PC或I版、微信等等形式訪問我們的服務,形成了對我們企業至關重要的流量,本主題也是比較具有互聯網特色的主題,對于流量的數據建設能夠讓我們不斷優化我們的產品、服務,給我們帶來更多的流量、更快的擴張。
訂單主題
當用戶給我們帶來流量的同時,他們也會產生交易,訂單主題的獨立建設以及其重要性我這里就不再贅述了,在所有的互聯網以及傳統公司里,該主題都是至關重要的。
POI主題
這個主題也具有我們自身的O2O特色,實際上這個主題與阿里的商家主題比較類似但又具備自己的特點,對于POI自身的重要性就不再過多介紹,通過對POI的數據集中建設能夠讓我們給POI帶去更好的服務與回報。
產品主題
與POI強相關的就是產品了,如何讓產品能夠更加的貼近用戶的需求以及產生更多的交易、流量,產品數據主題的建設及目的的意義就在于此。
運營主題
我們的業務發展將不再依靠粗暴的補貼式的擴張發展模式,需要依賴現在的精細化運營方式,運營數據主題的建設就有了非常強的必要性,通過數據進行精細化運營已經成為我們運營的主要發展趨勢。
結算主題
實際上,這個主題在傳統企業里面如銀行、電信等等都是至關重要的,對我們酒旅而言,建設它的意義能夠不斷優化商家體驗、提高財務結算與管理能力。
整體架構
我們的七個主題基本上都采用6層結構的方式來建設,劃分主題更多是從業務的角度出發,而層次劃分則是基于技術,實質上我們就是基于業務與技術的結合完成了整體的數據倉庫架構。下面介紹一下具體的一些主題案例:
訂單主題
在訂單主題的建設過程中,我們是按照由分到總的結構思路來進行建設,首先分供應鏈建設訂單相關實體(數據整合中間層3NF),然后再進行適度抽象把分供應鏈的相關訂單實體進行合并后生成訂單實體(數據整合層3NF),后續在數據整合層的訂單實體基礎上再擴展部分維度信息來完成后續層次的建設。
流量主題
流量主題與訂單主題的區別是非常大的,它的數據來源具有一定的特殊性,我們的總體建設思路是總-分-總的思路,首先從總的日志數據中剝離出來屬于酒旅事業群的數據,后續再從這些數據中分拆到各個具體的頁面(可以適當補充些各個頁面中所具有的B端信息,如POI詳情頁中增加POI品類信息),最后再把各個頁面進行合并生成總的日志主題表(最終這張表會滿足80%以上的相關流量統計需求)。
運營主題
運營主題與訂單、流量主題相比也具有自身的特殊性,主要原因也在于其數據來源本身的特殊性,關于它的建設思路總體也是總-分-總,但我們本身的數據來源大多已經不是最底層的ODS數據,而是一些已經加工過的事實表或維度表,所以我們整體的建模原則基本上都是維度建模。
基于上面介紹的幾個主題,我們實際上在做分主題的層次架構時也是基于本主題的業務、數據特點作為最終的判斷條件,沒有絕對的一種層次架構適用于所有的主題,需要綜合各項要素來進行綜合判斷才能設計比較合適的層次架構。
作者簡介
德臣,美團點評酒旅事業群數據倉庫專家,2003年畢業于湖南大學,2015年加入美團,整體負責酒旅事業群的離線數據倉庫、實時數據倉庫建設。
酒旅數據倉庫團隊,結合酒旅業務的發展,靈活利用大數據生態鏈的相關技術,致力于離線數據倉庫與實時數據倉庫的建設,為業務提供多樣化的數據服務。
最后發個廣告,美團點評酒旅數據倉庫團隊長期招聘數據倉庫、大數據開發、數據產品開發等方向的技術專家,有興趣的同學可以發送簡歷到yangdechen#meituan.com。
不想錯過技術博客更新?想給文章評論、和作者互動?第一時間獲取技術沙龍信息?
請關注我們的官方微信公眾號“美團點評技術團隊”。現在就拿出手機,掃一掃:
來自:http://tech.meituan.com/hotel_dw_layer_topic.html