public class Customer {
private String id;
private String name;
private String address;
private String ID;
public Customer(String id, String name, String address, String ID) {
this.id = id;
this.name = name;
this.address = address;
this.ID = ID;

}
}
這里的 就是元數據的集合,而類的屬性就是元數據,用來描述數據是什么的問題。
二.元數據和數據
如果一條數據采用如下表示的時候:
1001 張三 深圳南山區高新南四道20號
這條數據并沒有任何含義,我們也不清楚該條數據所要表達的內容,但當我們換成如下的方式:
編號 姓名 地址 身份證
1001 張三 深圳南山區高新南四道20號
使用編號,姓名,地址,身份證來描述1001 張三 深圳南山區高新南四道20號 。這條數據就有了具體的含義,讓我們獲取到"編號1001的人的名字是張三,地址在深圳南山區高新南四道20號,身份證號"這樣的信息。這里類似與java代碼中的 = ('1001','張三','深圳南山區高新南四道20號',''); 是一個對象。簡單的總結就是當我們使用元數據+數據就形成了信息。
三.數據治理
數據不會無緣無故的產生,也不會自己表述其具有的含義,更不會自己管理自己,所以我們才會有數據治理。如果用數據庫的表設計來說明的話,我們大概分為三個部分,分別如下:
1.概念設計,主要用來描述業務對象或者業務關系
2.邏輯模型,通常指ER圖來描述概念設計的模型
3.物理模型,用來存儲ER圖實際的物理結構,包括存儲結構和存儲方法。
按照元數據的功能來劃分:1是業務元數據;2和3屬于技術元數據;還有一個是操作元數據,主要就是描述數據是怎么產生,如DB的日志,數據使用的時候安全,審計,血緣等信息。數據治理實際就是在管理業務元數據,技術元數據,操作元數據這三方面的內容。那么Atlas的數據治理,有提供了那些核心功能了?
1.Atlas認為數據治理有如下類型:
可以看出其包括了數據裝載名稱,數據庫名稱和權限擁有者,表名稱,視圖名稱,字段名稱,還有數據訪問方式,維度,度量,ETL這些分類特性等內容。
2.Atlas提供的核心功能如下圖:
從上往下,我們看到的是搜索,血緣,交換,知識存儲元數據管理工具 hadoop,審計,數據生命周期,訪問控制和策略。
2.1搜索:這里是指搜索對應的元數據,如下圖所示:
能夠方便的讓我們了解有什么數據。
2.2血緣:從數據產生,如ETL的過程,到數據的存儲,再到數據的使用。能夠方便的讓我們定位數據問題,是上游ETL,或者下游數據報表發生數據變化。
2.3.交換:和已有的元數據做對接,比如已經在SAS,BIEE中已經建好的元數據,可以直接導入到Atlas中,或者將Atlas中已有的元數據導出到其他。
2.4.知識存儲:數據存儲中,Atlas會根據自己的分類,策略規則,類型約束,或者元模型自動的進行存儲。例如如下類型的數據:
sales
Atlas將sales分類為度量。或者如下類型的數據:
name
Atlas將分類為PII( ,個人驗證信息),這里也是對外提供Rest Api服務的時候涉及的數據標準。另外自己感覺這里的知識存儲和DIKW中的K相似,都是讓我們知道這些數據如何去使用。
2.5.審計:審計是出于數據安全,隱私,或者法律政策。什么數據應該存,或者怎么存都會有一定的要求或者標準。例如如下類型的數據:
name ID
很顯然,,ID屬于敏感信息,是受隱私保護的。只可惜在中國對數據安全大家都不重視,比如在淘寶購買了商品,然后騙子獲取到了你未做敏感信息處理的訂單信息和身份信息,然后對你實施詐騙。
2.6.數據生命周期:數據是有時效性的,最簡單的例子就是如果你設計數據中心為3年的話,到第四年開始,在第一年進入數據中心的數據就可以轉做進線存儲或者離線存儲,即第一年的數據在這個數據中心的生命周期結束。更別說數據庫查詢中的臨時表,臨時為了某個業務場景驗證,做開發和測試,完成后就直接刪了,這種數據生命周期更短。
2.7.標簽策略:最簡單的標簽就是將元數據的分類,如元數據屬于,ETL。或者接6所說的,數據是有時效性的。例如市場部門往往關注今天有多少訂單產生,然后偶爾關注這個月產生了多少訂單,越往前的數據,使用頻率和訪問頻率越底。這里就可以對數據使用熱度標簽。
2.8.安全:也就是Atlas中的基于標簽的訪問控制,最簡單的標簽就是允許和不允許。數據應該只被該訪問的人訪問元數據管理工具 hadoop,如果一個用戶是報表用戶,那他就只能訪問那些的數據,而不會是其他數據,更別說不具有數據訪問權限的用戶。
上面只是簡單的介紹了Atlas是什么和具有的功能,我們來看個簡單的例子,業務人員想要了解“2015年12月1日廣東的空調銷售額是多少”,可以解析為如下內容:
a.時間:2015年12月1日(時間維度)
b.地區:廣東(地理維度)
c.產品:空調 (產品維度)
d.指標:銷售額
最終的數據類型呈現如下表示:
time sales
2015年12月1日 廣東 空調 xxx,xxx.xx元
那我們應該如何去實現?大概過程如下:1.查詢2015年12月1日所有的訂單 --> 2.過濾出其中客戶地址是廣東的訂單 --> 3.對這些訂單的銷售額進行求和。可是要完成這個報告接著發現有這些問題:訂單數據從那里來,怎么獲取,獲取后存儲到那里?實現過程大概如下:1.發現我們需要客戶表,產品表,訂單表的數據 --> 2.發現這3張表保存在銷售數據庫 --> 3.采用ETL,將數據加載到報表數據庫 --> 4.產生數據報告,結論。在這個過程中會涉及如下圖所示的元數據:
說明:這里對中的時間字段做了規范化設計,所以產生了時間維度表。
1.是表或者視圖名稱;
2.是字段名稱;
3.是分類特性;
4.是裝載名稱;
5.是數據庫名稱和元數據存儲。
Atlas采用Text File或者ORC File的方式,簡單表述如下圖所示:
可以看出,Atlas只是對元數據層進行操作,并不會直接操作到數據層。比如上面中的客戶表,可能有手機號,身份證號等字段,但是在"2015年12月1日廣東的空調銷售額是多少"這個業務中沒有任何作用,所以不會管理這兩個字段,或者初始設計的時候管理了這兩個字段,然后發現沒有使用到的時候可以進行del操作。注意,這里的del不涉及到數據層,不同于連接的mysql,直接操作的數據層,把表的列給刪除,只是刪除了元數據層。
從上面的例子就可以看出數據治理的好處:
1.數據整合:如果沒有元數據,你不可能把客戶表,訂單表的數據整合在一起,從而發現更多的數據價值;
2.數據追朔:報表數據庫中的客戶表的數據來源是否是銷售數據庫的客戶表數據;
其他還有數據質量,有助于數據理解,數據重用等。