◎文/喬金海 叢磊
當前,出版企業(yè)的大量數(shù)據(jù)如機構數(shù)據(jù)、人員數(shù)據(jù)、產品數(shù)據(jù)、政務數(shù)據(jù)、商務數(shù)據(jù)、用戶數(shù)據(jù)和內容數(shù)據(jù)等分散在黨和政府部門、出版單位、發(fā)行商、圖書館、科研院所、廣電商平臺、電商平臺等等主體當中?,F(xiàn)有的數(shù)據(jù)交換技術往往不能將這些數(shù)據(jù)有機地結合起來,收入數(shù)據(jù)較分散,導致相關部門和出版行業(yè)主體之間信息不暢,信息系統(tǒng)缺乏互聯(lián)互通,產業(yè)鏈上的數(shù)據(jù)不能真正地融合起來,要達到匯聚、高效、共享、聯(lián)合、協(xié)同更是天方夜譚。
而且,當前國內外出版企業(yè)普遍采用“FTP+XML”接口模式進行數(shù)據(jù)交換,此模式開發(fā)的接口采用的是“軟件代碼與業(yè)務代碼交織在一起”的模式,任意節(jié)點業(yè)務規(guī)則的變化都會導致所有接口需要重新設計。此種數(shù)據(jù)交換模式無論是研發(fā)還是后續(xù)的維護和修改都耗資巨大,遠遠超出了出版企業(yè)的承受能力。因此,通過通用數(shù)據(jù)交換耦合器實現(xiàn)數(shù)據(jù)(含文件)的安全、可控、準確傳遞是很有必要的。
通用數(shù)據(jù)交換耦合器承擔了不同的“端交換方案”中的公有部分,同時接收來自不同出版企業(yè)或者第三方服務商所提供的“端交換方案”,對其進行準確地分析處理,再轉化為相對應主體所需要的格式,完成對不同信息系統(tǒng)數(shù)據(jù)的統(tǒng)一部署管理和滿足各個信息系統(tǒng)之間的數(shù)據(jù)交換需求??紤]到目前出版行業(yè)以及與其有業(yè)務聯(lián)系的企業(yè)所建立的信息系統(tǒng)大都采用關系型數(shù)據(jù)庫存放數(shù)據(jù),把通用數(shù)據(jù)交換的研究鎖定在關系型數(shù)據(jù)庫尤其是各種主流的關系型數(shù)據(jù)庫是可行的而且極具代表性的。
通用數(shù)據(jù)交換耦合器首先是一個異構數(shù)據(jù)的管理平臺,可以連接到各個異構數(shù)據(jù)庫,比如Oracle、SQL Server、Mysql等,并且能夠進行實時的新增、刪除、修改、查詢等操作。其次,通用數(shù)據(jù)交換耦合器又是相關數(shù)據(jù)的轉換備份平臺,在耦合器這個平臺上可以把滿足條件的數(shù)據(jù)轉化為XML格式的文件備份起來,也可以把所有需要備份的數(shù)據(jù)轉存到對應的數(shù)據(jù)庫中,利用數(shù)據(jù)庫的備份功能統(tǒng)一備份,使其在系統(tǒng)當中流動起來。再次,數(shù)據(jù)交換耦合器是異構數(shù)據(jù)間數(shù)據(jù)傳輸和交換的控制平臺,通過定義數(shù)據(jù)傳輸?shù)姆椒ú呗?,實現(xiàn)定時或臨時指定的增量或全部的數(shù)據(jù)的傳輸、加載。
通用數(shù)據(jù)交換耦合器需要具有以下具體功能特性:
1.傳輸可靠。要確保數(shù)據(jù)的穩(wěn)定、可靠傳輸,做到唯一性、不重復、不遺漏,實現(xiàn)高效、穩(wěn)定、完整傳輸。
2.接入簡便。通過簡單的配置就可以連接各種異構數(shù)據(jù)庫,允許同時連接多個不同的數(shù)據(jù)庫,各個應用能夠以相對簡便的方式接入系統(tǒng),進行數(shù)據(jù)的接收、存儲、發(fā)送、加載,進而簡化應用系統(tǒng)開發(fā)工作量與開發(fā)難度。
3.操縱方便。系統(tǒng)可以方便地讀取各個數(shù)據(jù)源的數(shù)據(jù)字段,得到對應的表、函數(shù)、視圖的清單,也可以通過開發(fā)好的圖形界面直接進行操控;可以直觀方便地對數(shù)據(jù)進行增刪改查,也可以采用緩存提取的方式逐段提取數(shù)據(jù),不會造成數(shù)據(jù)量查詢過大時出現(xiàn)的死機現(xiàn)象。
4.數(shù)據(jù)轉存。可以把得到的數(shù)據(jù)轉存成XML格式的文件,既方便對數(shù)據(jù)進行備份,也可以滿足把數(shù)據(jù)轉出后再加工的對應要求。
5.靈活交換。在數(shù)據(jù)交換耦合器中可以定義靈活多樣的數(shù)據(jù)傳輸和交換策略,借助通用數(shù)據(jù)交換XML文件或者在任意兩個數(shù)據(jù)源之間按定義好的交換策略進行數(shù)據(jù)傳輸和交換。
6.安全管理。通過對用戶增加權限,限制用戶可操作的數(shù)據(jù)源,讓指定用戶只能操作指定的數(shù)據(jù)源,從而維持系統(tǒng)的相對安全。
7.多種傳輸模式。支持一對一、一對多的數(shù)據(jù)傳輸模式,既能夠定時定向傳輸變更數(shù)據(jù),也可以臨時指定任意數(shù)據(jù)的傳輸。
8.數(shù)據(jù)安全。能夠對傳輸?shù)臄?shù)據(jù)進行加密、解密,以保證數(shù)據(jù)安全;請求代理服務,隨時響應用戶請求,完成各類數(shù)據(jù)庫的查詢和新增、刪除、修改任務。
9.遠程監(jiān)控。能夠遠程監(jiān)控并且維護數(shù)據(jù)交換系統(tǒng)的運行狀態(tài),在系統(tǒng)出現(xiàn)異常情況的時候能夠及時提供報警信息。
10.遠程配置管理。對數(shù)據(jù)交換系統(tǒng)進行遠程管理,包括定義交換系統(tǒng)之間的連接關系、定義數(shù)據(jù)路由規(guī)則、配置交換系統(tǒng)各功能參數(shù)等。
1.開發(fā)工具和開發(fā)環(huán)境
耦合器選在Windows操作系統(tǒng)下進行開發(fā),開發(fā)工具選擇Visual Studio Code。之所以選擇此開發(fā)工具的原因是它是跨平臺的編輯器,支持多種編程語言,并且內置Git集成,方便版本管理。Visual Studio Code代碼還提供了代碼管理功能,例如轉到定義、查看定義、查找所有引用并重命名符號,通過右鍵單擊代碼文件可以在VSC中輕松找到這些功能。同時,Visual Studio Code帶有內置調試器,這也是其主要功能之一,有助于加速任何程序員的編輯、編譯和調試循環(huán)。但是在默認情況下,它僅帶有支持NodeJS的調試器,該調試器可以調試任何轉譯為Java的內容,也可以將擴展名用于其他運行時。
耦合器選取Mysql數(shù)據(jù)庫作為平臺運行的支持數(shù)據(jù)庫,將基礎配置信息放在數(shù)據(jù)庫中,并將數(shù)據(jù)交換過程當中需要備份的數(shù)據(jù)備份在Mysql數(shù)據(jù)庫中。
2.耦合器設計過程中的關鍵點
通用數(shù)據(jù)交換耦合器在設計過程當中需要明確以下關鍵點:
(1)XML中的內容、屬性、元素等到數(shù)據(jù)庫中字段的映射。
(2)XML中屬性的相對關系到數(shù)據(jù)庫中類與類的關系和字段之間的映射關系。
(3)數(shù)據(jù)交換服務需要根據(jù)模型編號在模型庫中提取模型定義的XML文件并生成模型對象,然后根據(jù)模型定義中的具體數(shù)據(jù)類型調用特定數(shù)據(jù)采集插件。
(4)數(shù)據(jù)采集插件根據(jù)模型中定義的數(shù)據(jù)源及數(shù)據(jù)集信息并根據(jù)具體參數(shù)值從數(shù)據(jù)源中檢索數(shù)據(jù)解釋和運行數(shù)據(jù)交換模型生成中立格式的數(shù)據(jù),如果模型中包含腳本則需要在生成過程中按照事件驅動的方式執(zhí)行腳本。
(5)由于數(shù)據(jù)源的類型是不唯一的,可以是數(shù)據(jù)庫,也可以是文件,所以數(shù)據(jù)采集組件需要實現(xiàn)統(tǒng)一接口。
3.耦合器數(shù)據(jù)流和工作流系統(tǒng)分析交互
數(shù)據(jù)交換的基本流程是用對應的數(shù)據(jù)庫連接管理工具來訪問源數(shù)據(jù)庫,將待交換的數(shù)據(jù)在一定的轉換策略方法下導出為加密的XML文檔,最后再通過解密工具和數(shù)據(jù)庫連接將得到的數(shù)據(jù)存儲到相對應的數(shù)據(jù)庫中。在國內外的一些信息系統(tǒng)中,耦合器中要完成的工作流交互和應用越來越受到重視,如IT行業(yè)、電氣行業(yè)等出版以外的行業(yè)進行數(shù)據(jù)交換時,不僅要交換一些靜態(tài)數(shù)據(jù)如工作人員信息、商品信息、電氣設備信息,還要把對應的工作流應用交換到各級公司當中,讓工作流延伸到范圍之外,使其既可以在公司內部進行流轉,也可以在不同公司之間進行流轉。比如電氣行業(yè)中的一個檢修工作流,就需要各個地區(qū)、各個部門的人配合起來,有時候甚至還需要上下游的企業(yè)單位都融入到這個流程中來。
工作流應用系統(tǒng)對數(shù)據(jù)交換系統(tǒng)而言是密不可分的,交互主要體現(xiàn)在以下幾個方面:
(1)技術人員通過工作流應用調用通用數(shù)據(jù)交換系統(tǒng),將數(shù)據(jù)處理成對方所需要的樣子并且交給對方。
(2)第三方技術人員通過通用數(shù)據(jù)交換系統(tǒng)調用工作流應用進而完成工作流的操作流程,比如激活、注冊、管理、阻塞、等待,等等。
(3)技術人員同時在工作流應用和數(shù)據(jù)交換系統(tǒng)中完成對數(shù)據(jù)的加密處理,從而形成一個閉環(huán)的信息交換流,保護數(shù)據(jù)的完整性。
4.數(shù)據(jù)庫連接
由于系統(tǒng)初步開發(fā)時用的是Mysql數(shù)據(jù)庫,所以數(shù)據(jù)庫連接工具采用Navicat。Navicat premium是一款數(shù)據(jù)庫管理工具,也是可多重連線資料庫的管理工具,它具有完備的功能特性,并有以下幾個優(yōu)點:
(1)無縫數(shù)據(jù)遷移。利用數(shù)據(jù)傳輸、數(shù)據(jù)同步和結構同步可以低成本、輕松快速地遷移數(shù)據(jù),并提供詳細的指引,可以在各種數(shù)據(jù)庫管理系統(tǒng)之間傳輸數(shù)據(jù)。
(2)操作工具多元化。導入向導能將不同格式的數(shù)據(jù)傳輸?shù)綌?shù)據(jù)庫,或者設置數(shù)據(jù)源連接并使用 ODBC傳輸;表、視圖或查詢結果的數(shù)據(jù)可導出為 Excel、Access、CSV等格式;使用樹視圖、JSON視圖、數(shù)據(jù)表樣式的網格視圖以及一系列數(shù)據(jù)編輯工具來添加、修改和刪除記錄,方便編輯數(shù)據(jù);通過Navicat提供有效管理數(shù)據(jù)所需的工具,并確保數(shù)據(jù)傳輸順利進行。
(3)簡單的查詢編輯。通過可視化查詢創(chuàng)建工具進行創(chuàng)建、編輯和運行查詢,自動完成代碼和自定義的代碼段功能,可以讓編碼更加快速;調試組件能快速尋找、更正PL/SQL和PL/PGSQL編碼時的錯誤,用戶可以設置斷點、逐步運行程序、查看和修改變量值以及檢查調用堆棧。
5.數(shù)據(jù)的導入、導出及加密
將數(shù)據(jù)庫中的信息導出為XML文件,然后使用XML解析器進行解析,再根據(jù)解析的內容把數(shù)據(jù)按順序導入到對應的數(shù)據(jù)庫的對應表中。XML解析器提供了兩種做法:第一,直接用解析器中已經封裝好的方法讀寫XML文件;第二,用XML解析器中的控件所提供的XML Data創(chuàng)建單元接口,再根據(jù)這個單元接口提供的其他接口一起來實現(xiàn)XML文件的讀寫,但是這種方法的可用度不是很高,所以耦合器在開發(fā)時候主要選擇前一種方法。
數(shù)據(jù)的加密則主要采用Base64加密算法。這種算法最初主要存在于電子郵件的傳輸當中,是一種多用途的網際郵件擴充協(xié)議,其出現(xiàn)的意義在于解決郵件傳輸過程中的加密以及聲音、圖形圖像傳輸問題。它實現(xiàn)起來非常簡單,與其他機密算法相比速度更快,還可以防止和XML的標記符發(fā)生沖突。
通用數(shù)據(jù)交換耦合器作為通用數(shù)據(jù)交換技術的一個載體,旨在解決現(xiàn)有交換接口投入費用高、綁定規(guī)則死、應用標準難、保障安全少的共性問題。而通用數(shù)據(jù)交換技術從以往軟件代碼與業(yè)務代碼交織在一起的模式當中取其精華、棄其糟粕,從理論和實踐兩個層面解決了出版行業(yè)數(shù)據(jù)交換需求與現(xiàn)實條件之間的矛盾,從而推動了出版行業(yè)數(shù)據(jù)交換新生態(tài)的構建。