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