中科院軟件所在數(shù)據(jù)庫(kù)系統(tǒng)的正確性保障方面取得進(jìn)展

2023-01-11 13:16:06


(資料圖)

近日,中科院軟件所軟件工程中心數(shù)據(jù)庫(kù)系統(tǒng)可靠性保障團(tuán)隊(duì)的兩篇論文被ICSE 2023接收。ICSE(International Conference on Software Engineering)是軟件工程領(lǐng)域的頂級(jí)國(guó)際會(huì)議,迄今已經(jīng)舉辦45屆。研究成果聚焦數(shù)據(jù)庫(kù)系統(tǒng)在SQL語(yǔ)句、事務(wù)執(zhí)行方面的正確性,是該研究團(tuán)隊(duì)在數(shù)據(jù)庫(kù)系統(tǒng)可靠性保障方向的新探索。

論文“Testing Database Systems via Differential Query Execution”關(guān)注數(shù)據(jù)庫(kù)系統(tǒng)中單條SQL語(yǔ)句執(zhí)行的正確性。關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)使用結(jié)構(gòu)化查詢語(yǔ)言(SQL)高效地存儲(chǔ)和檢索數(shù)據(jù)。如果SQL語(yǔ)句執(zhí)行存在缺陷,可能會(huì)導(dǎo)致數(shù)據(jù)庫(kù)狀態(tài)錯(cuò)誤、系統(tǒng)宕機(jī)等嚴(yán)重后果。因此,SQL語(yǔ)句執(zhí)行的正確性是基于數(shù)據(jù)庫(kù)系統(tǒng)的各類應(yīng)用正確性保障的關(guān)鍵?,F(xiàn)有數(shù)據(jù)庫(kù)系統(tǒng)測(cè)試方法主要關(guān)注SELECT語(yǔ)句執(zhí)行的正確性,無(wú)法檢測(cè)UPDATE、DELETE等更新語(yǔ)句中的缺陷。同時(shí),研究團(tuán)隊(duì)發(fā)現(xiàn)SELECT、UPDATE和DELETE語(yǔ)句都使用WHERE子句作為查詢條件與數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)行交互,相同的WHERE子句應(yīng)該影響到數(shù)據(jù)庫(kù)中相同的數(shù)據(jù)行?;谏鲜霭l(fā)現(xiàn)和現(xiàn)有檢查方法存在的問(wèn)題,研究團(tuán)隊(duì)提出了差分語(yǔ)句執(zhí)行方法DQE(Differential Query Execution),通過(guò)分析使用相同WHERE子句的SELECT、UPDATE和DELETE的執(zhí)行差異,自動(dòng)化判斷單個(gè)數(shù)據(jù)庫(kù)系統(tǒng)中SQL語(yǔ)句執(zhí)行的正確性。

圖1展示了DQE的測(cè)試流程。該研究團(tuán)隊(duì)在5個(gè)知名數(shù)據(jù)庫(kù)系統(tǒng)(MySQL、MariaDB、TiDB、CockroachDB和SQLite)中,共計(jì)檢測(cè)了50個(gè)新缺陷,其中41個(gè)缺陷得到開(kāi)發(fā)人員確認(rèn),11個(gè)已經(jīng)被修復(fù)。

圖1 DQE的測(cè)試流程

論文“Detecting Isolation Bugs via Transaction Oracle Construction”關(guān)注數(shù)據(jù)庫(kù)系統(tǒng)中事務(wù)執(zhí)行的正確性。關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)是利用事務(wù)機(jī)制來(lái)保障數(shù)據(jù)的完整性,但數(shù)據(jù)庫(kù)系統(tǒng)可能違反事務(wù)執(zhí)行的隔離性要求,導(dǎo)致數(shù)據(jù)庫(kù)系統(tǒng)出現(xiàn)查詢結(jié)果錯(cuò)誤、數(shù)據(jù)庫(kù)狀態(tài)錯(cuò)誤等嚴(yán)重缺陷。而現(xiàn)有事務(wù)可靠性保障研究主要依賴簡(jiǎn)單數(shù)據(jù)結(jié)構(gòu)與事務(wù)執(zhí)行歷史來(lái)驗(yàn)證事務(wù)隔離性,不能支持實(shí)際數(shù)據(jù)庫(kù)系統(tǒng)中大部分常見(jiàn)事務(wù)特性。

針對(duì)該問(wèn)題,研究團(tuán)隊(duì)提出一種自動(dòng)化檢測(cè)數(shù)據(jù)庫(kù)系統(tǒng)中事務(wù)缺陷的方法Troc。該方法的核心思想是把并行事務(wù)對(duì)解耦成一組按照一定順序、在特定數(shù)據(jù)庫(kù)視圖上執(zhí)行的獨(dú)立SQL語(yǔ)句,以此作為事務(wù)執(zhí)行預(yù)言。實(shí)際事務(wù)執(zhí)行結(jié)果與獨(dú)立語(yǔ)句執(zhí)行結(jié)果之間的不一致表明存在事務(wù)缺陷。

圖2展示了Troc的測(cè)試流程。該研究團(tuán)隊(duì)在3個(gè)知名關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)(MySQL、MariaDB、TiDB)中,發(fā)現(xiàn)了12個(gè)事務(wù)相關(guān)的隔離缺陷,其中7個(gè)是尚未被披露的新缺陷。

圖2 Troc的測(cè)試流程

“Testing Database Systems via Differential Query Execution”的第一作者為博士生宋建森,通訊作者為竇文生、王偉研究員;“Detecting Isolation Bugs via Transaction Oracle Construction”的第一作者為竇文生研究員。上述研究成果已經(jīng)在浪潮云溪數(shù)據(jù)庫(kù)系統(tǒng)、達(dá)夢(mèng)數(shù)據(jù)庫(kù)系統(tǒng)上開(kāi)展實(shí)際應(yīng)用,并檢測(cè)到若干真實(shí)缺陷。研究獲得國(guó)家自然科學(xué)基金、中國(guó)科學(xué)院青年創(chuàng)新促進(jìn)會(huì)等的支持。

標(biāo)簽:

關(guān)閉
新聞速遞