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