李世斌,郭永振,唐 剛
(中國軟件評測中心,北京 100048)
電子信息產(chǎn)業(yè)推進(jìn)國產(chǎn)化意義之一是避免核心技術(shù)受制于人,以及保障網(wǎng)絡(luò)空間安全和國家安全.“核高基”研究任務(wù)中的“基”即指以數(shù)據(jù)庫、操作系統(tǒng)等為核心的基礎(chǔ)軟件產(chǎn)品,數(shù)據(jù)庫的國產(chǎn)化替代是重點技術(shù)攻關(guān)難題.通過自研國產(chǎn)數(shù)據(jù)庫管理系統(tǒng)來弱化對市場上其他數(shù)據(jù)庫產(chǎn)品的過度依賴是當(dāng)前的產(chǎn)業(yè)需求.數(shù)據(jù)庫國產(chǎn)化替代的難點在于,當(dāng)前IT 建設(shè)運行多年,類似商業(yè)銀行等對數(shù)據(jù)安全性要求較高的領(lǐng)域已經(jīng)對Oracle 等數(shù)據(jù)庫形成依賴,因此政府機(jī)構(gòu)、商業(yè)銀行、金融證券公司、中央企業(yè)在進(jìn)行信息系統(tǒng)建設(shè)與改造時面臨數(shù)據(jù)庫的選型問題.如何實現(xiàn)國產(chǎn)數(shù)據(jù)庫遷移、評估國產(chǎn)化改造對業(yè)務(wù)運行的影響、分析國產(chǎn)數(shù)據(jù)庫及架構(gòu)的適用性都是國產(chǎn)化進(jìn)程中需要解決的問題.
DB-Engines是關(guān)于關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫的全球性知識庫,每月對數(shù)據(jù)庫管理系統(tǒng)進(jìn)行熱度排名.表1是DB-Engines 評選的近二年國際市場上熱度排名前5的數(shù)據(jù)庫管理系統(tǒng),圖1是排名趨勢變化,排名策略是根據(jù)Google、Bing、Yandex 搜索引擎、技術(shù)網(wǎng)站及社交平臺上的查詢頻度[1].目前主流數(shù)據(jù)庫管理系統(tǒng)以關(guān)系型數(shù)據(jù)庫為主導(dǎo)產(chǎn)品,尤其是Oracle、MySQL、Microsoft SQL Server、PostgreSQL、MongoDB 等.
目前以O(shè)racle為代表的國外商業(yè)數(shù)據(jù)庫占主導(dǎo)地位.PostgreSQL 開源對象關(guān)系型數(shù)據(jù)庫的關(guān)注度持續(xù)增高.隨著保障數(shù)據(jù)庫國產(chǎn)化與信息安全的總體規(guī)劃,國產(chǎn)數(shù)據(jù)庫產(chǎn)業(yè)發(fā)展提速,國內(nèi)典型的數(shù)據(jù)庫產(chǎn)品有人大金倉Kingbase 數(shù)據(jù)庫、達(dá)夢數(shù)據(jù)庫、南大通用GBase、神舟通用數(shù)據(jù)庫等[2].信息技術(shù)迅速發(fā)展導(dǎo)致海量數(shù)據(jù)激增問題,國內(nèi)數(shù)據(jù)庫廠商尤其是大型云平臺廠商開發(fā)出分布式架構(gòu)的數(shù)據(jù)庫系統(tǒng)以解決多用戶并發(fā)支持、在線擴(kuò)容等問題,并向政府、金融等領(lǐng)域推廣.分布式關(guān)系數(shù)據(jù)庫OceanBase 具有數(shù)據(jù)強(qiáng)一致、高可用、高性能、在線擴(kuò)展、高度兼容SQL 標(biāo)準(zhǔn)等特點;RDS MySQL、MongoDB 云數(shù)據(jù)庫等分布式架構(gòu)產(chǎn)品可根據(jù)云租戶需求被部署于虛擬機(jī)、ECS云服務(wù)器并有良好兼容性;GaussDB 采用大規(guī)模并行處理MPP(Massive Parallel Processing)架構(gòu),提供PB 級別數(shù)據(jù)量的處理能力;分布式架構(gòu)的Taurus 具備可彈性擴(kuò)展的虛擬塊存儲服務(wù)、高可靠性、高I/O 吞吐能力.
表1 DB-Engines 總結(jié)的數(shù)據(jù)庫熱度排名
圖1 DB-engines 總結(jié)的數(shù)據(jù)庫熱度排名趨勢
當(dāng)前重要應(yīng)用領(lǐng)域數(shù)據(jù)庫系統(tǒng)依賴于國外的技術(shù)、產(chǎn)品及服務(wù).2018年美國商務(wù)部對中興、華為進(jìn)行芯片、軟件禁售.銀監(jiān)發(fā)[2014]39 號文《關(guān)于應(yīng)用安全可控信息技術(shù)加強(qiáng)銀行業(yè)網(wǎng)絡(luò)安全和信息化建設(shè)的指導(dǎo)意見》指出安全可控信息技術(shù)在銀行業(yè)總體達(dá)到75%左右的使用率.由于大數(shù)據(jù)、物聯(lián)網(wǎng)、移動互聯(lián)網(wǎng)等新技術(shù)的發(fā)展與產(chǎn)業(yè)融合,網(wǎng)絡(luò)數(shù)據(jù)量異常龐大且不斷有增量數(shù)據(jù)產(chǎn)生.大型企業(yè)日數(shù)據(jù)處理量已達(dá)到百TB 級別(如微信官方統(tǒng)計其每天處理的信息量為450 億條).作為信息存儲的主要載體,數(shù)據(jù)庫系統(tǒng)國產(chǎn)化是保障網(wǎng)絡(luò)安全和國家安全的必然要求.
數(shù)據(jù)庫國產(chǎn)化替代關(guān)鍵在于適配性調(diào)研、測試選型、SQL 性能優(yōu)化以及網(wǎng)絡(luò)安全評估.技術(shù)層面的調(diào)研應(yīng)包含數(shù)據(jù)庫事務(wù)正確執(zhí)行的4 個基本特性(ACID),即原子性(atomicity)、一致性(consistency)、隔離性(isolation)、持久性(durability).原子性強(qiáng)調(diào)事務(wù)是不可分割的工作單位,如果事務(wù)中一個SQL 語句執(zhí)行失敗,則數(shù)據(jù)庫事務(wù)回滾到之前狀態(tài).一致性強(qiáng)調(diào)數(shù)據(jù)庫的完整性約束不受破壞.隔離性是事務(wù)之間隔離,并發(fā)執(zhí)行的各個事務(wù)之間無法相互干擾.持久性強(qiáng)調(diào)事務(wù)提交后的永久性,其它操作或故障不應(yīng)對事務(wù)產(chǎn)生影響.
數(shù)據(jù)庫評價指標(biāo)的確定要考慮關(guān)系型數(shù)據(jù)庫(RDMS)和非關(guān)系型數(shù)據(jù)庫(NoSQL)的差異性.關(guān)系型數(shù)據(jù)庫采用了關(guān)系模型來組織數(shù)據(jù),符合嚴(yán)格的范式設(shè)計與ACID 要求.對通用SQL 語言的支持使得關(guān)系型數(shù)據(jù)庫具備易用性、實體完整性、參照完整性和用戶定義的完整性等特征,但存在難以應(yīng)對高并發(fā)、海量數(shù)據(jù)表查詢時的低效率問題以及難以橫向擴(kuò)展問題.非關(guān)系型數(shù)據(jù)庫是分布式、不保證遵循ACID 原則的數(shù)據(jù)存儲系統(tǒng),以鍵值對存儲數(shù)據(jù)且結(jié)構(gòu)不固定,數(shù)據(jù)之間沒有耦合性及庫表關(guān)聯(lián).NoSQL 數(shù)據(jù)庫基于BASE(基本可用、軟狀態(tài)、最終一致)模型,具有更高的水平可擴(kuò)展性、靈活性、可用性[3],但不適合持久存儲海量數(shù)據(jù).根據(jù)OWASP 組織發(fā)布的十大最關(guān)鍵Web 應(yīng)用風(fēng)險(OWASP Top 10),SQL 注入攻擊在2017年被列為威脅最嚴(yán)重的攻擊方式.2019年初我國境內(nèi)大量使用的MongoDB、Elasticsearch 數(shù)據(jù)庫相繼曝出存在網(wǎng)絡(luò)安全漏洞,存在泄露信息的風(fēng)險,因此應(yīng)將數(shù)據(jù)庫網(wǎng)絡(luò)安全評價指標(biāo)納入測評指標(biāo)體系[4,5].
在數(shù)據(jù)庫產(chǎn)品特性分析的基礎(chǔ)上建立一個選型測評指標(biāo)體系模型,指標(biāo)的確定適當(dāng)考慮了數(shù)據(jù)庫ACID特性的實現(xiàn),保證在重要系統(tǒng)建設(shè)中實現(xiàn)國產(chǎn)化替代后的業(yè)務(wù)功能銜接.
依據(jù)GB/T 25000.51-2016《系統(tǒng)與軟件工程 系統(tǒng)與軟件質(zhì)量要求和評價(SQuaRE)第51 部分:就緒可用軟件產(chǎn)品(RUSP)的質(zhì)量要求和測試細(xì)則》、TPC事務(wù)處理性能委員會測試基準(zhǔn)(如TPC-C/E/H)及GB/T 28448-2019《信息安全技術(shù)網(wǎng)絡(luò)安全等級保護(hù)測評要求》中的三級安全計算環(huán)境測評要求,可以從3 個方面建立選型測評指標(biāo)體系模型,第一類是性能效率指標(biāo),包括高并發(fā)支持性、TPC 基準(zhǔn)性能、時間性能、傳輸效率;第二類是信息安全性指標(biāo),包括身份鑒別、訪問控制、安全審計等,信息安全目標(biāo)可保證數(shù)據(jù)的保密性、完整性、可用性;第三類是其他的不可量化質(zhì)量特性指標(biāo),包括功能性、兼容性、可靠性、可維護(hù)性、可移植性;國產(chǎn)數(shù)據(jù)庫選型測評指標(biāo)體系模型如圖2,主要評價數(shù)據(jù)庫的產(chǎn)品質(zhì)量特性[6,7].
通過產(chǎn)品質(zhì)量特性確定數(shù)據(jù)庫選型指標(biāo),測評結(jié)果映射到不同的區(qū)域,可以綜合評價不同數(shù)據(jù)庫產(chǎn)品的差異.選型測評基本思路是在新建設(shè)系統(tǒng)或者原系統(tǒng)升級前進(jìn)行業(yè)務(wù)特征提取與分析,對現(xiàn)運行系統(tǒng)的數(shù)據(jù)庫性能和業(yè)務(wù)增量評估,對不同數(shù)據(jù)庫產(chǎn)品進(jìn)行橫評測試,最終在國產(chǎn)化遷移完成后進(jìn)行性能壓力測試以確保對業(yè)務(wù)的良好支撐.
圖2 國產(chǎn)數(shù)據(jù)庫選型測評指標(biāo)體系模型
一般通過可量化指標(biāo)對性能效率進(jìn)行評價,通過開源或行業(yè)通用工具模擬正常、峰值及異常負(fù)載條件對數(shù)據(jù)庫的各項性能指標(biāo)進(jìn)行測試.
3.1.1 高并發(fā)支持性
通過Loadrunner、Jmeter 模擬壓力測試,(1)庫表建立,針對被選型的多款數(shù)據(jù)庫產(chǎn)品建立同樣的表結(jié)構(gòu)及外鍵約束,生成關(guān)聯(lián)表及大于5000 萬條記錄;(2)建立測試進(jìn)程與連接配置,國產(chǎn)數(shù)庫廣泛支持JDBC接口(JDBC Driver Class 驅(qū)動),選擇Query_Type 并添加庫表的讀寫測試腳本;(3)進(jìn)行持續(xù)性壓力測試并收集平均響應(yīng)時間、吞吐率、錯誤率等結(jié)果.
3.1.2 TPC 基準(zhǔn)測試
TPC 組織公布的測試標(biāo)準(zhǔn)包括TPC-C/E/H.TPCC是專門針對聯(lián)機(jī)交易處理系統(tǒng)(OLTP)的測試規(guī)范,被眾廠商認(rèn)可(TPC-E 比TPC-C 基準(zhǔn)模擬的應(yīng)用環(huán)境更真實,模型的仿真性和完備性也更優(yōu)秀).本文量化指標(biāo)體系將TPC-C/E/H 基準(zhǔn)全部納入,在進(jìn)行國產(chǎn)數(shù)據(jù)庫選型時可裁減選擇一種基準(zhǔn),在不少于1000 個數(shù)據(jù)倉庫與虛擬終端并發(fā)的場景下記錄其tpmc 值[8].
3.1.3 時間性能與傳輸效率
性能與效率測評是對數(shù)據(jù)庫基本寫入、讀取、同步、遷移性能進(jìn)行量化評估.(1)庫表建立,建立與高并發(fā)支持性相同的數(shù)據(jù)環(huán)境;(2)進(jìn)行關(guān)聯(lián)查詢與寫入測試,對SQL 語句(如Select、Insert)進(jìn)行嚴(yán)格的條件限定并對比返回時間;(3)全量數(shù)據(jù)遷移的傳輸性能(單位MB/s)和同步性能(單位TPS);(4)數(shù)據(jù)庫異地實時同步備份的時間效率,搭建跨區(qū)域測試環(huán)境,設(shè)計用例驗證實時同步的時間效率.
信息安全性指標(biāo)的目標(biāo)是實現(xiàn)數(shù)據(jù)可用性、完整性、保密性.評估方法為身份鑒別、訪問控制、安全審計、入侵防范、數(shù)據(jù)備份恢復(fù)[9].
3.2.1 身份鑒別
(1)評估是否對登錄用戶進(jìn)行身份標(biāo)識和鑒別,核查標(biāo)識唯一性、鑒別信息復(fù)雜性、更換周期性要求;(2)評估是否對登錄失敗及登錄超時情況進(jìn)行處理;(3)是否支持SSL/SSH 等安全的遠(yuǎn)程連接方式以保證重要信息的加密傳輸;(4)是否支持雙因素身份認(rèn)證.
3.2.2 訪問控制
(1)數(shù)據(jù)庫的賬戶和權(quán)限分配策略;(2)檢查數(shù)據(jù)庫系統(tǒng)是否可設(shè)置安全策略,應(yīng)支持用戶和/或用戶組可以根據(jù)身份規(guī)定對庫表的訪問控制策略;(3)訪問控制的粒度應(yīng)達(dá)到主體為用戶級或進(jìn)程級,客體為文件、數(shù)據(jù)庫表級.
3.2.3 安全審計
安全審計評估數(shù)據(jù)庫的日志記錄及審計功能,審計應(yīng)覆蓋到每個用戶并對重要的用戶行為和重要安全事件進(jìn)行審計,審計記錄可備份,審計進(jìn)程受保護(hù).
3.2.4 入侵防范
入侵防范方面主要評估數(shù)據(jù)庫系統(tǒng)是否有高風(fēng)險漏洞、產(chǎn)品補(bǔ)丁更新周期與更新策略等.
3.2.5 數(shù)據(jù)備份恢復(fù)
數(shù)據(jù)備份恢復(fù)主要評估數(shù)據(jù)庫系統(tǒng)是否提供本地備份與恢復(fù)功能,包括數(shù)據(jù)全量備份、增量備份、異地實時同步、故障可恢復(fù)能力等.
其他指標(biāo)包括了不可量化的一些質(zhì)量特性,測試順序為搭建測試環(huán)境、部署測試數(shù)據(jù)及場景、驗證指標(biāo)是否可達(dá).
3.3.1 功能性
驗證國產(chǎn)數(shù)據(jù)庫基礎(chǔ)表管理功能,對數(shù)據(jù)定義語言DDL、數(shù)據(jù)操作語言DML、數(shù)據(jù)查詢語言DQL、事件控制語言TCL、數(shù)據(jù)控制語言DCL 進(jìn)行SQL 語句驗證,評估數(shù)據(jù)庫事務(wù)處理功能支持、完整性約束(唯一性約束、非空值約束),對分布式部署數(shù)據(jù)庫應(yīng)驗證分表分庫、SQL 自動路由、讀寫分離、主副本節(jié)點數(shù)據(jù)一致性等功能.
3.3.2 兼容性
驗證對JDBC、ODBC 接口的兼容性、支持的數(shù)據(jù)類型,數(shù)據(jù)類型包括字符串、數(shù)值、日期時間、布爾、二進(jìn)制串、XML 等.增強(qiáng)要求下驗證中間件、B/S 架構(gòu)Web 應(yīng)用中對瀏覽器的兼容性、多源異構(gòu)及Oracle 語法和數(shù)據(jù)類型兼容性等.
3.3.3 可靠性
通過ACID 中一致性和持久性的反映驗證可靠性,測試用例從容錯性、數(shù)據(jù)保護(hù)、易恢復(fù)性、運行穩(wěn)定性角度設(shè)計.(1)對人機(jī)接口輸入的SQL 語法及數(shù)據(jù)進(jìn)行有效性檢驗,以避免失效、誤操作、死機(jī);(2)數(shù)據(jù)庫在規(guī)定的極限情況下不丟失數(shù)據(jù);(3)黑盒測試模擬異常,可實現(xiàn)數(shù)據(jù)恢復(fù)功能;(4)模擬數(shù)據(jù)庫讀寫壓力并運行8 小時,驗證是否出現(xiàn)故障和錯誤.
3.3.4 可維護(hù)性
從可重用、易修改、易測試等方面驗證可維護(hù)性,要求數(shù)據(jù)庫補(bǔ)丁升級時中斷服務(wù)時間小于特定指標(biāo),集群架構(gòu)及分布式數(shù)據(jù)庫應(yīng)保證節(jié)點個數(shù)在業(yè)務(wù)繁忙時可即時擴(kuò)展,能承載更多的業(yè)務(wù)流量QPS.
3.3.5 可移植性
從適應(yīng)性、易替換性方面驗證可移植性,(1)對Windows、Linux 操作系統(tǒng)的兼容性驗證,以及網(wǎng)絡(luò)軟件及合作應(yīng)用軟件的適應(yīng)性;(2)支持異構(gòu)數(shù)據(jù)庫遷移,且遷移停服時間受控.
在測評實踐過程中,針對具有代表性的國產(chǎn)數(shù)據(jù)庫進(jìn)行選型測評,參考測評指標(biāo)體系模型,通過適用性原則選擇具體3 類指標(biāo)并設(shè)計測試用例,針對大量業(yè)務(wù)并發(fā)運行及全國分布式訪問節(jié)點的業(yè)務(wù)特點,搭建圖3所示的模擬測試環(huán)境.
圖3 模擬測試環(huán)境
設(shè)計測試流程與指標(biāo),如圖4所示.A 類非量化指標(biāo)重點針對分布式數(shù)據(jù)庫事務(wù)功能、ACID 特性及接口兼容性等.B 類量化指標(biāo)測試中選用TPC-C 基準(zhǔn),通過TPCC、BenchmarkSQL 創(chuàng)建1000 個warehouse的測試數(shù)據(jù)并執(zhí)行1 小時,分析tpmc 值;設(shè)計外鍵關(guān)聯(lián)查詢的Select 腳本,模擬10 000 虛擬用戶并發(fā)執(zhí)行腳本10 分鐘,記錄不同數(shù)據(jù)庫的平均響應(yīng)時間RtAVG及錯誤率ErrAVG;時間性能方面主要對數(shù)據(jù)批量Select/Insert、全量/增量遷移時間進(jìn)行測評.C 類指標(biāo)僅選擇身份鑒別、安全審計、備份恢復(fù)3 項指標(biāo).最終進(jìn)行結(jié)果分析與選型比對.
圖4 測試流程及指標(biāo)
5 類數(shù)據(jù)庫tpmc 結(jié)果對比如圖5所示.
圖5 TPC-C 基準(zhǔn)測試的tpmc 值
通過圖5對性能效率指標(biāo)中的TPC-C 基準(zhǔn)測試結(jié)果進(jìn)行分析.在TPC-C 基準(zhǔn)測試階段工具腳本建立客戶表、商品表、訂單表等9 個數(shù)據(jù)表,添加交易數(shù)據(jù)并持續(xù)模擬1 小時內(nèi)該商品交易市場的訂單流通場景,導(dǎo)出的評價因子為每分鐘商業(yè)事務(wù)(tpmc)吞吐量,值越大則相同情況下數(shù)據(jù)庫性能可判定為更優(yōu).圖5的對比,可以部分反映不同數(shù)據(jù)庫的質(zhì)量特性可達(dá)程度,其中數(shù)據(jù)庫E、數(shù)據(jù)庫A 呈現(xiàn)出更好的高并發(fā)支持性(對環(huán)境配置具有強(qiáng)依賴性),本次結(jié)果分析僅通過可量化的性能效率指標(biāo)對數(shù)據(jù)庫性能進(jìn)行評價,在其他測評應(yīng)用中需兼顧性能效率、信息安全性、其他類不可量化指標(biāo)的結(jié)果.
本文分析了主流數(shù)據(jù)庫市場應(yīng)用情況,以及實現(xiàn)數(shù)據(jù)庫國產(chǎn)化選型測評的必要性.本文研究了關(guān)系型數(shù)據(jù)庫與NoSQL的特性,結(jié)合軟件質(zhì)量特性及安全測試標(biāo)準(zhǔn),提出了數(shù)據(jù)庫選型測評指標(biāo)體系模型,從性能效率、信息安全性、其它類指標(biāo)3 個方面進(jìn)行建模,并針對各指標(biāo)給出了通用的測試內(nèi)容.使用該指標(biāo)體系針對5 類國產(chǎn)主流數(shù)據(jù)庫進(jìn)行測評實踐,并給出了基于TPC-C 基準(zhǔn)的量化測評結(jié)果,驗證了測評指標(biāo)體系的合理性和可操作性.