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