雙子星座

           

          商業(yè)智能平臺研究(八) ETL 之metadata

          商業(yè)智能平臺研究(八)  ETL 之metadata
          metadata
          網(wǎng)上有很多寫metadata的文章,如果覺得我沒有寫清楚,也可以參考一下其他人的文章,
          元數(shù)據(jù)的定義就是:描述數(shù)據(jù)的數(shù)據(jù),你非要問什么描述元數(shù)據(jù),還是元數(shù)據(jù)本身,UML中也有這種概念,只不過是描述的對象不一樣罷了。

          讓我們解釋的更加通俗易懂一些吧,在javaSE中也有metadata的概念,最早的就算是JavaDoc了,在5.0之后,Annotation就是 大量的使用metadata了,這是關于源代碼的數(shù)據(jù),具體來說就是關于Java的類、方法、字段等關聯(lián)的附加數(shù)據(jù)。這些數(shù)據(jù)可以被Java的編譯器或者 其它工具(比如Java IDE 象eclipse+junit一樣)來發(fā)現(xiàn)和使用。
          junit在4.0后也使用了Annotation也算是metadata的一種應用。
          可見metadata并不是什么高不可攀的技術,我們時刻都在使用。

          再來看看metadata在BI系統(tǒng)上的定義吧 , 如果你覺得下面這段話很無聊,請直接跳過下面這段 。
          元數(shù)據(jù)(Metadata)是關于數(shù)據(jù)、操縱數(shù)據(jù)的進程,以及應用程序的結(jié)構(gòu)、意義的描述信息,其主要目標是提供數(shù)據(jù)資源的全面指南。元數(shù)據(jù)是描述數(shù)據(jù)倉 庫內(nèi)數(shù)據(jù)結(jié)構(gòu)和建立方法的數(shù)據(jù),可將其按用途分為兩類:技術元數(shù)據(jù)(Technical Metadata)、業(yè)務元數(shù)據(jù)(Business Metadata)和內(nèi)聯(lián)映射元數(shù)據(jù)(Inter-Mapping Metadata)。
          技術元數(shù)據(jù)是存儲關于數(shù)據(jù)倉庫系統(tǒng)技術細節(jié)的數(shù)據(jù),是用于開發(fā)和管理數(shù)據(jù)倉庫的數(shù)據(jù),主要包括數(shù)據(jù)倉庫結(jié)構(gòu)的描述(各個主題的定義,星型模式或雪花型模式 的描述定義等)、ODS層(操作數(shù)據(jù)存儲ODS .Operation Data Storage)的企業(yè)數(shù)據(jù)模型描述(以描述關系表及其關聯(lián)關系為形式)、對數(shù)據(jù)稽核規(guī)則的定義、數(shù)據(jù)集市定義描述與裝載描述(包括Cube的維度、層 次、度量以及相應事實表、概要表的抽取規(guī)則)。另外,安全認證數(shù)據(jù)也作為元數(shù)據(jù)的一個重要部分進行管理。
          業(yè)務元數(shù)據(jù)從業(yè)務角度描述了數(shù)據(jù)倉庫中的數(shù)據(jù),它提供了介于使用者和實際系統(tǒng)之間的語義層,使得不懂計算機技術的業(yè)務人員也能夠理解數(shù)據(jù)倉庫中的數(shù)據(jù)。業(yè) 務元數(shù)據(jù)包括以下信息:使用者的業(yè)務術語所表達的數(shù)據(jù)模型、對象名和屬性名;訪問數(shù)據(jù)的原則和數(shù)據(jù)來源;系統(tǒng)所提供的分析方法及公式、報表信息。
          內(nèi)聯(lián)映射元數(shù)據(jù)(Inter-Mapping Metadata)實現(xiàn)技術元數(shù)據(jù)與業(yè)務元數(shù)據(jù)的層間映射,使得信息系統(tǒng)的概念模型與物理模型相互獨立,使企業(yè)的概念、業(yè)務模型重組,以及物理模型的變化相互透明。
          內(nèi)聯(lián)映射元數(shù)據(jù)從技術上為業(yè)務需求驅(qū)動、企業(yè)數(shù)據(jù)驅(qū)動的雙驅(qū)動建設模型提供了重要保證,使信息系統(tǒng)的建設具有更高的靈活性與適應性


          元數(shù)據(jù)是跟特定的數(shù)據(jù)對象有關的,換句話說,talend和kettle的元數(shù)據(jù)就是不一樣的。ETL的元數(shù)據(jù)就和pentaho report 的元數(shù)據(jù)不一樣,因為他們要描述的東西不一樣。這些元數(shù)據(jù)的存儲格式可以有多種,可以儲存成XML格式的也可以是放在數(shù)據(jù)庫里面的。事實上這兩種最通用 的,也是可以互補的兩種,沒有誰比誰重要之說。
          metadata儲存在repository的地方,我不知道是不是所有的ETL工具都喜歡這么叫.每個repository都會選用數(shù)據(jù)庫來儲存,他們 都是按照一定的格式,這些格式最后也是可以變成XML形式的.這是看每個工具的支持程度,kettle 就支持導出到XML格式,其他的工具我就不知道了.

          具體解釋到kettle來說,metadata就是你定義的每一個動作.kettle的repository里面有如下一些表,我沒有列出全部,從表的結(jié)構(gòu)看一下kettle的metadata有哪些
          1. R_DATABASE            R_DATABASE_ATIRIBUTE        R_DATABASE_CONTYPE        R_DATABASE_TYPE
          2. R_JOB            R_JOB_HOP            R_JOBENTRY            R_JOBENTRY_ATIRIBUTE            R_JOBENTRY_TYPE
          3. R_LOG            R_LOGLEVEL
          4. R_STEP            R_STEP_DATABASE
          5. R_TRANS_ATIRIBUTE        R_TRANS_HOP            R_TRANS_CONDITION
          6. R_USER            R_VALUE                R_PERMISSION
          7. R_CLUSTER            R_CLUSTER_SLAVE            R_SLAVE
          8. R_PARTITION            R_PARTITION_SCHEMA

          1 . database的鏈接信息.在R_DATABASE_TYPE 表里面包含了所有支持的數(shù)據(jù)庫鏈接信息,一共是25種,算是支持非常的多了.

          2. 任務設計部分的表,R_JOB_HOP 是指兩個數(shù)據(jù)之間的鏈接部分, R_JOBENTRY_TYPE 是目前支持的操作種類,一共有27種,包括Transformation , Job , Shell , Mail , SQL ,FTP ,Table exists ,File Exists , JavaScript , Secure FTP , HTTP , Create File , Delete File , Wait for File , Put a file with SFTP , File Compare , BulkLoad into Mysql , Display Msgbox Info , Wait for , Zip file , XSL Transformatio, BulkLoad from Mysql into File , Abort Job , Get mails from POP , Ping a host , Dummy Job Entry .
          其中BulkLoad 只跟Mysql有關,我感覺很奇怪,BulkLoad 是數(shù)據(jù)庫批量處理的方式,大型數(shù)據(jù)庫都是支持的,比如oracle就有sqlloader來支持批量處理,其他的大型數(shù)據(jù)庫應該也有吧,而且在 transform里面kettle也有oracle的支持,在任務設計的時候就只有mysql的支持,不知道什么原因.
          最后一個Dummy Job Entry 就是什么都不做.

          3. Log記錄,loglevel 一共有6種,Nothing at all , Minimal loggin , Basic loggin , Detailed loggin , Debugging , RowLevel(very detailed).根據(jù)你自己的需要來選擇log的級別.

          4. 每一步操作的表格與你使用的數(shù)據(jù)庫

          5. 轉(zhuǎn)換的定義.一共有70種不同的轉(zhuǎn)化,你不會想看到全部列出來的,其中有幾種很有用的,比如DimensionLookup , 它的解釋就是"在一個數(shù)據(jù)倉庫里更新一個漸變維,或者在這個維里查詢信息.
            還有基于關鍵字刪除記錄,
            cuebOutput, 把數(shù)據(jù)寫入一個cube,
            從一個excel文件讀數(shù)據(jù),執(zhí)行一個sql腳本,調(diào)用數(shù)據(jù)庫的儲存過程,
            OraBulkLoader ,調(diào)用oracle 的bulk loader to load data ,(應該是指Oracle的SQLLOADER吧).
            ProSAPCONN, 從一個SAP系統(tǒng)取數(shù)據(jù).
            MergeRows,合并兩個數(shù)據(jù)流, 并根據(jù)某個關鍵字排序.  這兩個數(shù)據(jù)流被比較,以標識相等的、變更的、刪除的和新建的記錄.

          插一句關于merge的概念,從網(wǎng)上copy下來的:
          MERGE語句是Oracle9i新增的語法,用來合并UPDATE和INSERT語句。通過MERGE語句,根據(jù)一張表或子查詢的連接條件對另外一張表 進行查詢,連接條件匹配上的進行UPDATE,無法匹配的執(zhí)行INSERT。這個語法僅需要一次全表掃描就完成了全部工作,執(zhí)行效率要高于INSERT+ UPDATE。
           
          6. 用戶與權限.一開始建立的用戶有兩種,admin和guest ,權限有5種,Read only access , Administrator , Use transformations , Use Jobs , Use schemas .

          7. pentaho官方網(wǎng)站上面有一個新聞是關于在mysql的
          Kettle集群新記錄:
          最近Kettle集群基于 Amazon Elastic Computing Cloud做了一次測試,單臺服務器輸出4000 rows/sec ,數(shù)據(jù)庫為MySQL. 如果你發(fā)送數(shù)據(jù)通過sockets從一個master到5個slave servers, 你將獲得 5x4000 row inserts/sec。集群的效果非常好.

          我個人也做過測試。數(shù)據(jù)庫是oracle 10.2.0.1,內(nèi)網(wǎng)連接,從一臺機器的oracle到本地機器,沒有集群,速度也大概是4000 多一點 ,數(shù)據(jù)量大概是16萬。

          8 . 數(shù)據(jù)庫分區(qū)是數(shù)據(jù)庫的高級特性之一,oracle的XE版和Enterprise版本的有一個差別就是XE版不支持分區(qū)。


          kettle還支持metadata搜索,可搜索的選項包括步驟,數(shù)據(jù)庫連接和注釋 ,可見metadata對于ETL的重要性就是它能夠更好的管理你的數(shù)據(jù),而不只是讓你的數(shù)據(jù)呆在數(shù)據(jù)庫里面。kettle對與數(shù)據(jù)庫的元數(shù)據(jù)管理并不是 很好,所謂數(shù)據(jù)庫的元數(shù)據(jù)就比如數(shù)據(jù)庫中表的名字,每一個column的信息,column的長度,每一個表的constrain,index等,而只有 提供這些信息的管理才能夠?qū)TL過程做的更好。下一篇介紹ETL質(zhì)量控制的時候會看到oracle warehouse builder 對于這些數(shù)據(jù)管理是多么的強大,目前kettle的能力還不能算是非常的強大的。

          pentaho平臺本身還有一種metadata , 在官方主頁上是這么寫的:
                 pentaho metadata的能力是讓管理員定義一個抽象層來顯示數(shù)據(jù)庫信息和商業(yè)流程,管理員用關系型數(shù)據(jù)庫的表來表現(xiàn)相互之間的關系,為了復雜和含義模糊的數(shù)據(jù) 庫表和列而創(chuàng)建商用術語,為特性用戶而設定權限參數(shù),指定默認的數(shù)據(jù)格式,為多種語言部署提供翻譯,商業(yè)用戶可以使用pentaho新的ad hoc query能力查詢他們想要的報表,比如訂單的數(shù)量和按地區(qū)排序的客戶開銷,SQL可以自動取得這些信息。

          數(shù)據(jù)倉庫的建模也需要用到metadata, oracle的數(shù)據(jù)倉庫建模就是用的一種叫 Common Warehouse Metamodel 的metadata , CWM提供一個數(shù)據(jù)倉庫的標準讓不同的廠商集成和管理他們的數(shù)據(jù),CWM建立在開發(fā)的標準XMI(XML for Metadata interchange)  XML 和 UML2 作為建模語言。CWM 用UML2 定義一組核心類,這些類分作package(或者叫做子模型submodels),每一個提供一個特定的數(shù)據(jù)倉庫的domain , 比如 Relational , OLAP ,Transformation , CWM 提供一個強大的數(shù)據(jù)模型來實現(xiàn)數(shù)據(jù)倉庫的Extraction , transformation , loading , integration and analysis   ,沒有一個單獨的模型能夠滿足各種應用程序和開發(fā)工具的需求,但是CWM 為這些工具提供特定的擴展,它被設計用來支持關于metadata的快速開發(fā),使用戶能夠通過擴展來滿足他們的需求。(上面這段話翻譯自http: //www.corba.org/vendors/pages/oracleCWM.html , 翻譯的不是很好,如果各位有興趣可以自己去看看)

          下一篇介紹ETL的數(shù)據(jù)質(zhì)量控制。


          posted on 2007-05-22 21:39 gemini 閱讀(600) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           

          導航

          統(tǒng)計

          常用鏈接

          留言簿(3)

          隨筆檔案

          相冊

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 巫山县| 仪陇县| 和政县| 本溪| 泾川县| 潢川县| 广汉市| 西安市| 云霄县| 大渡口区| 丰县| 建德市| 佛冈县| 监利县| 武鸣县| 孟州市| 沁阳市| 龙井市| 黑山县| 石泉县| 临沧市| 宁阳县| 米易县| 乾安县| 江安县| 龙口市| 宜兰县| 望城县| 政和县| 麦盖提县| 文昌市| 平谷区| 临泽县| 宁化县| 龙山县| 平塘县| 汉阴县| 博客| 灵璧县| 博白县| 北流市|