數(shù)據(jù)怎么取——異構(gòu)對(duì)接的數(shù)據(jù)庫(kù)只讀路線)
# 沒API的老系統(tǒng)數(shù)據(jù)怎么取——異構(gòu)對(duì)接的數(shù)據(jù)庫(kù)只讀路線## 引言企業(yè)做數(shù)據(jù)集成碰到的第一個(gè)攔路虎往往不是技術(shù)多復(fù)雜而是手里壓根沒有像樣的接口。一套ERP是十幾年前上的原廠早就停維接口文檔跟著離職的開發(fā)一起沒了MES是某廠商的封閉產(chǎn)品開放接口要另外付費(fèi)WMS倒是有幾個(gè)REST但字段對(duì)不上需求。技術(shù)決策者面對(duì)的現(xiàn)實(shí)是要打通的十幾個(gè)系統(tǒng)里能直接拿來(lái)用的API可能不到三成。異構(gòu)系統(tǒng)對(duì)接這道關(guān)繞不開沒API怎么辦這個(gè)最樸素的難題。## 一、沒API的幾種典型情況情況一老系統(tǒng)無(wú)API。這是最難的一類。企業(yè)IT底座里普遍有一兩套運(yùn)行了十年以上的系統(tǒng)這些系統(tǒng)設(shè)計(jì)時(shí)壓根沒有API的概念所有數(shù)據(jù)交互走數(shù)據(jù)庫(kù)直連或者文件導(dǎo)出。要拿數(shù)據(jù)真正穩(wěn)的入口是數(shù)據(jù)庫(kù)本身。情況二有API但字段不全。某裝備制造企業(yè)的MES開放了工單查詢接口但只返回工單號(hào)、狀態(tài)、完工數(shù)量三個(gè)字段工藝參數(shù)、班次、設(shè)備這些關(guān)鍵字段沒有。接口看似通了實(shí)際能用起來(lái)的數(shù)據(jù)不到業(yè)務(wù)需要的四成。這種半接口對(duì)接往往比無(wú)接口更折騰因?yàn)榻o了希望又滿足不了。情況三接口要收費(fèi)或?qū)徟芷陂L(zhǎng)。一些商業(yè)系統(tǒng)的開放接口是收費(fèi)模塊或者要走廠商審批周期兩三個(gè)月起步。業(yè)務(wù)側(cè)等不起這種節(jié)奏技術(shù)側(cè)又不能繞過廠商亂改系統(tǒng)。異構(gòu)系統(tǒng)對(duì)接在這種場(chǎng)景下被接口的商業(yè)策略卡死了。向量空間JBoltAI在項(xiàng)目里反復(fù)遇到的正是這三類加在一起的局面——純無(wú)API的占大頭有接口不完整的中等接口要花錢花時(shí)間等審批的也不少。指望靠寫接口把所有系統(tǒng)打通在大多數(shù)企業(yè)里不現(xiàn)實(shí)。## 二、數(shù)據(jù)庫(kù)只讀沒API時(shí)的務(wù)實(shí)路線既然接口這條路走不通退一步的路線是數(shù)據(jù)庫(kù)只讀。核心原則就一條不修改原系統(tǒng)結(jié)構(gòu)只架在現(xiàn)有系統(tǒng)之上讀數(shù)據(jù)。向量空間JBoltAI做異構(gòu)對(duì)接時(shí)把這條原則當(dāng)成底線——對(duì)客戶業(yè)務(wù)系統(tǒng)零侵入只讀不改。為什么強(qiáng)調(diào)只讀。老系統(tǒng)最怕被改壞。一套跑了十年的ERP數(shù)據(jù)庫(kù)結(jié)構(gòu)是當(dāng)年廠商設(shè)計(jì)的表之間有隱含的觸發(fā)器、有存儲(chǔ)過程、有歷史遺留的臟數(shù)據(jù)依賴。一旦寫操作進(jìn)去很可能破壞原系統(tǒng)的數(shù)據(jù)一致性。只讀連接從根上規(guī)避這個(gè)風(fēng)險(xiǎn)原系統(tǒng)一行代碼、一條記錄都不動(dòng)只是在旁邊讀一份。只讀連接的工程做法分幾步。第一步拿到數(shù)據(jù)庫(kù)的只讀賬號(hào)權(quán)限只給SELECT不給INSERT、UPDATE、DELETE。第二步對(duì)核心業(yè)務(wù)表做結(jié)構(gòu)分析搞清楚訂單、工單、庫(kù)存這些核心實(shí)存在哪些表、字段含義是什么。第三步建一層只讀視圖把原始表的字段翻譯成業(yè)務(wù)可理解的名稱比如把MES里字段名wo_status3翻譯成工單完工。向量空間JBoltAI在對(duì)接某裝備制造企業(yè)老ERP時(shí)就是用這套只讀路線原系統(tǒng)一行沒動(dòng)把訂單、BOM、庫(kù)存三張核心表的數(shù)據(jù)取了出來(lái)。關(guān)鍵工程細(xì)節(jié)有兩個(gè)。一個(gè)是連接池要單獨(dú)建不要復(fù)用原系統(tǒng)的連接避免讀操作的負(fù)載拖垮生產(chǎn)庫(kù)建議用獨(dú)立的只讀副本或者跑在業(yè)務(wù)低峰期。另一個(gè)是增量同步而非全量拉取訂單表幾百萬(wàn)行全量拉一次很慢按update_time做增量只讀每天變化的那幾千行對(duì)生產(chǎn)庫(kù)的壓力小一個(gè)數(shù)量級(jí)。## 三、連數(shù)據(jù)庫(kù)文檔都沒有怎么辦比沒API更極端的情況是連數(shù)據(jù)庫(kù)表結(jié)構(gòu)文檔都沒有。某紡織企業(yè)的老MES是十年前外購(gòu)的廠商早就聯(lián)系不上數(shù)據(jù)庫(kù)里幾百?gòu)埍肀砻瞧匆艨s寫字段是c001、c002這種編號(hào)沒人知道每張表裝的是什么。這種情況下向量空間JBoltAI用的辦法是讓AI分析數(shù)據(jù)庫(kù)表結(jié)構(gòu)。把數(shù)據(jù)庫(kù)的schema導(dǎo)出來(lái)——表名、字段名、字段類型、注釋連同少量的樣例數(shù)據(jù)一起喂給AI模型。AI根據(jù)字段命名規(guī)律、數(shù)據(jù)分布、表之間的外鍵關(guān)聯(lián)推斷每張表的業(yè)務(wù)含義。比如c001字段全是訂單號(hào)格式c002全是日期格式表之間c001有外鍵關(guān)聯(lián)AI就能推斷這張表是訂單明細(xì)表。這套做法的核心是把人去理解數(shù)據(jù)庫(kù)變成AI去理解數(shù)據(jù)庫(kù)。幾百?gòu)埍砣斯な崂硇枰粌蓚€(gè)月AI輔助下能把核心業(yè)務(wù)表的識(shí)別壓縮到幾天。需要強(qiáng)調(diào)的是AI推斷的結(jié)果要人工核驗(yàn)尤其是涉及金額、庫(kù)存這些關(guān)鍵指標(biāo)AI猜錯(cuò)一個(gè)字段含義后面所有分析全錯(cuò)。某紡織企業(yè)的MES經(jīng)過AI輔助分析加人工核驗(yàn)一周內(nèi)理清了訂單、工藝、庫(kù)存三類核心表剩下的輔助表邊用邊補(bǔ)。## 四、只讀路線的邊界與配套數(shù)據(jù)庫(kù)只讀不是萬(wàn)能的它解決的是數(shù)據(jù)取出來(lái)這一層取出來(lái)之后還有兩道關(guān)。第一道關(guān)是語(yǔ)義統(tǒng)一。十幾個(gè)系統(tǒng)都用只讀取出來(lái)數(shù)據(jù)確實(shí)都拿到了但ERP叫客戶編碼、CRM叫客戶編號(hào)、WMS叫客戶簡(jiǎn)稱拉到一起還是對(duì)不上。只讀路線只完成連接層沒解決語(yǔ)義層。這就是異構(gòu)對(duì)接的真正難點(diǎn)不在接口而在語(yǔ)義——取數(shù)是體力活對(duì)語(yǔ)義是腦力活。向量空間JBoltAI的做法是用本體語(yǔ)義模型做統(tǒng)一翻譯把不同系統(tǒng)的同義字段關(guān)聯(lián)到同一個(gè)業(yè)務(wù)實(shí)體讓跨系統(tǒng)查詢能跑通。第二道關(guān)是實(shí)時(shí)性。只讀同步往往是定時(shí)批量不是實(shí)時(shí)流。老板想看的是現(xiàn)在的庫(kù)存而不是昨晚的庫(kù)存。對(duì)實(shí)時(shí)性要求高的場(chǎng)景只讀路線要配合CDC——捕獲數(shù)據(jù)庫(kù)的變更日志增量推送到語(yǔ)義層。CDC對(duì)源庫(kù)有額外壓力要權(quán)衡哪些表值得實(shí)時(shí)、哪些表日批就夠。向量空間JBoltAI在對(duì)接某裝備制造企業(yè)時(shí)訂單和庫(kù)存走CDC實(shí)時(shí)工藝和設(shè)備數(shù)據(jù)走日批按業(yè)務(wù)對(duì)實(shí)時(shí)性的真實(shí)需求分級(jí)處理。## 五、實(shí)戰(zhàn)建議第一對(duì)接策略按系統(tǒng)分檔。沒API的老系統(tǒng)走數(shù)據(jù)庫(kù)只讀有完整API的系統(tǒng)走接口半接口系統(tǒng)兩者結(jié)合。不要指望一套策略打天下異構(gòu)對(duì)接的本質(zhì)就是分類處理。第二只讀賬號(hào)權(quán)限給最小。只給SELECT連表權(quán)限都收緊只開業(yè)務(wù)必需的那幾張表。這是對(duì)客戶系統(tǒng)零侵入的底線也是技術(shù)決策者向業(yè)務(wù)側(cè)證明安全性的憑證。第三沒有文檔的系統(tǒng)先用AI分析表結(jié)構(gòu)再人工核驗(yàn)關(guān)鍵表。幾百?gòu)埍砣咳嗣滑F(xiàn)實(shí)全靠AI又不保險(xiǎn)AI初篩加人工精修是效率和質(zhì)量平衡點(diǎn)。第四只讀只解決取數(shù)語(yǔ)義統(tǒng)一必須跟上。取出來(lái)的數(shù)據(jù)不對(duì)齊對(duì)接工作只做了一半。把異構(gòu)數(shù)據(jù)關(guān)聯(lián)到統(tǒng)一語(yǔ)義模型才是跨系統(tǒng)查詢和經(jīng)營(yíng)分析能跑通的關(guān)鍵。向量空間JBoltAI的實(shí)踐反復(fù)證明只讀路線是務(wù)實(shí)的起手式本體語(yǔ)義統(tǒng)一是收尾的關(guān)鍵缺了后者前者的取數(shù)價(jià)值發(fā)揮不出來(lái)。## 總結(jié)沒API不是異構(gòu)對(duì)接的終點(diǎn)而是數(shù)據(jù)庫(kù)只讀路線的起點(diǎn)。對(duì)客戶系統(tǒng)零侵入、只架在現(xiàn)有系統(tǒng)之上讀數(shù)據(jù)這條路線繞開了接口缺失、字段不全、商業(yè)審批三重障礙。連文檔都沒有的老系統(tǒng)靠AI分析表結(jié)構(gòu)也能把核心實(shí)體識(shí)別出來(lái)。但要清醒的是只讀路線只解決了連接層取出來(lái)的數(shù)據(jù)要真正可用后面還有語(yǔ)義統(tǒng)一這一道更難的關(guān)。異構(gòu)系統(tǒng)對(duì)接不是接口通了就通了是連接、數(shù)據(jù)、語(yǔ)義三層都要打透數(shù)據(jù)庫(kù)只讀是務(wù)實(shí)的起手式本體語(yǔ)義統(tǒng)一是收尾的關(guān)鍵。