一、前言php
公檢法機關因審理經濟糾紛案件或經濟犯罪案件須要向銀行查詢企業事業單位、機關、團體的銀行存款或者查閱與案件有關的會計憑證、帳冊、報表等檔案資料,銀行應當積極配合。在查詢或者查閱時,人民法院應當向銀行出具正式公函,由銀行行長(主任)指定具體的業務部門負責提供有關的狀況和資料並派專人接待。查閱人對須要的資料能夠抄錄、複製或照相,但不能借走。人民法院對銀行提供的資料應當保守祕密。前端
人民檢察院偵查機關在辦理職務犯罪案件時,尤爲是貪污賄賂案件,到商業銀行查詢犯罪嫌疑人的帳戶相關交易流水和憑證是一個重要的獲取線索和證據的途徑,這也是商業銀行的一項法定義務。然而在實際操做過程當中,偵查機關到商業銀行開展查詢工做時卻由於歷史數據查詢上的困難,致使查詢工做效率低下。數據庫
對於歷史數據而言,超過三至五年的數據,銀行會採用離線存儲的方式將數據歸檔至磁帶庫或光盤庫。當偵查機關向銀行提出司法查詢請求時,銀行工做人員須要將帶庫中的離線數據導出成在線數據,以供查詢使用。帶庫數據的導出操做是很是耗時,耗力的過程,故致使司法查詢進展緩慢。網絡
二、面臨的挑戰
由於司法查詢須要查看單位或我的銀行帳戶的全部交易流水,因此銀行須要提供全部歷史數據用以查詢。針對此類需求,銀行均要安排相關係統工做人員導出離線數據以供查詢使用。在此需求環境下,銀行急需一種有效的解決方案將銀行工做人員從繁重的導數做業中解放出來。架構
司法查詢的數據是銀行存儲了幾十年的歷史數據,且會涉及多個業務系統,如核心系統、信用卡系統及網銀系統等。故其數據有如下特色:數據量龐大、業務系統衆多及新舊系統更替等。針對以上特色,解決方案須要解決如下幾點需求:框架
離線數據在線化:整個解決方案的重點即在於消除司法查詢中的離線數據導出工做,而最效有效的解決之道則在於把離線的數據進行在線化。離線數據在線化後,司法查詢則只用將在線數據查詢出來給到相應檢查部門。由於司法查詢不像核心交易查詢如此頻繁,因此也不可使用大中型乃至小型機做爲數據在線化的硬件存儲平臺。分佈式
各業務系統數據統一管理:由於司法查詢涉及衆多業務系統,因此進行司法查詢時,須要到各業務系統平臺進行數據查詢。這種查詢方式帶來了極大的人力消耗成本。離線數據在線化須要將各業務系統數據進行統一管理,後續的司法查詢只用在一個平臺便可查詢全部相關數據。
新舊系統數據整合:銀行的各系統在整個歷史中進行了屢次的升級改造,這就致使了新舊系統之間數據存儲設計上存在着極大的差別。爲了能提供高效、便捷的司法查詢,新舊系統之間數據的整合也是必不可少。工具
提供高效的數據查詢:離線數據進行在線化的同時,也要保證數據查詢的高效性。只有二者均達到,司法查詢才能真正擺脫低效率查詢的境地。設計
三、解決方案
司法查詢平臺由下到上可分爲數據採集層、數據存儲加工層和數據應用層。數據存儲加工層是司法查詢平臺的核心,主要基於SequoiaDB分佈式數據庫和Spark內存分析框架構成。基於此架構,司法查詢的離線數據實如今線化及實時查詢。blog
3.1數據採集層
數據採集層的主要做用是爲數據存儲加工層提供司法查詢所需的各業務系統數據。ODS取數平臺經過將新舊核心、新舊信用卡及網銀等業務系統準備的歷史數據採集回來,將採集的數據統一格式,再經過SFTP、FTP和CD等網絡傳輸方式提供給數據存儲加工平臺。
3.2數據存儲加工層
數據存儲加工層主要工做是完成司法查詢數據的統一存儲和加工處理。數據採集層傳輸至數據存儲加工層的數據主要分爲存量數據和增量數據。根據此兩類數據,SequoiaDB+Spark構建的存儲加工層完成數據的規劃、入庫以及加工處理。
存量數據存儲:存量數據是指截止某時間點已經落盤存儲的數據,主要做爲各業務系統的初始化數據進行存儲入庫。由於司法查詢的歷史數據所存儲的量比較龐大,因此存量數據在入庫前會根據系統類別、數據類別(流水與非流水)及數據量等維度進行數據規劃。SequoiaDB數據庫的Domain可根據系統類別完成數據規劃,如新舊核心使用Domain1,新舊信用卡使用Domain2。SequoiaDB的數據水平切分機制和時間序模型可根據數據類別及數據量等維度完成數據有序高效存儲,如流水數據可根據客戶交易日期採用時間序模型進行數據存儲。數據規劃完成後,操做員使用SequoiaDB Import工具將各系統數據導入SequoiaDB數據庫。
數據模型去範式化:因爲新舊系統的更替及舊系統設計的歷史性,同一套系統的新舊系統數據表結構存在極大的差別,且舊系統數據在存儲大量歷史數據的狀況下也不利用數據的查詢。衆所周知,歷史數據查詢的難度在於在數據量表的多表JOIN查詢。爲了實現新舊系統數據統一和高效快速的查詢,存儲加工層須要根據司法查詢需求對存量數據進行加工處理。數據加工經過Spark分析框架將存儲於SequoiaDB中的數據根據新舊系統結構的統一規劃完成數據加工處理,如將全部數據打平成流水錶及非流水錶。
增量數據同步:增量數據指存量數據截止日期之後每日變動的數據,如新核心天天增長的客戶及天天的交易流水數據等。SequoiaDB數據庫存儲的數據須要與在線交易系統(如新核心、新信用卡)保持T-2數據的一致。
3.3數據應用層
離線數據完成在線化以後,數據的應用並不侷限於司法查詢(即公檢法查詢),也能夠用於歷史數據定製查詢和管理員查詢等諸多用途。司法查詢由於其低頻率的查詢使得在線數據在絕大部分時間裏均未被使用。在不影響司法查詢的前提下,在線存儲數據的價值應該被髮揮出來,如銀行網點對歷史數據的查詢和銀行管理員查詢等。數據應用層使用SequoiaDB API、SequoiaDB SQL和SparkSQL等方式從數據存儲加工層獲取數據,並將獲取的數據在WEB前端頁面進行數據展現。
四、項目成果
離線數據低成本在線存儲:SequoiaDB數據庫採用分佈式架構,只須要普通X86 PC Server便可完成海量數據的高效存儲。因爲司法查詢使用的業務數據存在離線化、海量化、分散性及查詢低頻性等特色,因此廉價的在線存儲架構使離線數據實如今線化成爲可能。
業務系統數據統一平臺管理:司法查詢涉及多個業務系統,因此對多個業務系統數據的規劃存儲和統一管理則顯得很是重要。SequoiaDB的Domain功能及元數據信息的有效管理很好的實現了多系統數據的統一存儲及管理。
歷史數據的實時查詢:司法查詢的數據存儲在SequoiaDB分佈式數據庫以後,歷史數據能夠進行實時查詢。SequoiaDB分佈式存儲+多索引機制達成一個司法查詢請求任務秒級返回的結果。