魏李方

摘要:針對我校應用系統眾多、數據庫繁雜的情況,根據不同的場景、要求和條件,采用不同的數據同步技術來保證我校人事、財務、教務、學生、學工和一卡通等基礎數據的一致性。該文分析了幾種常用的數據同步技術,并結合我校實際情況,介紹我校數據中心在不同的應用場景下所采用的數據同步技術。
關鍵詞:數據庫;數據同步;觸發器;ODI;Oracle Job
中圖分類號:TP311 文獻標識碼:A
文章編號:1009-3044(2020)10-0266-03
1背景
隨著信息化的發展,高校中各種應用系統越建越多,數據庫環境也越來越復雜,同時這些龐雜的數據庫之間還需要保持各種基礎數據的一致和正確,為此就需要使用各種數據同步技術。所謂數據同步,就是將數據從源數據源經過清洗、轉換之后復制到另一個或多個目標數據源的過程,復制完成后雙方數據達到一致。
為了滿足日益復雜的數據同步需求,很多學者已經在數據同步相關領域進行了各種技術層面的研究和實踐,比如寇媛媛,王曉明,喬文文的數據庫同步技術的研究與應用,羅永有、梁超香的基于ODI的高校異構系統數據集成的研究與實現。劉樹、徐碩等一種基于觸發器的數據同步系統的研究及關鍵技術實現等。本文結合實際情況,介紹了常用的數據同步技術和這些技術在我校的應用情況。
2主要技術
2.1觸發器數據同步
在數據庫中,觸發器(trigger)是與表事件相關的特殊的存儲過程,它的執行不是由程序調用,也不是手工啟動,而是由事件來觸發。當對一個表進行insert、delete或update等操作時,觸發器就會被執行。觸發器可以是簡單的查詢SQL語句,也可以是復雜的插入、刪除、更新SQL語句。觸發器分為語句級觸發器和行級觸發器。所謂語句級觸發器,是在指定的操作語句之前或之后執行一次,不管影響多少行數據,都只會執行一次。而行級觸發器則是指在每一條數據發生變化時操作都會被觸發,即多少行數據發生變化,就觸發多少次觸發器。
不同的數據庫有不同的觸發器規則,在Oracle數據中,一個表上最多可有12個觸發器,同一時間、同一事件、同一類型的觸發器只能有一個。一般而言,在觸發器的執行部分只能用DML語句(SELECT,INSERT,UPDATE,DELETE),不能使用DDL語句(CREATE,ALTER,DROP)。在觸發語句中一般不能包含事務控制語句fcOMMIT,ROLLBACK,SAVEPOINT),在觸發器主體中調用的任何過程、函數,也不能使用事務控制語句。
觸發器是在表中數據發生變化時自動強制執行,當觸發器由于某種原因執行失敗時會阻斷數據更新過程,從而導致該數據庫之上的業務系統執行時出現異常,一般這種異常無法被業務系統捕捉到。觸發器的這種固有缺陷也限制了其在數據同步中的使用。
2.2定時任務
所謂定時任務,就是一個Job,在規定的時間內,執行數據庫中指定的“存儲過程”。在實際數據同步時,先在源數據庫和目標數據庫之間建立一個遠程連接;之后編寫一個用于完成將源數據庫中的數據同步到目標數據庫的存儲過程;最后設置一個定時任務,在該定時任務中執行上述存儲過程,即可實現定時數據同步。
使用定時任務進行數據同步,由于數據同步操作不是在業務數據更新時同時進行,而是在一個固定的時間間隔內進行,所以數據同步過程對業務數據更新沒有任何影響。由于數據存儲過程功能強大,也能實現比較復雜的需求。在不同的使用場景中,定時任務間隔時間可以根據需要進行調整,基本能滿足高校環境中數據同步的時限要求。
2.3數據同步工具
由于數據同步的非常重要并存在廣泛的需求,很多公司都開發了適應于不同場景和工作要求的數據同步工具。這些數據同步工具也在高校數據中心的數據同步中得到了廣泛的應用。下面介紹幾種比較常用的數據同步工具。
2.3.1ODI
ODI(Oracle Data Integratorl是Oracle公司開發的一個綜合數據集成平臺。ODI完成數據集成過程中最為重要的ETL(Ex-tract-Transform-Load,提取一轉換一加載)環節。ODI能夠在異構數據源之間以批量、實時、同步、異步模式實現高性能的數據轉換與傳輸。ODI能保證數據在各業務系統之間的一致性,避免冗余數據,消除“信息孤島”。由于ODI強大的功能,ODI非常適合在高校的數據環境中進行數據同步。
2.3.2DataX
阿里公司的DataX是一款異構數據源離線同步工具。DataX基于python開發,可以實現包括Oracle、SQL Server、MySQL、OceanBase等多種異構數據源之間高效的數據同步功能。DataX提供了豐富的數據讀寫插件,支持多線程執行,從而使數據同步非常便捷高效。
Datax還可以根據實際業務需求對同步的數據按照一定的規則進行清洗、過濾及轉換,進而提高數據同步的數據準確度,最終為數據高質量同步提供可靠的保障。
2.3.3 Sqoop
Sqoop是一款開源的數據同步工具,主要用于在Hadoop與傳統的數據庫(Mysql、Postgre等)之間進行數據的傳遞,可以將關系型數據庫(例如:Oracle、SQL Serv-er、MySQL、Postgres等)中的數據導進到Hadoop的HDFS中,也可以將HDFS的數據導進到關系型數據庫中。
2.4定制數據同步程序
在高校眾多的應用系統中,很多應用系統(如財務收繳費系統、網絡計費系統等1出于安全、性能方面的考慮,沒有向數據中心開放底層數據庫訪問。這類應用系統的數據同步無法通過之前提到的數據庫同步方式來完成,而是通過提供南北向接口的方式來向其他應用系統提供業務數據或完成本應用系統的基礎數據更新。這種情況就需要定制開發數據同步程序來完成數據同步工作。
定制開發的數據同步程序能實現更為復雜的數據過濾、轉換、清洗功能,并能根據時效性要求選用不同的技術方案實現實時或定時的數據同步。定制開發的數據同步程序由于功能強大、靈活性高、適應性強,在高校的數據同步中使用非常廣泛。
3數據同步技術的應用
根據不同的要求和場景在數據同步時選用不同的數據同步技術。下面簡單介紹各種技術在我校的使用情況。
3.1觸發器數據同步
同一個數據庫服務器上部署的多個數據庫之間數據同步可以使用觸發器來完成。我校數字化校園系統采用的是正方軟件股份有限公司的統一門戶平臺、統一身份認證平臺和統一數據庫產品。統一數據庫平臺中存放教工、學生、財務等公共數據。統一身份認證平臺存放了數字化校園的用戶信息、權限信息等身份認證信息。當統一數據庫中教工、學生信息發生變化時,使用觸發器將變化的信息同步到統一身份認證系統中,并由統一身份認證系統將更新信息發送到LDAP服務器,供其他應用系統使用。圖1為觸發器數據同步。
3.2定時任務
定時任務一般用來處理需求比較簡單、現有數據同步工具處理不方便,又不需要定制開發程序就可以完成的數據同步。我校數據中心到一卡通的教工和學生的基本信息的數據同步就是通過定時任務來實現的。定時任務主要有名稱、類型、存儲過程、開始日期、結束日期、運行頻率等幾個因素。配置示例如圖2。
3.3數據同步工具
在眾多的數據同步工具中,我校主要使用的是Oracle公司開發的ODI。目前,ODI完成了教務系統到數據中心的學生、學籍、成績、課程、教室、考試安排的教務相關信息;完成學工系統到數據中心的收繳費信息、貸款信息、注冊信息等學工相關信息;完成財務系統到數據中心的學生、人事、組織結構、收繳費信息等財務相關信息;完成安保信息系統和數據中心之間的教工、學生、宿舍、車輛、門禁等安保相關信息;完成各院系機房管理系統和數據中心之間的人員信息、一卡通、黑名單等信息的同步;教評系統和數據中心之間的班級、教室、課程表、單位、教工基本信息、課程等教評相關信息的數據同步。
圖3為數據同步工具數據同步圖。
3.4定制程序數據同步
在數據同步需求比較復雜不能通過上述方法進行或應用系統沒有開放數據庫訪問的可以通過定制程序來實現。通過定制數據同步程序來實現數據同步的方法在我校網絡計費系統用戶信息同步;郵件系統用戶、組織機構信息同步等場景中得到了應用。我校網絡計費系統數據同步程序的流程如下:
1)數據中心根據網絡計費系統需求提供用戶信息視圖。
2)定制程序讀取數據中心提供的用戶信息,將數據庫中的用戶信息和網絡計費系統中的用戶、計費組和計費套餐等信息進行比較,檢查網絡計費系統中的數據是否和數據中心的數據符合。
3)如果不符合,根據情況調用網絡計費系統提供的北向接口進行處理。
4)如果符合,則繼續處理下一條數據。
5)定時重復以上步驟。
4結束語
實踐表明,在高校復雜的業務環境下,很少有一種數據同步技術能完全滿足所有業務系統的數據同步需求。根據不同的情況采用不同技術靈活地實現數據同步功能是數據中心的最優選擇。在工作中,也應密切跟蹤數據同步新技術的發展,不斷將合適的新技術應用到數據同步的工作中。