文|張元胄
內存數(shù)據(jù)庫技術在金融信息服務平臺關鍵項目建設中的應用及未來項目應用研究
文|張元胄
金融信息服務平臺(“新華08”)2006年上半年正式啟動以來,在各級領導的重視和指導下,經過新華社多個部門同志們的協(xié)調和共同努力下,已經走過了8年的時間,目前仍然為超過17000用戶服務。在技術項目建設過程中,隨著服務內容不斷豐富,用戶規(guī)模成幾十倍的滾動式擴大,很快就遠超過平臺系統(tǒng)原設計服務能力,系統(tǒng)運行緩慢等性能問題逐漸顯現(xiàn),服務質量不能滿足用戶快速高效獲取信息的要求,需要尋找新的技術解決方案在不增加額外硬件投入的情況下,調整自身資源配置、優(yōu)化服務。
經過探索研究,合理采用新的內存數(shù)據(jù)庫技術,解決了在不增加現(xiàn)有硬件投入的情況下,顯著提高服務的響應速度,增大并發(fā)服務能力,從技術上改善和提升了服務質量。
內存數(shù)據(jù)庫是有別于傳統(tǒng)數(shù)據(jù)庫處理數(shù)據(jù)方式的新技術。其工作原理是將所有基礎數(shù)據(jù)存于物理內存,當需要大量提取數(shù)據(jù)時,可以不用訪問磁盤而直接訪問存于物理內存的數(shù)據(jù),從而獲得極高的存取速度和極強的并發(fā)訪問能力。它是基于內存技術,通過改變數(shù)據(jù)在運行時駐留位置的假設來提供實時性能。內存數(shù)據(jù)庫系統(tǒng)針對內存而不是磁盤進行設計和優(yōu)化,沒有緩沖管理、日志管理等額外開銷,優(yōu)化數(shù)據(jù)結構和訪問算法,數(shù)據(jù)庫操作能夠以最大效率執(zhí)行,減少對于CPU和磁盤I/O等系統(tǒng)資源的需求,從而大大提高響應速度和數(shù)據(jù)吞吐量,甚至能夠與完全使用緩存磁盤的關系型數(shù)據(jù)庫管理系統(tǒng)相媲美。
目前的內存數(shù)據(jù)庫產品仍然是關系型數(shù)據(jù)庫,支持傳統(tǒng)數(shù)據(jù)庫的開發(fā)和使用方式。內存數(shù)據(jù)庫與傳統(tǒng)數(shù)據(jù)庫的區(qū)別對于上層應用來講近乎透明,提供很多標準開發(fā)接口,開發(fā)過程中不需要額外知識。
內存數(shù)據(jù)庫提供閃電般的處理速度,具備極強的數(shù)據(jù)處理能力。
可以嵌入式開發(fā)。在特定場合的高速應用中,可以將內存數(shù)據(jù)庫集成在應用中,減少進程間通信等技術開銷。
在應用目標上,傳統(tǒng)關系型數(shù)據(jù)庫是針對關鍵業(yè)務應用,內存數(shù)據(jù)庫更偏向實時性要求很高的業(yè)務應用。傳統(tǒng)數(shù)據(jù)庫是以磁盤作為數(shù)據(jù)庫系統(tǒng)優(yōu)化的中心,而內存數(shù)據(jù)庫是以內存為中心。
在部署方式上,傳統(tǒng)數(shù)據(jù)庫通常部署在數(shù)據(jù)庫層,而內存數(shù)據(jù)庫相對更多的部署在應用層,以發(fā)揮更高的效率。
在查詢優(yōu)化方面,傳統(tǒng)數(shù)據(jù)庫通過復雜的查詢優(yōu)化算法減少磁盤I/O性能瓶頸以提高速度,有較高的CPU使用率。而內存數(shù)據(jù)庫使用簡單的查詢優(yōu)化算法,不存在磁盤I/O瓶頸,CPU使用量較小。
在響應時間方面,傳統(tǒng)數(shù)據(jù)庫一般是毫秒到秒級響應,而內存數(shù)據(jù)庫的響應范圍在微秒到毫秒級響應。
在數(shù)據(jù)存儲容量方面,傳統(tǒng)數(shù)據(jù)庫主要受磁盤存儲容量的限制,可以達到TB或PB級,而內存數(shù)據(jù)庫受到內存容量的限制,一般只能達到GB級。
1.常用數(shù)據(jù)緩存
緩存經常被訪問的數(shù)據(jù),提高應用的處理能力及反應速度,減少網(wǎng)絡和后臺數(shù)據(jù)庫的負載。
2.“熱數(shù)據(jù)”緩存
緩存當前正在使用的數(shù)據(jù)或者重要客戶的數(shù)據(jù),以提高反應速度優(yōu)化服務,提高用戶的忠誠度。
3.實時的交易處理
內存數(shù)據(jù)庫是可對消息隊列和事務進行處理的實時數(shù)據(jù)庫,并且可以把處理結果推送到后臺數(shù)據(jù)庫。
內存數(shù)據(jù)庫應用最為廣泛的是電信領域,在網(wǎng)絡、金融、教育、企業(yè)管理、客戶服務等諸多領域也有應用。例如電信企業(yè)的實時計費、增值服務、收入保障,金融企業(yè)的訂單匹配、風險管理和實時分析等。在華爾街和世界知名電信企業(yè)均有成功應用案例。
根據(jù)金融信息服務平臺建設過程中的了解,目前內存數(shù)據(jù)庫軟件廠商主要有以下3家產品:Oracle TimesTen,Altibase內存數(shù)據(jù)庫和eXtremeDB。
Oracle TimesTen是Oracle從TimesTen公司收購的一個內存數(shù)據(jù)庫產品,經過近幾年與Oracle自身產品線的融合,在與Oracle產品相容性方面較之其他產品有較大提高。
Altibase內存數(shù)據(jù)庫以處理復雜數(shù)據(jù)庫查詢語言見長,針對傳統(tǒng)的商業(yè)關系型數(shù)據(jù)庫領域,能夠提供較高的性能、通用性以及穩(wěn)定性。
eXtremeDB在項目建設過程中因為各種原因沒有實際應用過。根據(jù)了解它是一款為實時嵌入式系統(tǒng)數(shù)據(jù)管理而設計的數(shù)據(jù)庫,開銷僅有幾十K字節(jié),處理速度很高,專業(yè)性較強。
金融信息服務平臺用戶身份驗證子系統(tǒng),2007年11月正式上線服務,已經穩(wěn)定可靠運行6年半,為“新華08”客戶端主界面、資訊系統(tǒng)、結構化系統(tǒng)、債券系統(tǒng)、產權系統(tǒng)和部分行情數(shù)據(jù)的客戶端發(fā)布展示提供實時、可靠的用戶身份合法性驗證服務。用戶身份合法性驗證系統(tǒng)好比是“新華08”大門上一把堅固的安全鎖,而正是由于所有的數(shù)據(jù)進出首先都要經過這道大門,大門安全鎖的開啟速度和大門的用戶通過能力就顯得格外重要。用戶身份合法性驗證是用戶認證系統(tǒng)的后續(xù)延伸,它的設計不能脫離原有認證系統(tǒng)的存儲方式和業(yè)務流程。因此在該系統(tǒng)設計中,我們把內存數(shù)據(jù)庫作為磁盤數(shù)據(jù)庫的數(shù)據(jù)緩沖,在應用層的程序里巧妙地處理了有關異構平臺銜接的問題。根據(jù)實際運行日志分析,最高日處理請求40萬次,原先需要幾十毫秒完成的檢索操作,現(xiàn)在大部分可以在1毫秒內完成。用戶身份合法性驗證系統(tǒng)這把安全鎖和鑰匙完全是由新華社自主開發(fā)、研制,鎖鑰的秘密及全部知識產權均掌握在新華社的手中,不會受外來因素的干擾與制約。
金融信息服務平臺資訊授權子系統(tǒng),2008年1月正式上線服務。該系統(tǒng)為“新華08”資訊系統(tǒng)提供授權控制、授權驗證和授權管理功能,相當于資訊系統(tǒng)的大門,保護重要的資訊資源,可以為業(yè)務部門采購的第三方有用戶數(shù)量限制的資訊信息提供授權保護。資訊授權子系統(tǒng)建設中面臨與用戶驗證子系統(tǒng)類似的情況,系統(tǒng)處于核心位置,一旦出現(xiàn)意外將直接影響用戶使用。經過反復對比測試,選擇內存數(shù)據(jù)庫作為資訊授權子系統(tǒng)的核心數(shù)據(jù)存儲運行方案,傳統(tǒng)的關系型數(shù)據(jù)庫作為內存數(shù)據(jù)庫的數(shù)據(jù)備份和第二應急方案。在這個系統(tǒng)建設中,我們沒有使用業(yè)界慣用的三層服務結構,而采用“客戶端-中間件-內存數(shù)據(jù)庫-磁盤數(shù)據(jù)庫”的四層服務結構。實踐證明,通過增加內存數(shù)據(jù)庫層,顯著提高了系統(tǒng)的數(shù)據(jù)檢索速度,增強了多用戶多線路的同時處理能力,授權控制平均時延小于1毫秒,最高時延不超過十幾毫秒。如果采用傳統(tǒng)的關系性數(shù)據(jù)庫進行這項控制,依據(jù)現(xiàn)有硬件資源,大約需要幾十到上百毫秒完成。該系統(tǒng)也是由新華社自主設計和開發(fā),而且值得一提的是,“客戶端-中間件-內存數(shù)據(jù)庫-磁盤數(shù)據(jù)庫”四層服務結構概念的應用,這項技術在當時處于領先水平。
用戶行為收集模塊,針對用戶對特定資源的訪問進行記錄,將記錄收集起來以供事后分析使用。由于需要收集大量用戶請求,我們在設計中使用內存數(shù)據(jù)庫作為存儲緩沖,以降低對用戶使用的影響,同時可以保證數(shù)據(jù)被完整保存下來。根據(jù)統(tǒng)計最高峰時儲存記錄超過146萬條。
內存數(shù)據(jù)庫技術從金融信息服務平臺項目建設到服務于用戶認證系統(tǒng)和資訊系統(tǒng),已經安全可靠運行6年。根據(jù)日志分析,在核心系統(tǒng)運行的情況達到了設計之初的預期,完全滿足業(yè)務要求。通過與傳統(tǒng)關系型數(shù)據(jù)庫的優(yōu)勢互補,可以實現(xiàn)強大、高效、靈活、可靠的數(shù)據(jù)存儲和運行支撐。在項目建設中,沒有額外增加硬件設備投入,僅僅通過軟件技術改造,充分利用現(xiàn)有硬件資源,就實現(xiàn)了顯著提高相關服務的響應速度和并發(fā)服務能力的目的。
設計上大膽嘗試國際新技術,在社內項目建設中首次嘗試使用內存數(shù)據(jù)庫。并且基于內存數(shù)據(jù)庫技術,大膽提出并且在生產系統(tǒng)中實際使用客戶端-中間件-內存數(shù)據(jù)庫-磁盤數(shù)據(jù)庫的四層服務結構。這個結構在用戶身份驗證和資訊授權等系統(tǒng)中已經運行一年后, 世界知名的Oracle數(shù)據(jù)庫廠商在技術交流中,才提出了未來的四層服務結構方案設想。
金融信息服務平臺內存數(shù)據(jù)庫的技術方案設計和開發(fā)工作完全由新華社自主進行,實際使用的核心代碼不受外來因素干擾和制約。
內存數(shù)據(jù)庫技術是實時數(shù)據(jù)庫模型,提供了較為完備的數(shù)據(jù)庫服務保障機制,具有較好的容錯性和災難恢復能力,具備一定的數(shù)據(jù)庫安全能力,擁有訪問準入機制,數(shù)據(jù)安全性在實時產品中更有保障。
部分內存數(shù)據(jù)庫產品具有MVCC多版本并發(fā)控制機制,可以提高多個并發(fā)環(huán)境下的高性能。當數(shù)據(jù)更新過程中,數(shù)據(jù)更改還未提交的時候,被鎖定的記錄可以對外提供查詢。
內存數(shù)據(jù)庫部署簡便,沒有傳統(tǒng)關系型數(shù)據(jù)庫的復雜部署工作和調試。
內存數(shù)據(jù)庫技術的采用,減少應用層實現(xiàn)對實時數(shù)據(jù)存儲和維護所帶來的麻煩。同時,降低編碼復雜程度,加快了項目建設進度,有利于產品的快速成型和快速投入生產。
內存數(shù)據(jù)庫軟件產品價格較高,技術具有很強的專業(yè)性,只有恰當?shù)念I域或場景下才能起到關鍵作用。在不需要該項技術的環(huán)節(jié)濫用該技術,會增加不必要的經濟成本和技術復雜度。在一些技術實現(xiàn)細節(jié)中不如傳統(tǒng)關系型數(shù)據(jù)庫完備,需要應用層進行一些額外開發(fā)。如果在結構設計中巧妙回避這些問題,可以得到事半功倍的效果。
由于應用場景不同,業(yè)務要求不同,使用內存數(shù)據(jù)庫技術帶來的效率提升會有很大區(qū)別。在適合的應用條件下,內存數(shù)據(jù)庫的采用可以顯著提高響應速度和并發(fā)處理能力。如果對傳統(tǒng)數(shù)據(jù)庫進行調優(yōu)和額外配置,有時內存數(shù)據(jù)庫的使用并不能凸顯其作用。
伴隨內存價格的降低和容量的不斷提高,內存數(shù)據(jù)庫技術在項目建設中的作用將會進一步顯現(xiàn)。
結合內存數(shù)據(jù)庫技術正在進行的探索和研究方向還有:
在實時行情數(shù)據(jù)發(fā)布領域中,主要存在兩種技術,一種是共享內存技術,另外一種是內存數(shù)據(jù)庫技術。經過檢索,兩項技術在全球相關領域中均有實現(xiàn)。
共享內存技術是相對最快的實時行情接收和發(fā)布技術,可以最大限度的充分利用硬件資源以最快的速度向用戶播發(fā)行情數(shù)據(jù)。但是由于共享內存技術是一種專業(yè)性高、定制性強的技術,在保證高效率的同時,通用性較差,數(shù)據(jù)的維護以及與其他系統(tǒng)的交互能力相對較弱。
內存數(shù)據(jù)庫技術,是從電信領域業(yè)務需求發(fā)展起來的專用型數(shù)據(jù)庫技術,目前處于發(fā)展上升階段,正在朝通用型數(shù)據(jù)庫方向發(fā)展。但是,內存數(shù)據(jù)庫技術也遇到了管理需求和性能需求的取舍矛盾。根據(jù)實際測試和使用比較,不同公司的產品取舍策略不同。有的產品與其他產品或者應用結合得更好,但是在服務性能上略有損失。有的產品在性能上給我們留下深刻印象,但是管理與應用開發(fā)有需要注意和特殊處理的內容。
在我社金融信息服務平臺項目中,高性能的獲得與可擴展性和易維護性的實現(xiàn)之間,內存數(shù)據(jù)庫技術取得了比較合適的平衡。對于實時行情數(shù)據(jù)的發(fā)布,可采用以下技術方案:
對于實時性要求很高的業(yè)務需求,采用共享內存技術,是最佳選擇。在這樣的需求中,業(yè)務管理的便捷性、可擴展性和通用性要求相對較低,一切為速度服務。
對于實時性要求不高的業(yè)務需求,例如歷史數(shù)據(jù)、低速率變動的數(shù)據(jù)或者一些發(fā)布獲取渠道本身就存在較明顯延遲的數(shù)據(jù),傳統(tǒng)關系型數(shù)據(jù)庫是最佳選擇。通過對傳統(tǒng)關系型數(shù)據(jù)庫的性能調優(yōu),可以在一定程度上獲得比較滿意的準實時性要求。
對于有很高實時性要求而可維護性、可擴展性和通用性要求也很高的業(yè)務需求,如果可以舍棄一部分實時性要求,這部分性能差異約在毫秒級,值得考慮應用內存數(shù)據(jù)庫技術。
實時行情數(shù)據(jù)的準實時分析是一項復雜耗時又耗費服務資源的工作?,F(xiàn)階段對于基于共享內存技術的實時行情系統(tǒng),在實現(xiàn)準實時數(shù)據(jù)分析的時候,受到應用實現(xiàn)本身的制約,需要大量的額外開發(fā)工作,很難理想的處理大量實時數(shù)據(jù)。在不同服務器之間進行數(shù)據(jù)同步也非常困難。如果使用傳統(tǒng)關系型數(shù)據(jù)庫進行這項工作,由于產生大量磁盤I/O操作,會使得這項工作變得更加難以實現(xiàn)。
采用內存數(shù)據(jù)庫技術,可以在一定程度上結合上述二者的優(yōu)勢,彌補相互不足。服務器間有比較完備和標準的數(shù)據(jù)同步方式,僅需要少量開發(fā)就可以實現(xiàn)服務器間的數(shù)據(jù)同步,也可以單獨部署行情分析應用,以不干擾實時行情發(fā)布服務。行情數(shù)據(jù)的準實時分析和跟蹤,從技術上為“新華08”取得強于其他軟件產品的服務優(yōu)勢。由于內存數(shù)據(jù)庫軟件產品本身的價格因素,中小規(guī)模軟件產品難以應用該項技術。該項技術在復雜環(huán)境和龐大的數(shù)據(jù)規(guī)模中更能顯示其優(yōu)勢,因此內存數(shù)據(jù)庫技術的采用可以擴大在相關領域的技術優(yōu)勢。例如自動分析和跟蹤特定業(yè)務需求的金融產品,查找當前市場中的不同指標的熱點。這些功能將顯著優(yōu)于現(xiàn)有國內同類軟件產品。一些軟件僅能根據(jù)少量指標進行分析,而內存數(shù)據(jù)庫技術的引入可以實現(xiàn)所有數(shù)據(jù)的單一分析和組合分析。準實時分析與數(shù)據(jù)倉庫技術相比較,其最大的優(yōu)勢就是:極快、準實時。與共享內存技術相比較其特點是:便捷與全面。
風險控制和監(jiān)管,在項目建設中還相對比較滯后。但作為系統(tǒng)中必不可少的重要環(huán)節(jié),在未來的發(fā)展中這部分功能一定會得到顯著強化。在這個過程中,將面對系統(tǒng)結構復雜、數(shù)據(jù)量龐大的問題。如何面對開放的系統(tǒng)服務帶來的安全隱患,如何監(jiān)管系統(tǒng)運行狀態(tài)和用戶的行為,特別是實時獲取這些信息而不是在出現(xiàn)問題很久之后才發(fā)現(xiàn),這些課題將會呈現(xiàn)在決策者和技術結構設計人員的面前。
數(shù)據(jù)庫技術、審計技術等一系列手段都將會得到廣泛應用。適當?shù)囊雰却鏀?shù)據(jù)庫技術,將可以實現(xiàn)對于風險控制和監(jiān)管的實時處理。借鑒網(wǎng)絡安全中入侵防護體系的一些經驗,可以制定一些自動處理策略,讓系統(tǒng)按照事先規(guī)定的策略和預案進行預處理,在需要人為干預的時候盡早通知有關人員。類似功能的實現(xiàn)離不開實時數(shù)據(jù)的收集和處理。
目前已經嘗試對一些頻繁發(fā)生寫入操作的日志處理采用結合內存數(shù)據(jù)庫的技術實時方案。在這樣的應用場景中,可以最快速地將需要記錄的信息寫入系統(tǒng),降低對外服務延遲,提升服務能力。這些被記錄的日志信息再由其他處理邏輯進行分類與存檔,供其他需要使用。例如,將日志信息轉存到傳統(tǒng)關系型數(shù)據(jù)庫中,以便更加長期的保留和進行分析。
“新華08”系統(tǒng)采用“統(tǒng)一認證、分布授權”的指導思想,考慮業(yè)務的靈活性和松耦合的技術要求,各個子系統(tǒng)具有獨立授權模塊。資訊授權子系統(tǒng)的實施已經證明,在各個子系統(tǒng)的授權邏輯中,恰當引入內存數(shù)據(jù)庫技術是可以顯著提高服務性能和授權速度,對于整體服務水平的提高是有幫助的。
長達6年半的實踐檢驗證明,內存數(shù)據(jù)庫技術在金融信息服務平臺項目建設中的應用是成功的。它將原來的處理效率提高了4倍以上。對于檢索等特定邏輯的應用,效率提升達10倍。根據(jù)觀察還發(fā)現(xiàn)了整體性能提高幾十倍的特定情況。內存數(shù)據(jù)庫技術在子系統(tǒng)關鍵業(yè)務的應用,改善了“新華08”技術服務狀況,顯著增強系統(tǒng)的安全性,對于重要稀有資源的保護起到了很好的作用。此外,在性能方面的提升非常明顯,可用較少的硬件資源提供較強的并發(fā)服務能力和更快的響應速度。
在今后的金融信息服務平臺項目和其他新華社項目中,適當?shù)囊虻刂埔说牟捎脙却鏀?shù)據(jù)庫技術,將會使“新華08”項目和其他項目技術服務水平的提升更容易。新技術還在不斷涌現(xiàn)和發(fā)展,伴隨科技的進步,不斷開拓創(chuàng)新,努力把“新華08”項目建設的更好,將是技術工作者的奮斗目標。
新華社技術局工程師)