etl演算法
『壹』 數據分析、數據挖掘、數據統計、OLAP 之間的差異是什麼告訴yunmar吧,親們!
OLAP的核心是"維", 可以說是多維分析, 它是讓分析人員從不同的角度, 不同的粒度查看數據倉庫中的數據, 所以他的實質是查詢數據, 但是這個查詢也是有技巧的, 需要理解業務, 理解業務之後,提出相應的假設, 然後通過特定維度的數據來驗證假設是否正確, 所以OLAP是分析思路是從假設到驗證,方法是查詢數據, OLAP里的模型是指多維數據模型, 通過哪些維度的數據來描述分析對象, OLAP的建模是指選擇哪些維度。
而數據挖掘主要不是查詢, 而是做更多的計算, 例如分類,回歸是擬合計算, 找到標簽與其他特徵的規律, 形成模型, 數據挖掘演算法會有很多迭代計算, 比OLAP的計算要復雜很多, 另外, 數據挖掘做的更多的是探索式的分析, 分析前是沒有假設的. 所以數據挖掘往往能發現一些人為經驗忽略的因素。
數據分析是指用適當的統計方法對收集來的大量第一手資料和第二手資料進行分析,以求最大化地開發數據資料的功能,發揮數據的作用。是為了提取有用信息和形成結論而對數據加以詳細研究和概括總結的過程。
廣義的數據分析,應當是包含數據挖掘和統計的。數據挖掘是面對海量數據時的有效工具,而數據統計是為分析過程提供可靠模型和結果檢驗的 有效工具。這兩個工具可以用在數據分析中,但不只用在數據分析中。數據分析就是數據到有效信息的過程。
數據統計。專注於建模及統計分析,通過概率、統計、離散等數學知識建立合理模型,充分發掘數據內容。例如用回歸分析,充分利用網站歷史數據,進行評估、預測、反向預測、發掘因素。利用貝葉斯方法建立模型來進行機器學習、聚類、垃圾郵件過濾等。常用工具如:SAS,R,SPSS。
『貳』 bi工程師,數據倉庫工程師,etl工程師有什麼區別
BI工程師、數據倉庫工程師、ETL工程師都屬於大數據工程技術人員,三種的主要區別如下:
一、工作內容不同
1、BI工程師:主要是報表開發,負責開發工作。
2、資料庫工程師:主要負責業務資料庫從設計、測試到部署交付的全生命周期管理。
3、ETL工程師:從事系統編程、資料庫編程與設計。
二、要求不同
1、BI工程師:要有一定的資料庫經驗,掌握SQL查詢優化方法,精通Oracle、SQLServer、MySQL等主流資料庫的應用設計、性能調優及存儲過程的開發。
2、資料庫工程師:理解數據備份/恢復與災難恢復;工具集的使用。
3、ETL工程師:要掌握各百種常用的編程語言。
三、特點不同
1、BI工程師:熟悉ETL邏輯、OLAP設計和數據挖掘相關演算法。
2、資料庫工程師:凡是關繫到資料庫質量、效率、成本、安全等方面的工作,及涉及到的技術、組件,都在資料庫工程師的技術范疇里。
3、ETL工程師:海量數據的ETL開發,抽取成各種數據需求。
『叄』 求職崗位測試,面試內容是爬蟲和ETL和演算法,這是什麼操作
前兩天我朋友學java的去面試測試的。我和她大體說了一些 比較幸運。她過了 我覺得主要是軟體測試的基本知識 首先是你對軟體測試的理解。什麼是軟體測試 商業軟體測...
『肆』 統計模型和大數據模型所使用的主要演算法有什麼異同
以每24小時作為一份時間(而非自然日),根據用戶的配置有兩種工作模式:帶狀模式中,用戶僅定義開始日期時,從開始日期(含)開始,每份時間1個分片地無限增加下去;環狀模式中,用戶定義了開始日期和結束日期時,以結束日期(含)和開始日期(含)之間的時間份數作為分片總數(分片數量固定),以類似取模的方式路由到這些分片里。
1. DBLE 啟動時,讀取用戶在 rule.xml 配置的 sBeginDate 來確定起始時間
2. 讀取用戶在 rule.xml 配置的 sPartionDay 來確定每個 MySQL 分片承載多少天內的數據
3. 讀取用戶在 rule.xml 配置的 dateFormat 來確定分片索引的日期格式
4. 在 DBLE 的運行過程中,用戶訪問使用這個演算法的表時,WHERE 子句中的分片索引值(字元串),會被提取出來嘗試轉換成 Java 內部的時間類型
5. 然後求分片索引值與起始時間的差,除以 MySQL 分片承載的天數,確定所屬分片
1. DBLE 啟動時,讀取用戶在 rule.xml 配置的起始時間 sBeginDate、終止時間 sEndDate 和每個 MySQL 分片承載多少天數據 sPartionDay
2. 根據用戶設置,建立起以 sBeginDate 開始,每 sPartionDay 天一個分片,直到 sEndDate 為止的一個環,把分片串聯串聯起來
3. 讀取用戶在 rule.xml 配置的 defaultNode
4. 在 DBLE 的運行過程中,用戶訪問使用這個演算法的表時,WHERE 子句中的分片索引值(字元串),會被提取出來嘗試轉換成 Java 內部的日期類型
5. 然後求分片索引值與起始日期的差:如果分片索引值不早於 sBeginDate(哪怕晚於 sEndDate),就以 MySQL 分片承載的天數為模數,對分片索引值求模得到所屬分片;如果分片索引值早於 sBeginDate,就會被放到 defaultNode 分片上
與MyCat的類似分片演算法對比
中間件
DBLE
MyCat
分片演算法種類 date 分區演算法 按日期(天)分片
兩種中間件的取模範圍分片演算法使用上無差別
開發注意點
【分片索引】1. 必須是字元串,而且 java.text.SimpleDateFormat 能基於用戶指定的 dateFormat 來轉換成 java.util.Date
【分片索引】2. 提供帶狀模式和環狀模式兩種模式
【分片索引】3. 帶狀模式以 sBeginDate(含)起,以 86400000 毫秒(24 小時整)為一份,每 sPartionDay 份為一個分片,理論上分片數量可以無限增長,但是出現 sBeginDate 之前的數據而且沒有設定 defaultNode 的話,會路由失敗(如果有 defaultNode,則路由至 defaultNode)
【分片索引】4. 環狀模式以 86400000 毫秒(24 小時整)為一份,每 sPartionDay 份為一個分片,以 sBeginDate(含)到 sEndDate(含)的時間長度除以單個分片長度得到恆定的分片數量,但是出現 sBeginDate 之前的數據而且沒有設定 defaultNode 的話,會路由失敗(如果有 defaultNode,則路由至 defaultNode)
【分片索引】5. 無論哪種模式,分片索引欄位的格式化字元串 dateFormat 由用戶指定
【分片索引】6. 無論哪種模式,劃分不是以日歷時間為准,無法對應自然月和自然年,且會受閏秒問題影響
運維注意點
【擴容】1. 帶狀模式中,隨著 sBeginDate 之後的數據出現,分片數量的增加無需再平衡
【擴容】2. 帶狀模式沒有自動增添分片的能力,需要運維手工提前增加分片;如果路由策略計算出的分片並不存在時,會導致失敗
【擴容】3. 環狀模式中,如果新舊 [sBeginDate,sEndDate] 之間有重疊,需要進行部分數據遷移;如果新舊 [sBeginDate,sEndDate] 之間沒有重疊,需要數據再平衡
配置注意點
【配置項】1. 在 rule.xml 中,可配置項為 <propertyname="sBeginDate"> 、 <propertyname="sPartionDay"> 、 <propertyname="dateFormat"> 、 <propertyname="sEndDate"> 和 <propertyname="defaultNode">
【配置項】2.在 rule.xml 中配置 <propertyname="dateFormat">,符合 java.text.SimpleDateFormat 規范的字元串,用於告知 DBLE 如何解析sBeginDate和sEndDate
【配置項】3.在 rule.xml 中配置 <propertyname="sBeginDate">,必須是符合 dateFormat 的日期字元串
【配置項】4.在 rule.xml 中配置 <propertyname="sEndDate">,必須是符合 dateFormat 的日期字元串;配置了該項使用的是環狀模式,若沒有配置該項則使用的是帶狀模式
【配置項】5.在 rule.xml 中配置 <propertyname="sPartionDay">,非負整數,該分片策略以 86400000 毫秒(24 小時整)作為一份,而 sPartionDay 告訴 DBLE 把每多少份放在同一個分片
【配置項】6.在 rule.xml 中配置 <propertyname="defaultNode"> 標簽,非必須配置項,不配置該項的話,用戶的分片索引值沒落在 mapFile 定義
『伍』 平衡二叉樹演算法
多值結點平衡二叉樹的結構及演算法研究
1引言
傳統的AV1.樹是一種應用較為廣泛的數據結構,適合」幾組織在內存中的較小索引.它的
每個結l從上存儲有一個關鍵字、一個平衡因子和兩個指針項,山」幾它是一棵接近」幾理想狀態的
平衡二叉樹,所以AV1.樹具有很高的查詢效率.但正如任何事物都具有兩而性一樣,AV1.樹同
樣存在比較嚴重的缺l從,一是存儲效率比較低:真正有用的關鍵字在結l從上所,片的空間比例較
小,而作為輔助信息的平衡因子和指針卻,片據較大的空間;二是額外運算量比較大:當有結l從
被插入或刪除而導致AV1.樹不平衡時,AV1.樹就需要進行調整而保持它的平衡性,山」幾每個
結l從上只有一個關鍵字,所以任何一次的數據插入或刪除都有可能導致AV1.樹的平衡調整,
這種頻繁的調整運算將大大降低AV1.樹的存取效率.為解決以上問題,結合T3樹每個結l從可
以存儲多個關鍵字項的優l側}l,木文提出了多值結l從平衡二叉樹(簡稱MAV1.樹),它的主要特
點在」幾每個MAV1.樹的結l從都存儲有多個關鍵字項,而其它信息仍與AV1.樹一樣,即一個平
衡因子和兩個指針項.
2 MAV1.樹結構描述
MAV1.樹仍舊是一種平衡二叉樹,它的整體樹型結構和演算法也是建立在傳統的平衡二叉
樹基礎之上的.MAV1.樹的特徵在」幾它的每個結l從都可以存儲多個關鍵字(較理想的取值大約
在20} 50個之間).用C++語言描述的MAV1.樹結l從結構如卜:
struct NodeStruct
int IJ1emsOnNode;
int bf:
struct NodPStruct*lch;ld:
//一結點中項的數目
//平衡因子
//夕.子
struct NodeStruct * rchild:
}lemType }lemsi Max}lem} ;//結點中的項數組
Node T:
在這種結構中.ElemsOnNode反映的是「當前狀態卜」該結l從中關鍵字項的個數.當在此結
點插入一個關鍵字時.FlemsOnNode值加1.當刪除一個關鍵字時.則FlemsOnNode值減1.每個
結l從上可存儲的關鍵字個數介J幾1 } M axElem之間.bf為平衡因r.其作用等同J幾AV1.樹的平
衡因r. MAV1.樹的任一結l從的平衡因r只能取一1 ,0和1.如果一個結l從的平衡因r的絕對
值大」幾1.則這棵樹就失去了平衡.需要做平衡運算保持平衡.lehild和:child分別為指向左右
J"樹根結0的指針.Flems[ i]為結0中第i個關鍵字項.Flems} MaxFlem」是一個按升序排列的
關鍵字數組.具體的MAV1.樹結l從結構如圖1所示.
}lemsOnNode一h『一* leh;ld一
圖1
reh擊3
}lemsi 0}一
樹結點結構
}lemsi Max}lem}
MAVT
MAV1.樹的結構特l從使它比AV1.樹具有更高的存儲效率.在AV1.樹或MAV1.樹中.實際
有用的信急只有關鍵字.1f1! ElemsOnNode ,bf ,lehild和:child都是為了構建樹型結構If1J不得不添
加的輔助信急. MAV1.樹就是通過減小這些輔助信急的比例來獲得較高的存儲效率.山MAV1.
樹結l從的定義可以看出:FlemsOnNode和bf為int型.各,片4個位元組長度.指針型的lchild和
rchild也各,片4個位元組長度.在以上四項信急中.AV1.樹結l從除了沒有ElemsOnNode外.其餘和
MAV1.樹相同.現假設關鍵字長度為24位元組.M axFl二值定為50.則對AV1.樹來說.它的結l從
長度為36位元組.其中輔助信h,長度為12位元組;If}J MAV1.樹的結l從長度是1. 2K位元組.其中輔助
信急長度為16位元組.山此可以看出.MAV1.樹在存儲時.結l從中輔助信急長度,片整個結l從長度
的比例是很小的.它對存儲空間的利用效率比 AV1.樹要高.這一l從對」幾主要而向內存應用的
MAV1.樹來說是非常重要的.
在實際的應用中.當MAV1.樹作為資料庫索引結構時.為進一步節約內存空間.結l從中Fl-
emType的結構可根據實際需要作不同的定義.
( 1)當排序關鍵字較短時.可以直接將資料庫中的關鍵字值拷貝到索引文件中.這樣
MAV1.樹既有較快的運行速度又不會,片用太大的空間.此時ElemType定義如卜
struct IdxRlemStruct
{
int RecPos://金己錄號
KeyType Key://關鍵字
}R1emType;
( 2}當排序關鍵字較長時.如果直接將資料庫中的關鍵字值拷貝到索引文件中會,片據較大
的空間.此時可以採用只存儲關鍵字地址的形式.這樣不管關鍵字有多長.映射到MAV1.樹後
都只,片據一個指針的固定長度.這種以時間換空間的方法比較適合內存容量有限的情況.此時
ElemType定義如卜
struct Tdxl?lemStruct
int RecPos:
char * Key
R1emType;
//記錄號
//關鍵字指釗
3基於MAUI.樹的運算
MAUI.樹的基木運算.包括MAUI.樹的建立、記錄的插入、刪除、修改以及查詢.這些演算法
與基J幾AVI.樹的演算法相似.都建立在一叉查詢和平衡演算法基礎上.
3. 1 MAVI,樹的平衡運算
如果在一棵原木是平衡的MAUI.樹中插入一個新結l從.造成了不平衡.此時必須調整樹的
結構.使之平衡化「21 .MAUI.樹的平衡演算法與AVI.樹的平衡演算法是相同的.但山J幾MAUI.樹的
每個結l從中都存儲有多個關鍵字.所以在關鍵字個數相同的情況卜. MAUI.樹的應用可以大大
減少平衡運算的次數.例如.假設具有n個關鍵字的待插入序列在插入過程中有5%(根據隨
機序列特l從的不同.此數值會有所差異.這里以比較保守的5%為例)的新產生結l從會導致一
叉樹出現不平衡.對AVI.樹來說.山」幾需要為每個關鍵字分配一個結l從.所以在整個插入過程
中做平衡的次數為n * 5%;對J幾MAUI.樹.設MAUI.樹中M axFl二的值被定義為k(k為大J幾1
的正整數少,則平均每k次的數據插入才會有一個新結l從產生,所以在整個插入過程中需做平
衡的次數僅為(nlk) * 5%.即在M axFl二取值為k的情況卜.對」幾相同的待插入關鍵字序列.
在插入過程中MAUI.樹用J幾平衡運算的開銷是AVI.樹的1/ k.
3. 2數據查找
在MAUI.樹上進行查找.是一個從根結l從開始.沿某一個分支逐層向卜進行比較判等的過
程.假設要在MAUI.樹上查找的值為GetKey.查找過程從根結l從開始.如果根指針為NU1.1..則
查找失敗;否則把要查找的值GetKey與根結l從關鍵字數組中的最小項Elems [ 0]進行比較.如
果GetKev小」幾當前結i最小關鍵字.則遞歸查找左r樹;如果GetKey'大」幾Elems [ 0].則將
GetKey'與根結0關鍵字數組中的最大項Fletns} MaxFl二一1]進行比較.如果GetKey'大」幾當前
結l從最大關鍵字.則遞歸查找右r樹;否則.對當前結l從的關鍵字數組進行查找(山」幾是有序序
列.可以採用折半查找以提高效率).如果有與GetKey'相匹配的值.則查找成功.返回成功信
息,7{報告查找到的關鍵字地址.
3. 3數據插入
數據插入是構建MAV1.樹的基礎.設要在MAV1.樹*T上插入一個新的數據兀素GetKev,
其遞歸演算法描述如卜:
(1)若*T為空樹.則申清一新結} ' Elems} MaxElem}.將GetKey'插入到Flems[ 0]的位置.樹
的深度增1.
(2)若*T未滿.則在*T中找到插入位置後將GetKey'插入.JI在插入後保持結l從中的各
關鍵項有序遞增.若己存在與GetKev相同的項.則不進行插入.
(3)如果*T為滿結l從目一GetKey'值介」幾Flems[ 0]和Flems} MaxFlem]之間.則在*T中找到
GetKev的插入位置posit ion.山」幾*T木身就是滿結l從.所以GetKev的插入必然會將原來*T中
的某個數據擠出去JI卜降到r樹中.根據插入位置position的不同.分以卜幾種情況處理:若*
T中存在與C etl} e`'相同的項.則不進行插入;若插入位置在*T結ii的前半部分(即position <
=MaxFlem/ 2).則將Flems[ 1]到Fletns} position」的數據依次左移一位.再把GetKey插入到Elems
} MaxFlem」中position的位置.Ifn原來*T中最左邊項數據將被擠入到*T的左r樹中.考察此
數據的特l從.它必然大」幾*T左r樹中的任一數據項.所以此時不需要作任何的額外運算.直
接將此數據插入到*T左r樹根結i從的最右r孫位置處就可以了(見圖2中插入,}} 11"後「1,>
的位置變化);若插入位置在*T結ii的後半部分(即position> MaxFlem/ 2).則將Fletns} posi-
tion}到Fletns} MaxFl二一2}的數據依次右移一位.再把GetKev插入到*T結0中position的位
置.與前一種情況類似.結l從中最右邊被擠出的項將被插入到*T的右r樹根結l從的最左r孫
的位置(見圖2中插入「25"後" 30"的位置變化).
插入,"}i」插入」zs0
}o i is i }a
s}土 s
圖2
滿結點插入數據的過程
(4)若GetKey的值小」幾T的最小項值.則將GetKey遞歸插入到T的左r樹中.即在遞歸調
用時GetKey值不變Ifn T= T->lehild.
(5)若GetKey的值大」幾T的最大項值.則將GetKey遞歸插入到T的右r樹中.即在遞歸調
用時GetKey值不變Ifn T= T->rehild.
4結束語
山J幾MAV1.樹的結l從中存儲有多個關鍵字值.所以它具有較高的存儲效率;對MAV l樹進
行查找是_分查找和順序查找的結合.其查詢效率只略低」幾AV1.樹.血山」幾MAV1.樹的平衡
運算比AV1.樹要少得多.所以MAV1.樹有很優秀的綜合運算效率.綜上所述.在數據量大、內
存容量相對較小、數據增刪運算比較頻繁的情況卜.用MAV1.樹作為常駐內存的索引結構是一
種理想的選擇.
『陸』 etl工程師有前景嗎
在大數據背景下,越來越多的企業開始涉足大數據,ETL作為企業搞大數據的重要技術平台,確實是需要重視的,也需要技術實力足夠的ETL工程師來支持企業大數據平台的建設和運營。所以,只要大數據的前景一直向好,那麼ETL工程師的發展前景也是不必擔心的。
至於說ETL工程師做什麼,從傳統的ETL到大數據背景下的ETL,作為技術人員,確實需要不斷提升自己的技術實力。傳統時期的ETL工程師,主要負責數據採集環節,且數據流動往往是單向性的,而在大數據時代,ETL工程師面臨的應用場景更多,ETL需要採取和處理的對象也在升級,需要解決的問題也更多。
從業務角度講,隨著數據應用的日益豐富,不同平台、系統的相互大批量數據交互成常態,僅僅滿足於採集數據已經不適應業務需要,還需要能夠為數據的目的端落地提供支撐,ETL工程師需要一個端到端的更適應業務需要的數據交換系統。
從技術角度講,ETL做一定的擴展可以升級為兼具交換能力,兩者有傳承,可以實現平滑過渡,但交換卻要考慮用另一個工具實現,同時未來大數據平台組件將異常豐富,相互之間的數據交換將是常態,必要要有更高級別的交換工具滿足這些需求。
大數據時代的ETL工程師,除了從事傳統的系統編程、資料庫編程與設計,還需要熟悉主流資料庫技術,如oracle、Sql server、PostgeSQL等,並且得會數據etl開發工具,如Datastage,Congos,Kettle等。
關於ETL工程師發展前景好嗎,ETL工程師做什麼,以上就是詳細的介紹了。在ETL工程師的未來職業發展上,除了要掌握足夠的資料庫開發技術,相關的大數據技術也要掌握,這樣才能更好地解決大數據時代的ETL數據採集與處理。
『柒』 etL是什麼數字貨幣
etL是以太坊數字貨幣。
以太坊(英文Ethereum)是一個開源的有智能合約功能的公共區塊鏈平台,通過其專用加密貨幣以太幣(Ether,簡稱「ETH」)提供去中心化的以太虛擬機(Ethereum Virtual Machine)來處理點對點合約。
以太坊的概念首次在2013至2014年間由程序員Vitalik Buterin受比特幣啟發後提出,大意為「下一代加密貨幣與去中心化應用平台」,在2014年通過ICO眾籌開始得以發展。
(7)etl演算法擴展閱讀:
特徵:
1、去中心化。區塊鏈技術不依賴額外的第三方管理機構或硬體設施,沒有中心管制,除了自成一體的區塊鏈本身,通過分布式核算和存儲,各個節點實現了信息自我驗證、傳遞和管理。去中心化是區塊鏈最突出最本質的特徵。
2、開放性。區塊鏈技術基礎是開源的,除了交易各方的私有信息被加密外,區塊鏈的數據對所有人開放,任何人都可以通過公開的介面查詢區塊鏈數據和開發相關應用,因此整個系統信息高度透明。
3、獨立性。基於協商一致的規范和協議(類似比特幣採用的哈希演算法等各種數學演算法),整個區塊鏈系統不依賴其他第三方,所有節點能夠在系統內自動安全地驗證、交換數據,不需要任何人為的干預。
『捌』 Inetl架構是什麼
現實與理智的平衡:P5與P6架構
Pentium採用P5架構,這被證明是偉大的創舉。在Intel的發展歷史中,第一代Pentium絕對是具有里程碑意義的產品,這一品牌甚至沿用至今,已經有十幾年的歷史了。盡管第一代Pentium 60的綜合表現很一般,甚至不比486DX66強多少,但是當主頻優勢體現出來之後,此時所表現出來的威力令人震驚。Pentium 75、Pentium 100以及Pentium 133,經典的產品一度稱雄業界。在同一時代,作為競爭對手的AMD和Cyrix顯然因為架構上的落後而無法與Intel展開正面競爭,即便是號稱「高頻486」的Cyrix 5X86也差距甚大,這並非是高主頻所能彌補的缺陷。
沿用到Pentium III的P6架構
在Pentium時代,雖然Intel還是相對競爭對手保持一定的領先,但是Intel並未感到滿足。在他們看來,只有從架構上扼殺對手,才能完全擺脫AMD和Cyrix兩家的追趕。於是,Intel在發布奔騰的下一代產品Pentium II時,採用了專利保護的P6架構,並且不再向AMD和Cyrix授權。P6架構與Pentium的P5架構最大的不同在於,以前集成在主板上的二級緩存被移植到了CPU內,從而大大地加快了數據讀取和命中率,提高了性能。AMD和Cyrix由於沒能得到P6架構的授權,只好繼續走在舊的架構上,整個CPU市場的格局一下子發生了巨大的變化,AMD和Cyrix的市場份額急劇下降。這里我們需要特別提一下K6-2+和K6-3,盡管這兩款令人肅然起敬的產品也對Intel構成嚴重威脅,但是它們所謂的內置二級緩存並非集成在CPU核心中,因此絕對不能算作P6架構,浮點性能也有著不小的差距。
低開高走:客觀評價NetBurst架構
1.P6架構難敵AMD K7
自從AMD在1999年推出K7處理器之後,整個CPU市場格局發生了翻天覆地的變化。從核心架構的技術角度來看,AMD實際上已經領先於Intel。在同頻Athlon與Pentium III的較量中,AMD占據了上風,這與其EV6前端匯流排以及緩存架構有著很大的關系,而且AMD K7處理器的動態分支預測技術也領先於P6架構。
Barton核心的K7處理器讓我們看到核心架構的重要性
面對這樣的窘迫局面,Intel可謂將P6架構的優勢發揮到極點。首先是一場主頻大戰,隨後是在Tualatin核心中加入大容量緩存,再加上伺服器處理器的SMP雙CPU模式,Intel巨人最終還是保住了顏面。但是Intel深知,核心架構上的劣勢遲早會令其陷入徹底的被動局面,一場架構革命演變在即。當全世界在試目以待的時候,Intel推出了微處理器發展史上極受爭議的直至今天還在服役的NetBurst架構!
2.NetBurst架構喜憂參半
盡管如今的Pentium4已經是一塊「金字招牌」,但是在其發展初期可並不是一帆風順,第一代Willamette核心就飽受批評。對於全新的NetBurst結構而言,發揮強大的性能需要更高的主頻以及強大的緩存結構,而這些都是Willamette核心所不具備的。256KB二級緩存顯然不足,此時的整體性能受到很大影響。然而最讓Intel尷尬的是,Willamette核心的Pentium4 1.5G甚至不如Tualatin核心的Pentium III,部分測試中甚至超頻後的Tualatin Celeron也能越俎代庖。
Willamette核心讓NetBurst架構出師不利
然而出師未捷身先死的情況並不會出現在如日中天的Intel身上,與Pentium III處理器相比,NetBurst架構的Pentium4在提高流水線長度之後令執行效率大幅度降低,此時大容量二級緩存與高主頻才是真正的彌補方法。可是諷刺的是,頻率比AthlonXP 2000+高出很多的Pentium4 Willamette 2GHz竟然服服帖帖地敗於其下。盡管後續的NorthWood核心憑借512KB二級緩存略微挽回面子,但是當時AMD的K7架構也在發展,Barton核心將Intel陷入了被動。因此,我們可以給出這樣一個明確的結論:Intel的NetBurst架構即便是面對AMD K7架構時也沒有什麼可驕傲的資本。如果不是Intel的市場調控能力超強,如今CPU市場的格局可能會是另一番景象。
NorthWood核心為NetBurst架構略微挽回顏面
3.流水線與CPU效率的關系
當然,我們如今看到的Prescott核心依舊是NetBurst架構,並且高頻率產品的綜合性能還是實實在在的。但是明眼人都看到了Intel的軟肋:NetBurst架構過分依賴於主頻與緩存,這與當前CPU的發展趨勢格格不入。為了提高主頻,NetBurst架構不斷延長CPU超流水線的級數。
在這里有必要解釋一下流水線的概念,它是Intel首次在486晶元中開始使用的。流水線的工作方式就象工業生產上的裝配流水線。在CPU中由5~6個不同功能的電路單元組成一條指令處理流水線,然後將一條x86指令分成5~6步後再由這些電路單元分別執行,這樣就能實現在一個CPU時鍾周期完成一條指令,因此提高CPU的運算速度。經典Pentium每條整數流水線都分為四級流水,即指令預取、解碼、執行、寫回結果,浮點流水又分為八級流水。
超標量是通過內置多條流水線來同時執行多個處理任務,其實質是以空間換取時間。而超流水線是通過細化流水、提高主頻,使得在一個機器周期內完成一個甚至多個操作,其實質是以時間換取空間。例如,起初Pentium4的超流水線就長達20級,隨後的Prescott更是提升到31級。超流水線設計的級數越長,其完成一條指令的速度越快,因此才能適應工作主頻更高的CPU。但是超流水線過長也帶來了一定副作用,很可能會出現主頻較高的CPU實際運算速度較低的現象,Intel的NetBurst架構就出現了這種情況,雖然它的主頻可以很高,但其運算性能卻遠遠比不上低主頻的AMD處理器。
Intel自然也知道這樣的問題,但是NetBurst架構已經邁開腳步,這已經無法停止。為此,Intel不得不繼續提高主頻並且加大二級緩存容量。可是讓Intel十分尷尬的是,如今處理器製作工藝開始面臨瓶頸,即便是65納米工藝,未來想要在NetBurst架構實現高主頻也是極為困難的事情,這意味著NetBurst架構今後將無法繼續憑借主頻優勢與競爭對手匹敵。此外,巨大的緩存容量也是一個負擔,這不僅提高了成本,也令發熱量驟升。如果不是Intel的市場公關與口碑較好,那麼Intel處理器早就要陷入尷尬了,因為如今高頻Pentium簡直就是高發熱量和高功耗的代名詞,甚至Celeron D也是滾燙滾燙。
Prescott核心成為NetBurst架構的強弩之末
3.數據預讀機制與緩存結構
Core 架構的預讀取機制還有更多新特性。數據預取單元經常需要在緩存中進行標簽查找。為了避免標簽查找可能帶來的高延遲,數據預取單元使用存儲介面進行標簽查找。存儲操作在大多數情況下並不是影響系統性能的關鍵,因為在數據開始寫入時,CPU即可以馬上開始進行下面的工作,而不必等待寫入操作完成。緩存/內存子系統會負責數據的整個寫入到緩存、復制到主內存的過程。
此外,Core 架構使用了Smart Memory Access演算法,這將幫助CPU在前端匯流排與內存傳輸之間實現更高的效率。Smart Memory Access演算法使用八個預取器,這種預取器可以利用推測演算法將數據從內存轉移到二級緩存,或者從二級緩存轉移到一級緩存,這對於提高內存單元性能以及緩存效率都是很有幫助的。
Core 架構的緩存系統也令人印象深刻。雙核心Core 架構的二級緩存容量高達4MB,且兩個核心共享,訪問延遲僅12到14個時鍾周期。每個核心還擁有32KB的一級指令緩存和一級數據緩存,訪問延遲僅僅3個時鍾周期。從 NetBurst 架構開始引入的追蹤式緩存(Trace Cache)在 Core 架構中消失了。NetBurst 架構中的追蹤式緩存的作用與常見的指令緩存相類似,是用來存放解碼前的指令的,對 NetBurst 架構的長流水線結構非常有用。而 Core 架構回歸相對較短的流水線之後,追蹤式緩存也隨之消失,因為 Intel 認為,傳統的一級指令緩存對短流水線的 Core 架構更加有用。當然,如今的緩存結構還僅僅是Core 架構的最低版本,隨著未來核心改進,緩存結構只會變得越來越強。
Conroe台式機處理器的真面目
4.真正的雙內核處理器
對於PC用戶而言,多任務處理一直是困擾的難題,因為單處理器的多任務以分割時間段的方式來實現,此時的性能損失相當巨大。而在雙內核處理器的支持下,真正的多任務得以應用,而且越來越多的應用程序甚至會為之優化,進而奠定扎實的應用基礎。從技術角度來看,雙內核的處理器確實令人期待。
Intel目前規劃的雙核心處理器很多,包括Pentium Extreme Edition和Pentium D等。但是Intel的雙核心一直飽受爭議,原因便是其實質僅僅是封裝兩個獨立的內核,互相之間的數據傳輸甚至還需要通過外部匯流排,這令效率大幅度降低。而Core 架構的設計將會令懷疑者閉嘴:其二級緩存並沒有分成兩個單獨的單元,而是兩個核心共享緩存。這一點非常重要,它說明Core並不是簡單地將兩個核心拼在一起。
當然,Core架構的優勢還不僅僅是這些,還包括降低功耗的Intelligent Power Capability技術以及優化多媒體性能的Advanced Digital Media Boost技術。Core架構的設計理念應該說非常正確,在摒棄主頻至上策略之後,Intel終於回到正軌,這對於業界而言無疑是一個好消息。此外,Core架構的Conroe台式機處理器將會兼容I975晶元組,因此未來Intel處理器的產品線又將拉長,這意味著一場價格大戰在所難免,這對於廣大消費者又是一個好消息。
寫在最後
未來我們期待的不僅僅是純計算速度更快的處理器,出色的多任務並行處理、強大的64位計算能力、人性化的防病毒功能以及合理的功耗,這些才是用戶真正想要的。正如AMD在前幾年一直反對「為技術而技術」一樣,以客戶需求為指導,遵循產品發展規律才是走向成功的捷徑。我們同樣希望與Intel苦戰多年的戰士在面臨Intel的強大攻勢下繼續頑強作戰,與Intel一起繼續為業界奉獻出色的改變人類生活的微處理器產品.
四、壯士斷臂:NetBurst架構終於落幕,Core架構臨危授命
既然NetBurst架構已經無法滿足未來CPU發展的需要,那麼Intel就必須開辟全新的CPU核心架構。事實上,Intel就早做好了技術准備,迅馳III中的Yonah移動處理器已經具備Core核心架構的技術精髓。Intel於前不久正式公布了全新的Core核心架構:未來台式機使用Conroe,筆記本使用Merom,伺服器使用WoodCrest,這三款處理器全部基於Core核心架構。
1.流水線效率大幅度提升
主頻至上的CPU研發思路顯然已經被淘汰。Core架構的處理器將超流水線縮短到14級,這將大幅度提升整體效率,令CPU避免出現「高頻低能」的尷尬現象。然而更加值得我們關注的是,Core架構採用了四組指令編譯器,這與Pentium M處理器有些類似。所謂四組指令編譯器,就是指能夠在單一頻率周期內編譯四個x86指令。這四組指令編譯器由三組簡單編譯器(Simple Decoder)與一組復雜編譯器(Complex Decoder)組成。四組指令編譯器中,僅有復雜編譯器可處理最多由四個微指令所組成的復雜x86指令。如果不幸碰到非常復雜的指令,復雜編譯器就必須呼叫微碼循序器(Microcode Sequencer),以便取得微指令序列。
為了配合超寬的編譯單元,Core架構的指令讀取單元在一個頻率周期內,從第一階指令快取中,抓取六個x86指令至指令編譯緩沖區(Instruction Queue),判定是否有符合宏指令融合的配對,然後再將最多五個x86指令,交派給四組指令編譯器。四組指令編譯器在每個頻率周期中,發給保留站(Reservation Station)四個編譯後的微指令,保留站再將存放的微指令交派(dispatch)給五個執行單元。
自從 AMD 失敗的 K5 設計之後,已經有超過十年的時間,x86處理器的世界再也沒有出現過四組指令編譯器的設計。因為x86指令集的指令長度、格式與定址模式都相當混亂,導致x86指令解碼器的設計是非常困難的。但是如今的局面已經有所改變,一方面是高主頻對於四組精簡結構有著很大的依賴性,另一方面是其它輔助性技術也能很大程度上彌補解決定址模式混亂的難題。毫無疑問,Intel的這一創舉將是在CPU核心架構設計上具有里程碑意義的,未來我們將有望看到CPU的整體性能有大幅度提高。
Conroe完成128bit向量運算的示意圖
2.全新的整數與浮點單元
從P6到NetBurst架構,整數與浮點單元的變化還是相當明顯,不過如今Core架構的變化也同樣不小,只是部分關鍵技術又改回P6架構時代的設計。Core具備了3個64bit的整數執行單元,每一個都可以單獨完成的64位整數運算操作。這樣一來Core就有了一套64bit的復雜整數單元(這一點和P6核心的CIU相同),以及兩個簡單整數單元用來處理基本的操作和運算任務。但是非常特別是的是,3個64bit的整數執行單元中的一個簡單整數單元和分支執行單元將會共享埠。該埠處的簡單整數單元將和分支單元共同完成此處的宏指令結合的任務。
如果說Core架構就是P6架構,那無疑是不公平的。能夠獨立完成64bit整數運算對Intel x86處理器來說還是頭一回,這也讓Core得以走在了競爭對手的前列。此外,64bit的整數單元使用彼此獨立的數據埠,因此Core能夠在一個周期內同時完成3組64bit的整數運算。極強的整數運算單元使得Core在包括游戲、伺服器項目、移動等方面都能夠發揮廣泛而強大的作用。
Core構架的設計圖
在以往的NetBurst架構中,浮點單元的性能很一般,這也是為什麼AMD處理器總是在3D游戲中有更好表現的原因之一。不過Core構架進行了不小的改進。Core構架擁有2個浮點執行單元同時處理向量和標量的浮點運算,其中一個浮點單元執行負責加減等簡單的處理,而另一個浮點單元則執行負責乘除等運算。盡管不能說Core構架令浮點性能有很大幅度的提升,但是其改進效果還是顯而易見的。在多項測試中,Conroe台式機處理器已經能夠打敗AMD高端的FX62。
Core構架的整體效率以及高於AMD K8
『玖』 ETL 數據抽取 如何實現增量抽取
ETL中的數據增量抽取機制
(
增量抽取是數據倉庫ETL(extraction,transformation,loading,數據的抽取、轉換和裝載)實施過程中需要重點考慮的問 題。在ETL過程中,增量更新的效率和可行性是決定ETL實施成敗的關鍵問題之一,ETL中的增量更新機制比較復雜,採用何種機制往往取決於源數據系統的 類型以及對增量更新性能的要求。
1 ETL概述
ETL包括數據的抽取、轉換、載入。①數據抽取:從源數據源系統抽取目的數據源系統需要的數據:②數據轉換:將從源數據源獲取的數據按照業務需求,轉換成目的數據源要求的形式,並對錯誤、不一致的數據進行清洗和加工;③數據載入:將轉換後的數據裝載到目的數據源。
ETL作為構建數據倉庫的一個環節,負責將分布的、異構數據源中的數據如關系數據、平面數據文件等抽取到臨時中間層後進行清洗、轉換、集成,最後載入到數 據倉庫或數據集市中,成為聯機分析處理、數據挖掘的基礎。ETL原來主要用戶構建數據倉庫和商業智能項目,現在也越來越多地應用於一般信息系統數據的遷 移、交換和同步。
在ETL的3個環節中,數據抽取直接面對各種分散、異構的數據源,如何保證穩定高效的從這些數據源中提取正確的數據,是ETL設計和實施過程中需要考慮的關鍵問題之一。
在集成端進行數據的初始化時,一般需要將數據源端的全部數據裝載進來,這時需要進行全量抽取。全量抽取類似於數據遷移或數據復制,它將數據源中的表或視圖 的數據全部從資料庫中抽取出來,再進行後續的轉換和載入操作。全量抽取可以使用數據復制、導入或者備份的方式完成,實現機制比較簡單。全量抽取完成後,後 續的抽取操作只需抽取自上次抽取以來表中新增或修改的數據,這就是增量抽取。
在資料庫倉庫中,無論是全量抽取還是增量抽取,抽取工作一般由數據倉庫工具來完成,如oracle的OWB,Sql Server的Integration Services以及專業的ETL商業產品Informatica PowvrCenter等。如果企業的預算有限,也可以考慮使用開源項目Pentaho。這些工具都有一個特點,就是本身並沒有實現特定的增量抽取機制, 它們完成全量抽取後,用戶可以通過定製計劃任務的方式,實現按一定的周期從源系統中抽取當前周期內產生的增量數據,但至於這些增量數據如何產生,工具並沒 有提供自動生成增量數據的功能。所以,ETL過程中增量數據的產生機制是一個需要用戶重點研究和選擇的問題。
2 增量抽取機制
要實現增量抽取,關鍵是如何准確快速的捕獲變化的數據。優秀的增量抽取機制要求ETL能夠將業務系統中的變化數據按一定的頻率准確地捕獲到,同時不能對業 務系統造成太大的壓力,影響現有業務。相對全量抽取而言,增量抽取的設計更復雜,有一種將全量抽取過程自動轉換為增量抽取過程的ETL設計思路,前提是必 須捕獲變化的數據,增量數據抽取中常用的捕獲變化數據的方法有以下幾種:
2.1 觸發器方式
觸發器方式是普遍採取的一種增量抽取機制。該方式是根據抽取要求,在要被抽取的源表上建立插入、修改、刪除3個觸發器,每當源表中的數據發生變化,就被相 應的觸發器將變化的數據寫入一個增量日誌表,ETL的增量抽取則是從增量日誌表中而不是直接在源表中抽取數據,同時增量日誌表中抽取過的數據要及時被標記 或刪除。
為了簡單起見,增量日誌表一般不存儲增量數據的所有欄位信息,而只是存儲源表名稱、更新的關鍵字值和更新操作類型(insert、update或 delete),ETL增量抽取進程首先根據源表名稱和更新的關鍵字值,從源表中提取對應的完整記錄,再根據更新操作類型,對目標表進行相應的處理。
例如,對於源表為Oracle類型的資料庫,採用觸發器方式進行增量數據捕獲的過程如下:
(1)創建增量日誌表DML LOG:
create table DML_LOG(
ID NUMBER primary key,--自增主鍵
TABLE_NAME VARCHAR2(200),--源表名稱
RECORD_ID NUMBER,--源表增量記錄的主鍵值
DML_TYPE CHAR(1),--增量類型,I表示新增;U表示更新;D表示刪除
EXECUTE DATE DATE --發生時間
);
(2)為DML_LOG創建一個序列SEQ_DML_LOG,以便觸發器寫增量日誌表時生成ID值。
(3)針對要監聽的每一張表,創建一個觸發器,例如對表Test創建觸發器如下:
Create or replace trigger T BEFORE INSERT OR UPDATE OR DELETE ON T for each row
declare I_dml_type varchar2(1);
begin
if INSERTING then l_dml type:=』I』;
elsif UPDATING then I_dml_type:=』U』;
elsif DELETING then l_dml_type:=』D』;
end if;
if DELETING then
insert into DML_LOG(ID,TABLE_NAME,RECORD_ID,EXECUTE_DATE,DML_TYPE)
values(seq_dml_log.nextval,』Test』,:old.ID,sysdate,l_dml_type);
else
insert into DML_LOG(ID,TABLE_NAME,RECORD_ID,EXECUTE_DATE,DML_TYPE)
values(seq_dml_log.nextval,』Test』,:new.ID,sysdate,l_dml_type);
end if;
end;
這樣,對表T的所有DML操作就記錄在增量日誌表DML_LOG中,注意增量日誌表中並沒有完全記錄增量數據本身,只是記錄了增量數據的來源。進行增量ETL時,只需要根據增量日誌表中的記錄情況,反查源表得到真正的增量數據。
2.2 時間戳方式
時間戳方式是指增量抽取時,抽取進程通過比較系統時間與抽取源表的時間戳欄位的值來決定抽取哪些數據。這種方式需要在源表上增加一個時間戳欄位,系統中更新修改表數據的時候,同時修改時間戳欄位的值。
有的資料庫(例如Sql Server)的時間戳支持自動更新,即表的其它欄位的數據發生改變時,時間戳欄位的值會被自動更新為記錄改變的時刻。在這種情況下,進行ETL實施時就 只需要在源表加上時間戳欄位就可以了。對於不支持時間戳自動更新的資料庫,這就要求業務系統在更新業務數據時,通過編程的方式手工更新時間戳欄位。
使用時間戳方式可以正常捕獲源表的插入和更新操作,但對於刪除操作則無能為力,需要結合其它機制才能完成。
2.3 全表刪除插入方式
全表刪除插入方式是指每次抽取前先刪除目標表數據,抽取時全新載入數據。該方式實際上將增量抽取等同於全量抽取。對於數據量不大,全量抽取的時間代價小於執行增量抽取的演算法和條件代價時,可以採用該方式。
2.4 全表比對方式
全表比對即在增量抽取時,ETL進程逐條比較源表和目標表的記錄,將新增和修改的記錄讀取出來。
優化之後的全部比對方式是採用MD5校驗碼,需要事先為要抽取的表建立一個結構類似的MD5臨時表,該臨時表記錄源表的主鍵值以及根據源表所有欄位的數據 計算出來的MD5校驗碼,每次進行數據抽取時,對源表和MD5臨時表進行MD5校驗碼的比對,如有不同,進行update操作:如目標表沒有存在該主鍵 值,表示該記錄還沒有,則進行insert操作。然後,還需要對在源表中已不存在而目標表仍保留的主鍵值,執行delete操作。
2.5 日誌表方式
對於建立了業務系統的生產資料庫,可以在資料庫中創建業務日誌表,當特定需要監控的業務數據發生變化時,由相應的業務系統程序模塊來更新維護日誌表內容。增量抽取時,通過讀日誌表數據決定載入哪些數據及如何載入。日誌表的維護需要由業務系統程序用代碼來完成。
2.6 系統日誌分析方式
該方式通過分析資料庫自身的日誌來判斷變化的數據。關系犁資料庫系統都會將所有的DML操作存儲在日誌文件中,以實現資料庫的備份和還原功能。ETL增量 抽取進程通過對資料庫的日誌進行分析,提取對相關源表在特定時間後發生的DML操作信息,就可以得知自上次抽取時刻以來該表的數據變化情況,從而指導增量 抽取動作。
有些資料庫系統提供了訪問日誌的專用的程序包(例如Oracle的LogMiner),使資料庫日誌的分析工作得到大大簡化。
2.7 特定資料庫的方式
針對特有資料庫系統的增量抽取方式:
2.7.1 Oracle改變數據捕獲(changed data capture,CDC)方式
OracleCDC特性是在Oraele9i資料庫中引入的。CDC能夠幫助識別從上次抽取之後發生變化的數據。利用CDC,在對源表進行 insert、update或delete等操作的同時就可以提取數據,並且變化的數據被保存在資料庫的變化表中。這樣就可以捕獲發生變化的數據,然後利 用資料庫視圖以一種可控的方式提供給ETL抽取進程,作為增量抽取的依據。
CDC方式對源表數據變化情況的捕獲有兩種方式:同步CDC和非同步CDC。同步CDC使用源資料庫觸發器來捕獲變更的數據。這種方式是實時的,沒有任何延 遲。當DML操作提交後,變更表中就產生了變更數據。非同步CDC使用資料庫重做日誌(redolog)文件,在源資料庫發生變更以後,才進行數據捕獲。
2.7.2 Oracle閃回查詢方式
Oracle9i以上版本的資料庫系統提供了閃回查詢機制,允許用戶查詢過去某個時刻的資料庫狀態。這樣,抽取進程可以將源資料庫的當前狀態和上次抽取時刻的狀態進行對比,快速得出源表數據記錄的變化情況。
3 比較和分析
可見,ETL在進行增量抽取操作時,有以上各種機制可以選擇。現從兼容性、完備性、性能和侵入性4個方面對這些機制的優劣進行比較分析。
兼容性
數據抽取需要面對的源系統,並不一定都是關系型資料庫系統。某個ETL過程需要從若干年前的遺留系統中抽取Excel或者CSV文本數據的情形是經常發牛 的。這時,所有基於關系型資料庫產品的增量機制都無法工作,時間戳方式和全表比對方式可能有一定的利用價值,在最壞的情況下,只有放棄增量抽取的思路,轉 而採用全表刪除插入方式。
完備性
完備性方面,時間戳方式不能捕獲delete操作,需要結合其它方式一起使用。
性能
增量抽取的性能因素表現在兩個方面,一是抽取進程本身的性能,二是對源系統性能的負面影響。觸發器方式、日誌表方式以及系統日誌分析方式由於不需要在抽取 過程中執行比對步驟,所以增量抽取的性能較佳。全表比對方式需要經過復雜的比對過程才能識別出更改的記錄,抽取性能最差。在對源系統的性能影響方面,觸發 器方式由於是直接在源系統業務表上建立觸發器,同時寫臨時表,對於頻繁操作的業務系統可能會有一定的性能損失,尤其是當業務表上執行批量操作時,行級觸發 器將會對性能產生嚴重的影響;同步CDC方式內部採用觸發器的方式實現,也同樣存在性能影響的問題;全表比對方式和日誌表方式對數據源系統資料庫的性能沒 有任何影響,只是它們需要業務系統進行額外的運算和資料庫操作,會有少許的時間損耗;時間戳方式、系統日誌分析方式以及基於系統日誌分析的方式(非同步 CDC和閃回查詢)對資料庫性能的影響也是非常小的。
侵入性
對數據源系統的侵入性是指業務系統是否要為實現增量抽取機製做功能修改和額外操作,在這一點上,時間戳方式值得特別關注。該方式除了要修改數據源系統表結 構外,對於不支持時間戳欄位自動更新的關系型資料庫產品,還必須要修改業務系統的功能,讓它在源表t執行每次操作時都要顯式的更新表的時間戳欄位,這在 ETL實施過程中必須得到數據源系統高度的配合才能達到,並且在多數情況下這種要求在數據源系統看來是比較「過分」的,這也是時間戳方式無法得到廣泛運用 的主要原因。另外,觸發器方式需要在源表上建立觸發器,這種在某些場合中也遭到拒絕。還有一些需要建立臨時表的方式,例如全表比對和日誌表方式。可能因為 開放給ETL進程的資料庫許可權的限制而無法實施。同樣的情況也可能發生在基於系統日誌分析的方式上,因為大多數的資料庫產品只允許特定組的用戶甚至只有 DBA才能執行日誌分析。閃回杏詢在侵入性方面的影響是最小的。
綜述:
通過對各種增量抽取機制的對比分析,我們發現,沒有一種機制具有絕對的優勢,不同機制在各種因素的表現大體上都是相對平衡的。兼容性較差的機制,像CDC 和閃回查詢機制,由於充分利用了數據源系統DBMS的特性,相對來說具有較好的整體優勢;最容易實現以及兼容性最佳的全表刪除插入機制,則是以犧牲抽取性 能為代價的;系統日誌分析方式對源業務系統的功能無需作任何改變,對源系統表也無需建立觸發器,而抽取性能也不錯,但有可能需要源系統開放DBA許可權給 ETL抽取進程,並且自行分析日誌系統難度較高,不同資料庫系統的日誌格式不一致,這就在一定程度上限制了它的使用范圍。所以,ETL實施過程中究競選擇 哪種增量抽取機制,要根據實際的數據源系統環境進行決策,需要綜合考慮源系統資料庫的類型、抽取的數據量(決定對性能要求的苛刻程度)、對源業務系統和數 據庫的控制能力以及實現難度等各種因素,甚至結合各種不同的增量機制以針對環境不同的數據源系統進行ETL實施。
4 結束語
為了實現數據倉庫數據的高效更新,增量抽取是ETL數據抽取過程中非常重要的一環,其實現機制直接決定了ETL的整體實施效果。我們通過對幾種常見的增量 抽取機制進行了對比,總結了各種機制的特性並分析了它們的優劣。各種增量抽取機制都有它有存在的價值和固有的限制條件,在ETL的設計和實施工作過程中, 只能依據項目的實際環境進行綜合考慮,甚至需要對可採用的多種機制進行實際的測試,才能確定一個最優的增量抽取方法。
『拾』 ETL工程師和數據挖掘工程師的區別
ETL,Extraction-Transformation-Loading的縮寫,中文名稱為數據抽取、轉換和載入。
ETL負責將分布的、異構數據源中的數據如關系數據、平面數據文件等抽取到臨時中間層後進行清洗、轉換、集成,最後載入到數據倉庫或數據集市中,成為聯機分析處理、數據挖掘的基礎。
ETL是數據倉庫中的非常重要的一環。它是承前啟後的必要的一步。相對於關系資料庫,數據倉庫技術沒有嚴格的數學理論基礎,它更面向實際工程應用。所以從工程應用的角度來考慮,按著物理數據模型的要求載入數據並對數據進行一些系列處理,處理過程與經驗直接相關,同時這部分的工作直接關系數據倉庫中數據的質量,從而影響到聯機分析處理和數據挖掘的結果的質量。
數據倉庫是一個獨立的數據環境,需要通過抽取過程將數據從聯機事務處理環境、外部數據源和離線的數據存儲介質導入到數據倉庫中;在技術上,ETL主要涉及到關聯、轉換、增量、調度和監控等幾個方面;數據倉庫系統中數據不要求與聯機事務處理系統中數據實時同步,所以ETL可以定時進行。但多個ETL的操作時間、順序和成敗對數據倉庫中信息的有效性至關重要。
2.數據挖掘(Data Mining),又稱為資料庫中的知識發現(Knowledge Discovery in Database, KDD),就是從大量數據中獲取有效的、新穎的、潛在有用的、最終可理解的模式的非平凡過程,簡單的說,數據挖掘就是從大量數據中提取或「挖掘」知識。
並非所有的信息發現任務都被視為數據挖掘。例如,使用資料庫管理系統查找個別的記錄,或通過網際網路的搜索引擎查找特定的Web頁面,則是信息檢索(information retrieval)領域的任務。雖然這些任務是重要的,可能涉及使用復雜的演算法和數據結構,但是它們主要依賴傳統的計算機科學技術和數據的明顯特徵來創建索引結構,從而有效地組織和檢索信息。盡管如此,數據挖掘技術也已用來增強信息檢索系統的能力。
1)數據挖掘能做以下六種不同事情(分析方法):
· 分類 (Classification)
· 估值(Estimation)
· 預言(Prediction)
· 相關性分組或關聯規則(Affinity grouping or association rules)
· 聚集(Clustering)
· 描述和可視化(Des cription and Visualization)
· 復雜數據類型挖掘(Text, Web ,圖形圖像,視頻,音頻等)
2)數據挖掘分類
以上六種數據挖掘的分析方法可以分為兩類:直接數據挖掘;間接數據挖掘
· 直接數據挖掘
目標是利用可用的數據建立一個模型,這個模型對剩餘的數據,對一個特定的變數(可以理解成資料庫中表的屬性,即列)進行描述。
· 間接數據挖掘
目標中沒有選出某一具體的變數,用模型進行描述;而是在所有的變數中建立起某種關系 。
· 分類、估值、預言屬於直接數據挖掘;後三種屬於間接數據挖掘
3)各種分析方法的簡介
首先從數據中選出已經分好類的訓練集,在該訓練集上運用數據挖掘分類的技術,建立分類模型,對於沒有分類的數據進行分類。
例子:
a. 信用卡申請者,分類為低、中、高風險
b. 分配客戶到預先定義的客戶分片
注意: 類的個數是確定的,預先定義好的
估值與分類類似,不同之處在於,分類描述的是離散型變數的輸出,而估值處理連續值的輸出;分類的類別是確定數目的,估值的量是不確定的。
例子:
a. 根據購買模式,估計一個家庭的孩子個數
b. 根據購買模式,估計一個家庭的收入
c. 估計real estate的價值
一般來說,估值可以作為分類的前一步工作。給定一些輸入數據,通過估值,得到未知的連續變數的值,然後,根據預先設定的閾值,進行分類。例如:銀行對家庭貸款業務,運用估值,給各個客戶記分(Score 0~1)。然後,根據閾值,將貸款級別分類。
通常,預言是通過分類或估值起作用的,也就是說,通過分類或估值得出模型,該模型用於對未知變數的預言。從這種意義上說,預言其實沒有必要分為一個單獨的類。預言其目的是對未來未知變數的預測,這種預測是需要時間來驗證的,即必須經過一定時間後,才知道預言准確性是多少。
· 相關性分組或關聯規則(Affinity grouping or association rules)
決定哪些事情將一起發生。
例子:
a. 超市中客戶在購買A的同時,經常會購買B,即A => B(關聯規則)
b. 客戶在購買A後,隔一段時間,會購買B (序列分析)
聚集是對記錄分組,把相似的記錄在一個聚集里。聚集和分類的區別是聚集不依賴於預先定義好的類,不需要訓練集。
例子:
a. 一些特定症狀的聚集可能預示了一個特定的疾病
b. 租VCD類型不相似的客戶聚集,可能暗示成員屬於不同的亞文化群
聚集通常作為數據挖掘的第一步。例如,"哪一種類的促銷對客戶響應最好?",對於這一 類問題,首先對整個客戶做聚集,將客戶分組在各自的聚集里,然後對每個不同的聚集,回答問題,可能效果更好。
· 描述和可視化(Des cription and Visualization) 是對數據挖掘結果的表示方式。