余姚網(wǎng)站建設(shè)62752762最佳磁力吧ciliba搜索引擎
一、數(shù)據(jù)采集
二、數(shù)據(jù)同步
2.1、數(shù)據(jù)同步方式:
數(shù)據(jù)同步的三種方式:直連方式、數(shù)據(jù)文件同步、數(shù)據(jù)庫日志解析方式
關(guān)系型數(shù)據(jù)庫的結(jié)構(gòu)化數(shù)據(jù):MYSQL、Oracle、DB2、SQL Server
非關(guān)系型數(shù)據(jù)庫的非結(jié)構(gòu)化數(shù)據(jù)(數(shù)據(jù)庫表形式存儲):OceanBase、HBase、MongoDB
文件系統(tǒng)的結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)(文件形式存儲):阿里云對象存儲OSS、文件存儲NAS
2.1.1、直連同步
通過規(guī)范接口API(ODBC/JDBC等)和基于動態(tài)鏈接庫的方式直連業(yè)務(wù)庫
適合:適合操作型業(yè)務(wù)系統(tǒng)數(shù)據(jù)同步
優(yōu)點(diǎn):配置簡單、方便
缺點(diǎn):對源系統(tǒng)性能影響 -- 可考慮主備的方式從備庫抽取,但當(dāng)數(shù)據(jù)量很大時(shí),抽取性能很差,不適合從業(yè)務(wù)庫到數(shù)倉的數(shù)據(jù)同步
主備抽取:
?
?2.1.2、數(shù)據(jù)文件同步
數(shù)據(jù)文件通過約定好的文件編碼、格式、大小等將源庫生成的數(shù)據(jù)的文本文件,通過專門的文件服務(wù)器(如FTP服務(wù)器),加載到目標(biāo)數(shù)據(jù)庫系統(tǒng)
適合:數(shù)據(jù)源有多個(gè)異構(gòu)數(shù)據(jù)庫系統(tǒng)(MYSQL、Oracle、SQL Server、DB2等),互聯(lián)網(wǎng)的日志類數(shù)據(jù)通常是文本文件,也適合
優(yōu)點(diǎn):適合多個(gè)數(shù)據(jù)源
缺點(diǎn):文件服務(wù)器上傳下載易丟包,通常在上傳時(shí)候伴隨一份校驗(yàn)文件,記錄數(shù)據(jù)文件數(shù)據(jù)量和大小。同時(shí)也可以在上傳下載時(shí)候進(jìn)行壓縮,減少傳輸量
?
2.1.3、數(shù)據(jù)庫日志解析(主流)
大多主流庫實(shí)現(xiàn)了日志文件系統(tǒng)進(jìn)行系統(tǒng)恢復(fù)、主從同步,所以可以通過解析日志文件進(jìn)行獲取數(shù)據(jù)變更,達(dá)到增量數(shù)據(jù)同步需求。
以O(shè)rcale為例,通過源系統(tǒng)進(jìn)程,讀取歸檔日志文件收集變化數(shù)據(jù)信息,解析到對應(yīng)目標(biāo)數(shù)據(jù)文件中(這種讀操作在操作系統(tǒng)層面,不影響源系統(tǒng)性能---在機(jī)器層面)。然后通過網(wǎng)絡(luò)協(xié)議,實(shí)現(xiàn)源系統(tǒng)和目標(biāo)系統(tǒng)之間數(shù)據(jù)文件傳輸(相關(guān)進(jìn)程保證數(shù)據(jù)文件接受和網(wǎng)絡(luò)包的順序,童工網(wǎng)絡(luò)傳輸冗余,確保文件完整性)。數(shù)據(jù)到目標(biāo)系統(tǒng)后可通過數(shù)據(jù)加載模塊完成數(shù)據(jù)導(dǎo)入,完成同步。
適用:絕大部分實(shí)現(xiàn)了日志文件系統(tǒng)的主流數(shù)據(jù)庫,用于絕大多數(shù)業(yè)務(wù)庫到數(shù)倉增量同步
優(yōu)點(diǎn):效率高、性能好,達(dá)到了實(shí)時(shí)和準(zhǔn)實(shí)時(shí)同步能力(ms級別延遲),對源庫性能影響很小
缺點(diǎn):數(shù)據(jù)延遲(例:業(yè)務(wù)庫做補(bǔ)錄會導(dǎo)致數(shù)據(jù)增量超出系統(tǒng)處理峰值,導(dǎo)致數(shù)據(jù)延遲);
? ? ? ? ??投入較大,需要部署一個(gè)實(shí)時(shí)抽取任務(wù)抽取數(shù)據(jù)同步;
? ? ? ? ? 數(shù)據(jù)飄移和遺漏:“零點(diǎn)飄移”問題
注:日志抽取獲得所有數(shù)據(jù)記錄變更(增-I、刪-D、改-U),所以我們需要根據(jù)主鍵去重按照時(shí)間倒排去獲取最后狀態(tài)變化情況
1、不過濾刪除。不管是否是刪除操作,都獲取同一主鍵最后的變更記錄
2、過濾最后一條刪除記錄。如果同一主鍵最后一跳變更記錄是刪除操作,就取倒數(shù)第二條變更記錄
3、過濾刪除和之前的操作。如果同一主鍵的變更記錄中有刪除操作,則根據(jù)操作時(shí)間將刪除操作對應(yīng)的記錄和之前的記錄都過濾掉