新聞中心
在遇到跨庫(kù)或者異庫(kù)數(shù)據(jù)同步時(shí),我們一般都會(huì)借助ETL工具來(lái)實(shí)現(xiàn)數(shù)據(jù)同步功能。比如目前大家較為熟知的Kettle和Datax。但是,這兩個(gè)需要定時(shí)去查詢數(shù)據(jù)庫(kù)的數(shù)據(jù),會(huì)存在一定的延遲,而且,默認(rèn)采用全量同步的方式,想要增量,需要自己做特殊的處理。那么,有沒(méi)有開(kāi)源的工具,既能滿足全量和增量,又能達(dá)到相對(duì)比較實(shí)時(shí)的呢?接下來(lái),我們繼續(xù)往下看。

成都創(chuàng)新互聯(lián)提供高防服務(wù)器租用、云服務(wù)器、香港服務(wù)器、成都服務(wù)器托管等
Kettle
在ETL行列中,kettle算是人氣比較旺的一款工具,功能多且強(qiáng)大,開(kāi)源,可視化。使用方便、簡(jiǎn)潔,但是,體量越來(lái)越大,性能一般。
可以自己下載源碼編譯,要求Maven 3+、Java JDK 11。
??https://github.com/pentaho/pentaho-kettle.git??
DataX
DataX 是阿里云 DataWorks數(shù)據(jù)集成 的開(kāi)源版本,在阿里巴巴集團(tuán)內(nèi)被廣泛使用的離線數(shù)據(jù)同步工具/平臺(tái)。DataX 實(shí)現(xiàn)了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、Hologres、DRDS, databend 等各種異構(gòu)數(shù)據(jù)源之間高效的數(shù)據(jù)同步功能。
|
類型 |
數(shù)據(jù)源 |
Reader(讀) |
Writer(寫) |
文檔 |
|
RDBMS 關(guān)系型數(shù)據(jù)庫(kù) |
MySQL |
√ |
√ |
讀 、寫 |
|
Oracle |
√ |
√ |
讀 、寫 |
|
|
OceanBase |
√ |
√ |
讀 、寫 |
|
|
SQLServer |
√ |
√ |
讀 、寫 |
|
|
PostgreSQL |
√ |
√ |
讀 、寫 |
|
|
DRDS |
√ |
√ |
讀 、寫 |
|
|
Kingbase |
√ |
√ |
讀 、寫 |
|
|
通用RDBMS(支持所有關(guān)系型數(shù)據(jù)庫(kù)) |
√ |
√ |
讀 、寫 |
|
|
阿里云數(shù)倉(cāng)數(shù)據(jù)存儲(chǔ) |
ODPS |
√ |
√ |
讀 、寫 |
|
ADB |
√ |
寫 |
||
|
ADS |
√ |
寫 |
||
|
OSS |
√ |
√ |
讀 、寫 |
|
|
OCS |
√ |
寫 |
||
|
Hologres |
√ |
寫 |
||
|
AnalyticDB For PostgreSQL |
√ |
寫 |
||
|
阿里云中間件 |
datahub |
√ |
√ |
讀 、寫 |
|
SLS |
√ |
√ |
讀 、寫 |
|
|
阿里云圖數(shù)據(jù)庫(kù) |
GDB |
√ |
√ |
讀 、寫 |
|
NoSQL數(shù)據(jù)存儲(chǔ) |
OTS |
√ |
√ |
讀 、寫 |
|
Hbase0.94 |
√ |
√ |
讀 、寫 |
|
|
Hbase1.1 |
√ |
√ |
讀 、寫 |
|
|
Phoenix4.x |
√ |
√ |
讀 、寫 |
|
|
Phoenix5.x |
√ |
√ |
讀 、寫 |
|
|
MongoDB |
√ |
√ |
讀 、寫 |
|
|
Cassandra |
√ |
√ |
讀 、寫 |
|
|
數(shù)倉(cāng)數(shù)據(jù)存儲(chǔ) |
StarRocks |
√ |
√ |
讀 、寫 |
|
ApacheDoris |
√ |
寫 |
||
|
ClickHouse |
√ |
寫 |
||
|
Databend |
√ |
寫 |
||
|
Hive |
√ |
√ |
讀 、寫 |
|
|
kudu |
√ |
寫 |
||
|
無(wú)結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ) |
TxtFile |
√ |
√ |
讀 、寫 |
|
FTP |
√ |
√ |
讀 、寫 |
|
|
HDFS |
√ |
√ |
讀 、寫 |
|
|
Elasticsearch |
√ |
寫 |
||
|
時(shí)間序列數(shù)據(jù)庫(kù) |
OpenTSDB |
√ |
讀 |
|
|
TSDB |
√ |
√ |
讀 、寫 |
|
|
TDengine |
√ |
√ |
讀 、寫 |
??https://github.com/alibaba/DataX.git??
DataX-Web
前面提到DataX,那么就不得不提一下DataX-Web,DataX沒(méi)有可視化界面,不過(guò)目前,已經(jīng)有熱心開(kāi)基于DataX開(kāi)發(fā)了對(duì)應(yīng)的Web界面。DataX Web是在DataX之上開(kāi)發(fā)的分布式數(shù)據(jù)同步工具,提供簡(jiǎn)單易用的 操作界面,降低用戶使用DataX的學(xué)習(xí)成本,縮短任務(wù)配置時(shí)間,避免配置過(guò)程中出錯(cuò)。用戶可通過(guò)頁(yè)面選擇數(shù)據(jù)源即可創(chuàng)建數(shù)據(jù)同步任務(wù),支持RDBMS、Hive、HBase、ClickHouse、MongoDB等數(shù)據(jù)源,RDBMS數(shù)據(jù)源可批量創(chuàng)建數(shù)據(jù)同步任務(wù),支持實(shí)時(shí)查看數(shù)據(jù)同步進(jìn)度及日志并提供終止同步功能,集成并二次開(kāi)發(fā)xxl-job可根據(jù)時(shí)間、自增主鍵增量同步數(shù)據(jù)。
任務(wù)”執(zhí)行器”支持集群部署,支持執(zhí)行器多節(jié)點(diǎn)路由策略選擇,支持超時(shí)控制、失敗重試、失敗告警、任務(wù)依賴,執(zhí)行器CPU.內(nèi)存.負(fù)載的監(jiān)控等等。后續(xù)還將提供更多的數(shù)據(jù)源支持、數(shù)據(jù)轉(zhuǎn)換UDF、表結(jié)構(gòu)同步、數(shù)據(jù)同步血緣等更為復(fù)雜的業(yè)務(wù)場(chǎng)景。
??https://github.com/WeiYe-Jing/datax-web.git??
Airbyte
一款開(kāi)源的可視化ETL功能,支持很多數(shù)據(jù)源,并且支持全量及增量同步。
??https://github.com/airbytehq/airbyte.git??
benthos
Benthos 是一個(gè)開(kāi)源的、高性能和彈性的數(shù)據(jù)流處理器,支持多種方式的數(shù)據(jù)接入、加工、轉(zhuǎn)換。
??https://github.com/benthosdev/benthos.git??
canal
阿里巴巴開(kāi)源的MySQL binlog 增量訂閱&消費(fèi)組件,基于日志只能做增量同步,很多工作需要自己處理。
??https://github.com/alibaba/canal.git??
Maxwell
也是監(jiān)聽(tīng)MySQL binlog,并將數(shù)據(jù)更解析為JSON寫入到Kafka等其他流媒體平臺(tái)。
??https://github.com/zendesk/maxwell.git??
debezium
Debezium是一個(gè)捕獲數(shù)據(jù)更改(CDC)平臺(tái),并且利用Kafka和Kafka Connect實(shí)現(xiàn)了自己的持久性、可靠性和容錯(cuò)性。每一個(gè)部署在Kafka Connect分布式的、可擴(kuò)展的、容錯(cuò)性的服務(wù)中的connector監(jiān)控一個(gè)上游數(shù)據(jù)庫(kù)服務(wù)器,捕獲所有的數(shù)據(jù)庫(kù)更改,然后記錄到一個(gè)或者多個(gè)Kafka topic(通常一個(gè)數(shù)據(jù)庫(kù)表對(duì)應(yīng)一個(gè)kafka topic)。Kafka確保所有這些數(shù)據(jù)更改事件都能夠多副本并且總體上有序(Kafka只能保證一個(gè)topic的單個(gè)分區(qū)內(nèi)有序),這樣,更多的客戶端可以獨(dú)立消費(fèi)同樣的數(shù)據(jù)更改事件而對(duì)上游數(shù)據(jù)庫(kù)系統(tǒng)造成的影響降到很小(如果N個(gè)應(yīng)用都直接去監(jiān)控?cái)?shù)據(jù)庫(kù)更改,對(duì)數(shù)據(jù)庫(kù)的壓力為N,而用debezium匯報(bào)數(shù)據(jù)庫(kù)更改事件到kafka,所有的應(yīng)用都去消費(fèi)kafka中的消息,可以把對(duì)數(shù)據(jù)庫(kù)的壓力降到1)。另外,客戶端可以隨時(shí)停止消費(fèi),然后重啟,從上次停止消費(fèi)的地方接著消費(fèi)。每個(gè)客戶端可以自行決定他們是否需要exactly-once或者at-least-once消息交付語(yǔ)義保證,并且所有的數(shù)據(jù)庫(kù)或者表的更改事件是按照上游數(shù)據(jù)庫(kù)發(fā)生的順序被交付的。
??https://github.com/debezium/debezium.git??
Flink CDC
Apache Flink?的CDC連接器集成了Debezium作為捕獲數(shù)據(jù)更改的引擎。雖然功能強(qiáng)大,但是比較重。
??https://github.com/ververica/flink-cdc-connectors.git??
目前,異構(gòu)數(shù)據(jù)ETL同步,一般基于兩種方式:查詢和日志,基于查詢做全量同步,基于日志做增量同步,日志方式延遲會(huì)比較小,查詢來(lái)做增量,延遲會(huì)比較大,查詢頻率越高,對(duì)數(shù)據(jù)庫(kù)性能也會(huì)有影響。隨著各種熱門技術(shù)的興起,在Github中也有越來(lái)越多的解決方案,我們可以根據(jù)自己的實(shí)際情況選擇合適自己的工具。
標(biāo)題名稱:異構(gòu)跨庫(kù)數(shù)據(jù)同步還在用Datax?來(lái)看看這幾個(gè)開(kāi)源的同步方案
文章轉(zhuǎn)載:http://www.dlmjj.cn/article/cogcphp.html


咨詢
建站咨詢
