數據集成是把不同來源、格式、特點性質的數據在邏輯上或物理上有機地集中,從而為企業提供全面的數據共享。
數據集成的核心任務是要將互相關聯的異構數據源集成到一起,使用戶能夠以透明的方式訪問這些數據資源。
數據集成的目的是指維護數據源整體上的數據一致性,解決企業“信息孤島”的問題,提高信息共享和利用的效率。

點對點數據集成
點多點集成是最早出現的應用集成模式,采用點對點的方式開發接口程序,把需要進行信息交換的系統一對一地集成起來,從而實現整合應用的目標。

點對點的連接方式在連接對象比較少的時候,確實是一種簡單和高效的連接方式,具有開發周期短、技術難度低的優勢。但其最大的問題是,當連接對象多的時候,連接路徑會以指數方式劇增,效率和維護成本是最大的問題。
當需要連接的應用系統越來越多時,點對點集成方式將把整個企業信息系統接口變成無法管理的“混亂的線團”。
點對點的集成架構不能集中管理和監控接口服務,僅支持一對一的數據交換,如果交換協議不一致,開發則非常困難。即,如果溝通的語言、文字、格式、方法等有差異,則每一個連接方都要同時支持和維護多種連接方式。
點對點的集成是緊耦合的,當一個連接變化時,所有與其相關的接口程序都需要重新開發或調試。
基於以上幾點,在多點互連的情況下,點對點連接方式成本高,可用性和可維護性低。
顯然,這不是一個好的連接方式。

總線式數據集成
總線式數據集成是通過在中間件上定義和執行集成規則,其拓撲結構不再是點對點集成形成的無規則網狀,而主要是中心輻射型的(Hub型)星型結構或總線結構。

總線結構通過與點對點集成架構相比,采用總線架構可以顯著減少編寫的專用集成代碼量,提升了集成接口的可管理性。不同連接對象如果連接方式有差異,可以通過總線完全屏蔽掉,做到對連接對象透明,無需各個連接對象關心。通過總線結構,把原來復雜的網狀結構變成簡單的星形結構,極大提高了硬件的可靠性和可用性。
總線式數據集成的一代:電子數據交換系統(EDI)
EDI不是用戶之間簡單的數據交換,EDI用戶需要按照國際通用的消息格式發送信息,接收方也需要按國際統一規定的語法規則,對消息進行處理,並引起其他相關系統的EDI綜合處理。標准化得EDI格式轉換保證了不同國家、不同地區、不同企業的各種商業文件(如單證、回執、載貨清單、驗收通知、出口許可證、原產地證等)得以無障礙電子化交換,促進了國際貿易的發展。
總線式數據集成二代:企業服務總線(ESB)
ESB的使用標志着企業的應用集成進入了SOA時代(SOA是一種面向服務的集成架構)。SOA架構的其主要特征是基於一系列Web標准或規范來開發接口程序,包括UDDI、SOAP、WSDL、XML,並采用支持這些規范的中間件產品作為集成平台,從而實現了一種開放而富有彈性的應用集成方式。
ESB是對web服務(WebService)的注冊、編排和管理。
WebService是一種跨編程語言、跨操作系統平台的遠程調用技術,是web的一種標准。可以理解為:WebService是一個應用程序向外界暴露了一個能通過Web調用的API接口,我們把調用這個WebService的應用程序稱作客戶端,把提供這個WebService的應用程序稱作服務端。客戶端進行服務的遠程調用前,需要知道服務的地址與服務有什么方法可以調用。
因此,WebService服務端通過一個文件(WSDL)來說明自己家里有啥服務可以對外調用,服務是什么,服務中有哪些方法,方法輸入的參數是什么,返回值是什么,服務的網絡地址是什么,通過什么方式來調用等。
WSDL是一個基於XML的語言,用於描述WebService及其函數、參數和返回值,它是WebService客戶端和服務器端都能理解的標准格式。

離線批量數據集成
在傳統數據集成的語境下,離線批量數據集成,通常是指基於ETL工具的離線數據集成,ETL即數據的提取(Extract)、轉換(Transform)和加載(Load)。

ETL是數據倉庫的核心和靈魂,能夠按照統一的規則集成並提高數據的價值,是負責完成數據從數據源向目標數據倉庫轉化的過程,是實施數據倉庫的重要步驟。
在數據倉庫、數據湖、數據資產管理等項目中,ETL都是最核心的內容。ETL通過ETL作業流(任務)從一個或多個數據源中抽取數據,然后將其復制到數據倉庫。抽取類型有全量抽取、增量抽取、准實時抽取、文件提取等方式。針對不同的數據提取場景設計不同的數據抽取類型。在數據抽取過程中,需要將不符合規則的數據過濾掉,並按照一定的業務規則或數據顆粒度轉換成數據倉庫可用的數據,這個過程就是數據的清洗和轉換。最后,就是調用數據庫的服務將數據裝載至數據庫中。
ETL的實現有多種方法,常用的有三種:
第一種是借助ETL工具:例如:Informatic、IBM CDC、talend、kettle、Nifi等,借助工具可以快速的建立起ETL工程,屏蔽了復雜的編碼任務,提高了速度,降低了難度,但是缺少靈活性。
第二種是SQL編碼實現:SQL的方法優點是靈活,提高ETL運行效率,但是編碼復雜,對技術要求比較高。
第三種是ETL工具和SQL組合實現:綜合了前面二種的優點,會極大地提高ETL的開發速度和效率。

流式數據集成
流式數據集成也叫流式數據實時數據處理,通常是采用Flume、Kafka等流式數據處理工具對NoSQL數據庫進行實時監控和復制,然后根據業務場景做對應的處理(例如去重、去噪、中間計算等),之后再寫入到對應的數據存儲中。

這個過程類似傳統的ETL,但它是流式的處理方式,而非定時的批處理Job,NoSQL數據庫采集工具均采用分布式架構,能滿足每秒數百MB的日志數據采集和傳輸需求。
Kafka 就是一個能夠處理實時的流式數據的一個新型ETL解決方案。
Kafka 能夠通過 Kafka Connect API 實現流數據管道的構建,也就是 ETL 中的 E和L。Connect API 利用了 Kafka 的可擴展性,kafka connect是圍繞kafka構建的一個可伸縮,可靠的數據流通道,通過kafka connect可以快速實現大量數據進出kafka從而和其他源數據源或者目標數據源進行交互構造一個低延遲的數據通道。
流處理和轉換可以通過 Kafka Streams API 來實現,也就是構建了ETL中的T,Kafka Streams用於在Kafka上構建高可分布式、拓展性,容錯的應用程序。它建立在流處理的一系列重要功能基礎之上,比如正確區分事件事件和處理時間,處理遲到數據以及高效的應用程序狀態管理。
Kafka Streams包含了ConsumerAPI 和ProducerAPI的功能,增強了對數據流的處理能力。使用 Kafka 作為流處理平台能夠消除為每個目標 sink、數據存儲或系統創建定制化(很可能是重復的)抽取、轉換和加載組件的需求。來自數據源的數據經過抽取后可以作為結構化的事件放到平台中,然后可以通過流處理進行數據的轉換。

網絡數據集成
網絡數據集成也叫網絡數據采集,指通過網絡爬蟲或網站公開 API 等方式從網站上獲取數據信息的過程。

網頁爬蟲,即一種按照一定的規則,自動地抓取互聯網信息的程序或者腳本,一般分為通用網絡爬蟲和聚焦網絡爬蟲兩種。網頁爬蟲從一個或若干初始網頁的URL開始,獲得初始網頁上的URL,在抓取網頁的過程中,不斷從當前頁面上抽取新的URL放入隊列,直到滿足系統的一定停止條件。
聚焦爬蟲的工作流程較為復雜,需要根據一定的網頁分析算法過濾與主題無關的鏈接,保留有用的鏈接並將其放入等待抓取的URL隊列。
網頁爬蟲支持文本文件、圖片、音頻、視頻等非結構化數據、半結構化數據從網頁中提取出來,存儲在本地的存儲系統中。
目前網絡上有許多網頁爬蟲,Octoparse、WebCopy、HTTrack、Getleft、Scraper等,並且這些工具都是免費的哦!
當然,你是一個技術大大的話,也可以寫自己的爬蟲程序。