(資料圖)
近日,中科院軟件所軟件工程中心數(shù)據(jù)庫系統(tǒng)可靠性保障團隊的兩篇論文被ICSE 2023接收。ICSE(International Conference on Software Engineering)是軟件工程領域的頂級國際會議,迄今已經(jīng)舉辦45屆。研究成果聚焦數(shù)據(jù)庫系統(tǒng)在SQL語句、事務執(zhí)行方面的正確性,是該研究團隊在數(shù)據(jù)庫系統(tǒng)可靠性保障方向的新探索。
論文“Testing Database Systems via Differential Query Execution”關注數(shù)據(jù)庫系統(tǒng)中單條SQL語句執(zhí)行的正確性。關系型數(shù)據(jù)庫系統(tǒng)使用結(jié)構(gòu)化查詢語言(SQL)高效地存儲和檢索數(shù)據(jù)。如果SQL語句執(zhí)行存在缺陷,可能會導致數(shù)據(jù)庫狀態(tài)錯誤、系統(tǒng)宕機等嚴重后果。因此,SQL語句執(zhí)行的正確性是基于數(shù)據(jù)庫系統(tǒng)的各類應用正確性保障的關鍵?,F(xiàn)有數(shù)據(jù)庫系統(tǒng)測試方法主要關注SELECT語句執(zhí)行的正確性,無法檢測UPDATE、DELETE等更新語句中的缺陷。同時,研究團隊發(fā)現(xiàn)SELECT、UPDATE和DELETE語句都使用WHERE子句作為查詢條件與數(shù)據(jù)庫系統(tǒng)進行交互,相同的WHERE子句應該影響到數(shù)據(jù)庫中相同的數(shù)據(jù)行?;谏鲜霭l(fā)現(xiàn)和現(xiàn)有檢查方法存在的問題,研究團隊提出了差分語句執(zhí)行方法DQE(Differential Query Execution),通過分析使用相同WHERE子句的SELECT、UPDATE和DELETE的執(zhí)行差異,自動化判斷單個數(shù)據(jù)庫系統(tǒng)中SQL語句執(zhí)行的正確性。
圖1展示了DQE的測試流程。該研究團隊在5個知名數(shù)據(jù)庫系統(tǒng)(MySQL、MariaDB、TiDB、CockroachDB和SQLite)中,共計檢測了50個新缺陷,其中41個缺陷得到開發(fā)人員確認,11個已經(jīng)被修復。
圖1 DQE的測試流程
論文“Detecting Isolation Bugs via Transaction Oracle Construction”關注數(shù)據(jù)庫系統(tǒng)中事務執(zhí)行的正確性。關系型數(shù)據(jù)庫系統(tǒng)是利用事務機制來保障數(shù)據(jù)的完整性,但數(shù)據(jù)庫系統(tǒng)可能違反事務執(zhí)行的隔離性要求,導致數(shù)據(jù)庫系統(tǒng)出現(xiàn)查詢結(jié)果錯誤、數(shù)據(jù)庫狀態(tài)錯誤等嚴重缺陷。而現(xiàn)有事務可靠性保障研究主要依賴簡單數(shù)據(jù)結(jié)構(gòu)與事務執(zhí)行歷史來驗證事務隔離性,不能支持實際數(shù)據(jù)庫系統(tǒng)中大部分常見事務特性。
針對該問題,研究團隊提出一種自動化檢測數(shù)據(jù)庫系統(tǒng)中事務缺陷的方法Troc。該方法的核心思想是把并行事務對解耦成一組按照一定順序、在特定數(shù)據(jù)庫視圖上執(zhí)行的獨立SQL語句,以此作為事務執(zhí)行預言。實際事務執(zhí)行結(jié)果與獨立語句執(zhí)行結(jié)果之間的不一致表明存在事務缺陷。
圖2展示了Troc的測試流程。該研究團隊在3個知名關系型數(shù)據(jù)庫系統(tǒng)(MySQL、MariaDB、TiDB)中,發(fā)現(xiàn)了12個事務相關的隔離缺陷,其中7個是尚未被披露的新缺陷。
圖2 Troc的測試流程
“Testing Database Systems via Differential Query Execution”的第一作者為博士生宋建森,通訊作者為竇文生、王偉研究員;“Detecting Isolation Bugs via Transaction Oracle Construction”的第一作者為竇文生研究員。上述研究成果已經(jīng)在浪潮云溪數(shù)據(jù)庫系統(tǒng)、達夢數(shù)據(jù)庫系統(tǒng)上開展實際應用,并檢測到若干真實缺陷。研究獲得國家自然科學基金、中國科學院青年創(chuàng)新促進會等的支持。
標簽: