主題數據區的設計

主題數據區的設計

來自專欄 AirData大數據平台團隊

關於主題數據區的設計,首先需要明確的是按照什麼對數據進行歸類。大的原則,當然還是按照業務來分類,但是分類的出發點不同,劃分的類別也不相同。例如針對機場數據,可以從業務特徵分類,那麼可以分為運行保障、旅客服務、航班資源等;如果按照功能區分類,則可以分為空側、陸側、航站樓側等。

不管採用什麼原則對數據進行分類,我認為都需要遵循以下兩個原則:

  • 保證數據的分類是正交的:正交的數據分類可以避免數據的重複。例如航班與旅客存在關聯關係,但只允許這二者之間存在一個交點,旅客的信息不允許出現在航班中,航班的信息也不允許出現在旅客中。如果需要,通過主外鍵關聯。
  • 保證數據類別的抽象層次處於同一個層次:這是SLAP(單一抽象層次原則)的體現,如果數據類別的層次不一致,就會失去數據的平衡。例如航班主題與貨運主題就不在一個抽象層次上,貨運主題與行李主題為同一抽象層,兩者的共同抽象為物流,物流主題與航班主題才是同一個抽象層次。

當然,對於主題數據區的數據,從分類的依據看,在滿足以上兩個原則的基礎上,我認為還是應貼近數據特徵的角度進行類別劃分,並盡量保障數據的類別是正交的,同時在保證數據存取性能的前提下,力求更細的數據粒度。而在數據集市區,才會根據不同的業務流程、業務目標去建立集市。建立集市的基礎是主題數據,一個正交的主題數據(甚至可能遵循三範式)才能更好地滿足集市的業務需求,對其進行重用。

所謂「數據特徵」,就是該數據的本質屬性,是體現了最基礎特徵信息的數據。這就要求對數據進行抽象,撇開數據源對業務的影響,也要撇開業務場景對分類的影響。可能符合某個數據特徵的數據同時來自多個系統,也可能它同時為多個業務場景提供服務。在機場數據領域,最根本的具有本質屬性的數據就是:

  • 航班
  • 旅客
  • 物流
  • 資源
  • 氣象
  • ……

在確定了第一級主題(也可以認為是主題域,即subject area)後,在討論下一級數據分類時,我們出現了分歧。最初提出的類別草案中,將「航班旅客信息」放到了旅客主題中,該信息包括:

  • 值機截載旅客統計信息
  • 登機截載旅客統計信息
  • 起飛截載旅客統計信息
  • 實時旅客數據:如實時值機人數、實時登機人數、實時安檢人數
  • 累計旅客數據:如累計值機人數、累計登機人數、累計安檢人數

我認為這種劃分是不合理的,雖然這裡的信息都與旅客相關,但這些信息並非旅客的明細數據,同時它又與具體某個航班是粘連在一起的。到底該怎麼歸屬呢?類似這樣的場景,旅客的一些數據在特性上無法清晰地界定到底屬於哪一個主題,因為在關係上,可能這些數據屬性與兩個乃至多個主題都存在一定關係,分類時就容易混淆。

我提出了解決此類數據分類的兩個原則:

  • 主次之分:判斷該數據屬性所關聯的主題究竟以誰為主。以航班旅客信息為例,我們應該思考這些信息到底是以航班為主,還是旅客為主?
  • 強弱之分:判斷該數據屬性與哪一個主題關聯更強,哪一個主題關聯更弱。若還是無法分清,可以看看當變化發生時,對誰的影響更大? 仍然以航班旅客信息,如這裡的截載旅客統計信息,究竟是與航班關聯更緊密,還是與旅客關聯更緊密?從變化上看,可能更清楚。例如當實時值機人數發生了變更,究竟是對當前航班影響更大,還是對某位旅客的信息影響更大?

不言而喻,無論是「主次之分」還是「強弱之分」,我們都可以清晰地分辨出航班旅客信息更多地是與航班相關,故而應分屬於「航班」主題。


推薦閱讀:

《產品故事地圖》讀書筆記
第二期開源項目招募
移動端交互動效設計你怎麼看?
「器」四分鐘認識一款設計資訊聚合神器:Feedly
【CSS】使用css grid快速排版 CSS Grid

TAG:設計 | 產品設計 | 交互設計 |