A. 求助:哪些公司可以提供大數據處理分析解決方案
上海獻峰網路指出:你要的大數據分析解決方案大全都在這
從所周知,大數據已經不簡簡單單是數據大的事實了,而最重要的現實是對大數據進行分析,只有通過分析才能獲取很多智能的,深入的,有價值的信息。那麼越來越多的應用涉及到大數據,而這些大數據的屬性,包括數量,速度,多樣性等等都是呈現了大數據不斷增長的復雜性,所以大數據的分析方法在大數據領域就顯得尤為重要,可以說是決定最終信息是否有價值的決定性因素。基於如此的認識,大數據分析普遍存在的方法理論有哪些呢?
一、大數據分析的五個基本方面
1. Analytic Visualizations(可視化分析)
不管是對數據分析專家還是普通用戶,數據可視化是數據分析工具最基本的要求。可視化可以直觀的展示數據,讓數據自己說話,讓觀眾聽到結果。
2. Data Mining Algorithms(數據挖掘演算法)
可視化是給人看的,數據挖掘就是給機器看的。集群、分割、孤立點分析還有其他的演算法讓我們深入數據內部,挖掘價值。這些演算法不僅要處理大數據的量,也要處理大數據的速度。
3. Predictive Analytic Capabilities(預測性分析能力)
數據挖掘可以讓分析員更好的理解數據,而預測性分析可以讓分析員根據可視化分析和數據挖掘的結果做出一些預測性的判斷。
4. Semantic Engines(語義引擎)
我們知道由於非結構化數據的多樣性帶來了數據分析的新的挑戰,我們需要一系列的工具去解析,提取,分析數據。語義引擎需要被設計成能夠從「文檔」中智能提取信息。
5. Data Quality and Master Data Management(數據質量和數據管理)
數據質量和數據管理是一些管理方面的最佳實踐。通過標准化的流程和工具對數據進行處理可以保證一個預先定義好的高質量的分析結果。
假如大數據真的是下一個重要的技術革新的話,我們最好把精力關注在大數據能給我們帶來的好處,而不僅僅是挑戰。
二、大數據處理
周濤博士說:大數據處理數據時代理念的三大轉變:要全體不要抽樣,要效率不要絕對精確,要相關不要因果。
具體的大數據處理方法其實有很多,但是根據長時間的實踐,筆者總結了一個基本的大數據處理流程,並且這個流程應該能夠對大家理順大數據的處理有所幫助。整個處理流程可以概括為四步,分別是採集、導入和預處理、統計和分析,以及挖掘。
採集
大數據的採集是指利用多個資料庫來接收發自客戶端(Web、App或者感測器形式等)的數據,並且用戶可以通過這些資料庫來進行簡單的查詢和處理工作。比如,電商會使用傳統的關系型資料庫MySQL和Oracle等來存儲每一筆事務數據,除此之外,Redis和MongoDB這樣的NoSQL資料庫也常用於數據的採集。
在大數據的採集過程中,其主要特點和挑戰是並發數高,因為同時有可能會有成千上萬的用戶來進行訪問和操作,比如火車票售票網站和淘寶,它們並發的訪問量在峰值時達到上百萬,所以需要在採集端部署大量資料庫才能支撐。並且如何在這些資料庫之間進行負載均衡和分片的確是需要深入的思考和設計。
導入/預處理
雖然採集端本身會有很多資料庫,但是如果要對這些海量數據進行有效的分析,還是應該將這些來自前端的數據導入到一個集中的大型分布式資料庫,或者分布式存儲集群,並且可以在導入基礎上做一些簡單的清洗和預處理工作。也有一些用戶會在導入時使用來自Twitter的Storm來對數據進行流式計算,來滿足部分業務的實時計算需求。
導入與預處理過程的特點和挑戰主要是導入的數據量大,每秒鍾的導入量經常會達到百兆,甚至千兆級別。
統計/分析
統計與分析主要利用分布式資料庫,或者分布式計算集群來對存儲於其內的海量數據進行普通的分析和分類匯總等,以滿足大多數常見的分析需求,在這方面,一些實時性需求會用到EMC 的GreenPlum、Oracle的Exadata,以及基於MySQL的列式存儲Infobright等,而一些批處理,或者基於半結構化數據的需求可以使用Hadoop。
統計與分析這部分的主要特點和挑戰是分析涉及的數據量大,其對系統資源,特別是I/O會有極大的佔用。
挖掘
與前面統計和分析過程不同的是,數據挖掘一般沒有什麼預先設定好的主題,主要是在現有數據上面進行基於各種演算法的計算,從而起到預測(Predict)的效果,從而實現一些高級別數據分析的需求。比較典型演算法有用於聚類的K-Means、用於統計學習的SVM和用於分類的Naive Bayes,主要使用的工具有Hadoop的Mahout等。
該過程的特點和挑戰主要是用於挖掘的演算法很復雜,並且計算涉及的數據量和計算量都很大,還有,常用數據挖掘演算法都以單線程為主。
B. kettle從oracle向mysql遷移大數據量時報錯,求教
OGG全稱為Oracle GoldenGate,是由Oracle官方提供的用於解決異構數據環境中數據復制的一個商業工具。相比於其它遷移工具OGG的優勢在於可以直接解析源端Oracle的redo log,因此能夠實現在不需要對原表結構做太多調整的前提下完成數據增量部分的遷移。本篇文章將重點介紹如何使用OGG實現Oracle到MySQL數據的平滑遷移,以及講述個人在遷移過程中所碰到問題的解決方案。
(一)OGG邏輯架構
參照上圖簡單給大家介紹下OGG邏輯架構,讓大家對OGG數據同步過程有個簡單了解,後面章節會詳細演示相關進程的配置方式,在OGG使用過程中主要涉及以下進程及文件:
Manager進程:需要源端跟目標端同時運行,主要作用是監控管理其它進程,報告錯誤,分配及清理數據存儲空間,發布閾值報告等
Extract進程:運行在資料庫源端,主要用於捕獲數據的變化,負責全量、增量數據的抽取
Trails文件:臨時存放在磁碟上的數據文件
Data Pump進程:運行在資料庫源端,屬於Extract進程的一個輔助進程,如果不配置Data Pump,Extract進程會將抽取的數據直接發送到目標端的Trail文件,如果配置了Data Pump,Extract進程會將數據抽取到本地Trail文件,然後通過Data Pump進程發送到目標端,配置Data Pump進程的主要好處是即使源端到目標端發生網路中斷,Extract進程依然不會終止
Collector進程:接收源端傳輸過來的數據變化,並寫入本地Trail文件中
Replicat進程:讀取Trail文件中記錄的數據變化,創建對應的DML語句並在目標端回放
二、遷移方案
(一)環境信息
OGG版本 OGG 12.2.0.2.2 For Oracle OGG 12.2.0.2.2 For MySQL
資料庫版本 Oracle 11.2.0.4 MySQL 5.7.21
OGG_HOME /home/oracle/ogg /opt/ogg
(二)表結構遷移
表結構遷移屬於難度不高但內容比較繁瑣的一步,我們在遷移表結構時使用了一個叫sqlines的開源工具,對於sqlines工具在MySQL端創建失敗及不符合預期的表結構再進行特殊處理,以此來提高表結構轉換的效率。
注意:OGG在Oracle遷移MySQL的場景下不支持DDL語句同步,因此表結構遷移完成後到資料庫切換前盡量不要再修改表結構。
(三)數據遷移
數據同步的操作均採用OGG工具進行,考慮數據全量和增量的銜接,OGG需要先將增量同步的抽取進程啟動,抓取資料庫的redo log,待全量抽取結束後開啟增量數據回放,應用全量和增量這段期間產生的日誌數據,OGG可基於參數配置進行重復數據處理,所以使用OGG時優先將增量進行配置並啟用。此外,為了避免本章節篇幅過長,OGG參數將不再解釋,有需要的朋友可以查看官方提供的Reference文檔查詢任何你不理解的參數。
1.源端OGG配置
(1)Oracle資料庫配置
針對Oracle資料庫,OGG需要資料庫開啟歸檔模式及增加輔助補充日誌、強制記錄日誌等來保障OGG可抓取到完整的日誌信息
查看當前環境是否滿足要求,輸出結果如下圖所示:
(2)Oracle資料庫OGG用戶創建
OGG需要有一個用戶有許可權對資料庫的相關對象做操作,以下為涉及的許可權,該示例將創建一個用戶名和密碼均為ogg的Oracle資料庫用戶並授予以下許可權
(3)源端OGG 管理進程(MGR)配置
(4)源端OGG 表級補全日誌(trandata)配置
表級補全日誌需要在最小補全日誌打開的情況下才起作用,之前只在資料庫級開啟了最小補全日誌(alter database add supplemental log data;),redolog記錄的信息還不夠全面,必須再使用add trandata開啟表級的補全日誌以獲得必要的信息。
(5)源端OGG 抽取進程(extract)配置
Extract進程運行在資料庫源端,負責從源端數據表或日誌中捕獲數據。Extract進程利用其內在的checkpoint機制,周期性地檢查並記錄其讀寫的位置,通常是寫入到本地的trail文件。這種機制是為了保證如果Extract進程終止或者操作系統宕機,我們重啟Extract進程後,GoldenGate能夠恢復到以前的狀態,從上一個斷點處繼續往下運行,而不會有任何數據損失。
(6)源端OGG 傳輸進程(pump)配置
pump進程運行在資料庫源端,其作用非常簡單。如果源端的Extract抽取進程使用了本地trail文件,那麼pump進程就會把trail文件以數據塊的形式通過TCP/IP協議發送到目標端,Pump進程本質上是Extract進程的一種特殊形式,如果不使用trail文件,那麼Extract進程在抽取完數據後,直接投遞到目標端。
補充:pump進程啟動時需要與目標端的mgr進程進行連接,所以需要優先將目標端的mgr提前配置好,否則會報錯連接被拒絕,無法傳輸抽取的日誌文件到目標端對應目錄下
(7)源端OGG 異構mapping文件(defgen)生成
該文件記錄了源庫需要復制的表的表結構定義信息,在源庫生成該文件後需要拷貝到目標庫的dirdef目錄,當目標庫的replica進程將傳輸過來的數據apply到目標庫時需要讀寫該文件,同構的資料庫不需要進行該操作。
2.目標端OGG配置
(1)目標端MySQL資料庫配置
確認MySQL端表結構已經存在
MySQL資料庫OGG用戶創建
mysql> create user 'ogg'@'%' identified by 'ogg';
mysql> grant all on *.* to 'ogg'@'%';
#### 提前創建好ogg存放checkpoint表的資料庫
mysql> create database ogg;
(2)目標端OGG 管理進程(MGR)配置
目標端的MGR進程和源端配置一樣,可直接將源端配置方式在目標端重復執行一次即可,該部分不在贅述
(3)目標端OGG 檢查點日誌表(checkpoint)配置
checkpoint表用來保障一個事務執行完成後,在MySQL資料庫從有一張表記錄當前的日誌回放點,與MySQL復制記錄binlog的GTID或position點類似。
#### 切換至ogg軟體目錄並執行ggsci進入命令行終端
shell> cd $OGG_HOME
shell> ggsci
ggsci> edit param ./GLOBALS
checkpointtable ogg.ggs_checkpoint
ggsci> dblogin sourcedb [email protected]:3306 userid ogg
ggsci> add checkpointtable ogg.ggs_checkpoint
(4)目標端OGG 回放線程(replicat)配置
Replicat進程運行在目標端,是數據投遞的最後一站,負責讀取目標端Trail文件中的內容,並將解析其解析為DML語句,然後應用到目標資料庫中。
#### 切換至ogg軟體目錄並執行ggsci進入命令行終端
shell> cd $OGG_HOME
shell> ggsci
#### 添加一個回放線程並與源端pump進程傳輸過來的trail文件關聯,並使用checkpoint表確保數據不丟失
ggsci> add replicat r_cms,exttrail /opt/ogg/dirdat/ms,checkpointtable ogg.ggs_checkpoint
#### 增加/編輯回放進程配置文件
ggsci> edit params r_cms
replicat r_cms
targetdb [email protected]:3306,userid ogg,password ogg
sourcedefs /opt/ogg/dirdef/cms.def
discardfile /opt/ogg/dirrpt/r_cms.dsc,append,megabytes 1024
HANDLECOLLISIONS
MAP cms.*,target cms.*;
注意:replicat進程只需配置完成,無需啟動,待全量抽取完成後再啟動。
至此源端環境配置完成
待全量數據抽取完畢後啟動目標端回放進程即可完成數據准實時同步。
3.全量同步配置
全量數據同步為一次性操作,當OGG軟體部署完成及增量抽取進程配置並啟動後,可配置1個特殊的extract進程從表中抽取數據,將抽取的數據保存到目標端生成文件,目標端同時啟動一個單次運行的replicat回放進程將數據解析並回放至目標資料庫中。
(1)源端OGG 全量抽取進程(extract)配置
#### 切換至ogg軟體目錄並執行ggsci進入命令行終端
shell> cd $OGG_HOME
shell> ggsci
#### 增加/編輯全量抽取進程配置文件
#### 其中RMTFILE指定抽取的數據直接傳送到遠端對應目錄下
#### 注意:RMTFILE參數指定的文件只支持2位字元,如果超過replicat則無法識別
ggsci> edit params ei_cms
SOURCEISTABLE
SETENV (NLS_LANG = "AMERICAN_AMERICA.AL32UTF8")
SETENV (ORACLE_SID=cms)
SETENV (ORACLE_HOME=/data/oracle/11.2/db_1)
USERID ogg@appdb,PASSWORD ogg
RMTHOST 17X.1X.84.121,MGRPORT 7809
RMTFILE /opt/ogg/dirdat/ms,maxfiles 100,megabytes 1024,purge
TABLE cms.*;
#### 啟動並查看抽取進程正常
shell> nohup ./extract paramfile ./dirprm/ei_cms.prm reportfile ./dirrpt/ei_cms.rpt &
## 查看日誌是否正常進行全量抽取
shell> tail -f ./dirrpt/ei_cms.rpt
(2)目標端OGG 全量回放進程(replicat)配置
#### 切換至ogg軟體目錄並執行ggsci進入命令行終端
shell> cd $OGG_HOME
shell> ggsci
ggsci> edit params ri_cms
SPECIALRUN
END RUNTIME
TARGETDB [email protected]:3306,USERID ogg,PASSWORD ogg
EXTFILE /opt/ogg/dirdat/ms
DISCARDFILE ./dirrpt/ri_cms.dsc,purge
MAP cms.*,TARGET cms.*;
#### 啟動並查看回放進程正常
shell> nohup ./replicat paramfile ./dirprm/ri_cms.prm reportfile ./dirrpt/ri_cms.rpt &
#### 查看日誌是否正常進行全量回放
shell> tail -f ./dirrpt/ri_cms.rpt
三、數據校驗
數據校驗是數據遷移過程中必不可少的環節,本章節提供給幾個數據校驗的思路共大家參數,校驗方式可以由以下幾個角度去實現:
1.通過OGG日誌查看全量、增量過程中discards記錄是否為0來判斷是否丟失數據;
2.通過對源端、目標端的表執行count判斷數據量是否一致;
3.編寫類似於pt-table-checksum校驗原理的程序,實現行級別一致性校驗,這種方式優缺點特別明顯,優點是能夠完全准確對數據內容進行校驗,缺點是需要遍歷每一行數據,校驗成本較高;
4.相對折中的數據校驗方式是通過業務角度,提前編寫好數十個返回結果較快的SQL,從業務角度抽樣校驗。
四、遷移問題處理
本章節將講述遷移過程中碰到的一些問題及相應的解決方式。
(一)MySQL限制
在Oracle到MySQL的表結構遷移過程中主要碰到以下兩個限制:
1. Oracle端的表結構因為最初設計不嚴謹,存在大量的列使用varchar(4000)數據類型,導致遷移到MySQL後超出行限制,表結構無法創建。由於MySQL本身數據結構的限制,一個16K的數據頁最少要存儲兩行數據,因此單行數據不能超過65,535 bytes,因此針對這種情況有兩種解決方式:
根據實際存儲數據的長度,對超長的varchar列進行收縮;
對於無法收縮的列轉換數據類型為text,但這在使用過程中可能導致一些性能問題;
2. 與第一點類似,在Innodb存儲引擎中,索引前綴長度限制是767 bytes,若使用DYNAMIC、COMPRESSED行格式且開啟innodblargeprefix的場景下,這個限制是3072 bytes,即使用utf8mb4字元集時,最多隻能對varchar(768)的列創建索引;
3. 使用ogg全量初始化同步時,若存在外鍵約束,批量導入時由於各表的插入順序不唯一,可能子表先插入數據而主表還未插入,導致報錯子表依賴的記錄不存在,因此建議數據遷移階段禁用主外鍵約束,待遷移結束後再打開。
mysql>set global foreign_key_checks=off;
(二)全量與增量銜接
HANDLECOLLISIONS參數是實現OGG全量數據與增量數據銜接的關鍵,其實現原理是在全量抽取前先開啟增量抽取進程,抓去全量應用期間產生的redo log,當全量應用完成後,開啟增量回放進程,應用全量期間的增量數據。使用該參數後增量回放DML語句時主要有以下場景及處理邏輯:
目標端不存在delete語句的記錄,忽略該問題並不記錄到discardfile
目標端丟失update記錄
- 更新的是主鍵值,update轉換成insert
- 更新的鍵值是非主鍵,忽略該問題並不記錄到discardfile
目標端重復insert已存在的主鍵值,這將被replicat進程轉換為UPDATE現有主鍵值的行
(三)OGG版本選擇
在OGG版本選擇上我們也根據用戶的場景多次更換了OGG版本,最初因為客戶的Oracle 資料庫版本為11.2.0.4,因此我們在選擇OGG版本時優先選擇使用了11版本,但是使用過程中發現,每次數據抽取生成的trail文件達到2G左右時,OGG報錯連接中斷,查看RMTFILE參數詳細說明了解到trail文件默認限制為2G,後來我們替換OGG版本為12.3,使用MAXFILES參數控制生成多個指定大小的trail文件,回放時Replicat進程也能自動輪轉讀取Trail文件,最終解決該問題。但是如果不幸Oracle環境使用了Linux 5版本的系統,那麼你的OGG需要再降一個小版本,最高只能使用OGG 12.2。
(四)無主鍵表處理
在遷移過程中還碰到一個比較難搞的問題就是當前Oracle端存在大量表沒有主鍵。在MySQL中的表沒有主鍵這幾乎是不被允許的,因為很容易導致性能問題和主從延遲。同時在OGG遷移過程中表沒有主鍵也會產生一些隱患,比如對於沒有主鍵的表,OGG默認是將這個一行數據中所有的列拼湊起來作為唯一鍵,但實際還是可能存在重復數據導致數據同步異常,Oracle官方對此也提供了一個解決方案,通過對無主鍵表添加GUID列來作為行唯一標示,具體操作方式可以搜索MOS文檔ID 1271578.1進行查看。
(五)OGG安全規則
報錯信息
2019-03-08 06:15:22 ERROR OGG-01201 Error reported by MGR : Access denied.
錯誤信息含義源端報錯表示為該抽取進程需要和目標端的mgr進程通訊,但是被拒絕,具體操作為:源端的extract進程需要與目標端mgr進行溝通,遠程將目標的replicat進行啟動,由於安全性現在而被拒絕連接。
報錯原因
在Oracle OGG 11版本後,增加了新特性安全性要求,如果需要遠程啟動目標端的replicat進程,需要在mgr節點增加訪問控制參數允許遠程調用
解決辦法
在源端和目標端的mgr節點上分別增加訪問控制規則並重啟
## 表示該mgr節點允許(ALLOW)10.186網段(IPADDR)的所有類型程序(PROG *)進行連接訪問ACCESSRULE, PROG *, IPADDR 10.186.*.*, ALLOW
(六)數據抽取方式
報錯信息
2019-03-15 14:49:04 ERROR OGG-01192 Trying to use RMTTASK on data types which may be written as LOB chunks (Table: 'UNIONPAYCMS.CMS_OT_CONTENT_RTF').
報錯原因
根據官方文檔說明,當前直接通過Oracle資料庫抽取數據寫到MySQL這種initial-load方式,不支持LOBs數據類型,而表 UNIONPAYCMS.CMSOTCONTENT_RTF 則包含了CLOB欄位,無法進行傳輸,並且該方式不支持超過4k的欄位數據類型
解決方法
將抽取進程中的RMTTASK改為RMTFILE參數 官方建議將數據先抽取成文件,再基於文件數據解析進行初始化導入
C. 如何進行大數據分析及處理
1.可視化分析
大數據分析的使用者有大數據分析專家,同時還有普通用戶,但是他們二者對於大數據分析最基本的要求就是可視化分析,因為可視化分析能夠直觀的呈現大數據特點,同時能夠非常容易被讀者所接受,就如同看圖說話一樣簡單明了。
2. 數據挖掘演算法
大數據分析的理論核心就是數據挖掘演算法,各種數據挖掘的演算法基於不同的數據類型和格式才能更加科學的呈現出數據本身具備的特點,也正是因為這些被全世界統計 學家所公認的各種統計方法(可以稱之為真理)才能深入數據內部,挖掘出公認的價值。另外一個方面也是因為有這些數據挖掘的演算法才能更快速的處理大數據,如果一個演算法得花上好幾年才能得出結論,那大數據的價值也就無從說起了。
3. 預測性分析大數據分析最終要的應用領域之一就是預測性分析,從大數據中挖掘出特點,通過科學的建立模型,之後便可以通過模型帶入新的數據,從而預測未來的數據。
4. 語義引擎
非結構化數據的多元化給數據分析帶來新的挑戰,我們需要一套工具系統的去分析,提煉數據。語義引擎需要設計到有足夠的人工智慧以足以從數據中主動地提取信息。
5.數據質量和數據管理。 大數據分析離不開數據質量和數據管理,高質量的數據和有效的數據管理,無論是在學術研究還是在商業應用領域,都能夠保證分析結果的真實和有價值。
大數據分析的基礎就是以上五個方面,當然更加深入大數據分析的話,還有很多很多更加有特點的、更加深入的、更加專業的大數據分析方法。
D. ETL會不會淘汰
摘要 你好,目前來說是不會的,ETL任然是大數據時代下數據遷移不可缺少的
E. 大數據etl工具有哪些
ETL是數據倉庫中的非常重要的一環,是承前啟後的必要的一步。ETL負責將分布的、異構數據源中的數據如關系數據、平面數據文件等抽取到臨時中間層後進行清洗、轉換、集成,最後載入到數據倉庫或數據集市中,成為聯機分析處理、數據挖掘的基礎。
下面給大家介紹一下什麼是ETL以及ETL常用的三種工具——Datastage,Informatica,Kettle。
一、什麼是ETL?
ETL,Extract-Transform-Load 的縮寫,用來描述將數據從來源端經過抽取(extract)、轉換(transform)、載入(load)至目的端的過程。
數據倉庫結構
通俗的說法就是從數據源抽取數據出來,進行清洗加工轉換,然後載入到定義好的數據倉庫模型中去。目的是將企業中的分散、零亂、標准不統一的數據整合到一起,為企業的決策提供分析依據。
ETL是BI項目重要的一個環節,其設計的好壞影響生成數據的質量,直接關繫到BI項目的成敗。
二、為什麼要用ETL工具?
在數據處理的時候,我們有時會遇到這些問題:
▶ 當數據來自不同的物理主機,這時候如使用SQL語句去處理的話,就顯得比較吃力且開銷也更大。
▶ 數據來源可以是各種不同的資料庫或者文件,這時候需要先把他們整理成統一的格式後才可以進行數據的處理,這一過程用代碼實現顯然有些麻煩。
▶ 在資料庫中我們當然可以使用存儲過程去處理數據,但是處理海量數據的時候存儲過程顯然比較吃力,而且會佔用較多資料庫的資源,這可能會導致數據資源不足,進而影響資料庫的性能。
而上述遇到的問題,我們用ETL工具就可以解決。ETL工具具有以下幾點優勢:
1、支持多種異構數據源的連接。(部分)
2、圖形化的界面操作十分方便。
3、處理海量數據速度快、流程更清晰等。
三、ETL工具介紹
1、Datastage
IBM公司的商業軟體,最專業的ETL工具,但同時價格不菲,適合大規模的ETL應用。
使用難度:★★★★
2、Informatica
商業軟體,相當專業的ETL工具。價格上比Datastage便宜一點,也適合大規模的ETL應用。
使用難度:★★
3、Kettle
免費,最著名的開源產品,是用純java編寫的ETL工具,只需要JVM環境即可部署,可跨平台,擴展性好。
使用難度:★★
四、三種ETL工具的對比
Datastage、Informatica、Kettle三個ETL工具的特點和差異介紹:
1、操作
這三種ETL工具都是屬於比較簡單易用的,主要看開發人員對於工具的熟練程度。
Informatica有四個開發管理組件,開發的時候我們需要打開其中三個進行開發,Informatica沒有ctrl+z的功能,如果對job作了改變之後,想要撤銷,返回到改變前是不可能的。相比Kettle跟Datastage在測試調試的時候不太方便。Datastage全部的操作在同一個界面中,不用切換界面,能夠看到數據的來源,整個job的情況,在找bug的時候會比Informatica方便。
Kettle介於兩者之間。
2、部署
Kettle只需要JVM環境,Informatica需要伺服器和客戶端安裝,而Datastage的部署比較耗費時間,有一點難度。
3、數據處理的速度
大數據量下Informatica與Datastage的處理速度是比較快的,比較穩定。Kettle的處理速度相比之下稍慢。
4、服務
Informatica與Datastage有很好的商業化的技術支持,而Kettle則沒有。商業軟體的售後服務上會比免費的開源軟體好很多。
5、風險
風險與成本成反比,也與技術能力成正比。
6、擴展
Kettle的擴展性無疑是最好,因為是開源代碼,可以自己開發拓展它的功能,而Informatica和Datastage由於是商業軟體,基本上沒有。
7、Job的監控
三者都有監控和日誌工具。
在數據的監控上,個人覺得Datastage的實時監控做的更加好,可以直觀看到數據抽取的情況,運行到哪一個控制項上。這對於調優來說,我們可以更快的定位到處理速度太慢的控制項並進行處理,而informatica也有相應的功能,但是並不直觀,需要通過兩個界面的對比才可以定位到處理速度緩慢的控制項。有時候還需要通過一些方法去查找。
8、網上的技術文檔
Datastage < Informatica < kettle,相對來說,Datastage跟Informatica在遇到問題去網上找到解決方法的概率比較低,kettle則比較多。
五、項目經驗分享
在項目中,很多時候我們都需要同步生產庫的表到數據倉庫中。一百多張表同步、重復的操作,對開發人員來說是細心和耐心的考驗。在這種情況下,開發人員最喜歡的工具無疑是kettle,多個表的同步都可以用同一個程序運行,不必每一張表的同步都建一個程序,而informatica雖然有提供工具去批量設計,但還是需要生成多個程序進行一一配置,而datastage在這方面就顯得比較笨拙。
在做增量表的時候,每次運行後都需要把將最新的一條數據操作時間存到資料庫中,下次運行我們就取大於這個時間的數據。Kettle有控制項可以直接讀取資料庫中的這個時間置為變數;對於沒有類似功能控制項的informatica,我們的做法是先讀取的資料庫中的這個時間存到文件,然後主程序運行的時候指定這個文件為參數文件,也可以得到同樣的效果