IT之家 4 月 9 日消息,WCDB 是微信團(tuán)隊(duì)開源的一款基于 SQLite 的終端數(shù)據(jù)庫。自 2017 年 6 月開源以來,已經(jīng)推出了十多個版本。
然而,作為國內(nèi)乃至全球范圍內(nèi)使用數(shù)據(jù)庫最頻繁的 App,微信內(nèi)部涉及上百種不同業(yè)務(wù)的數(shù)據(jù)庫,存儲的消息條數(shù)可達(dá)百萬乃至千萬級別。這種龐大的數(shù)據(jù)量和日益豐富的應(yīng)用場景,給 WCDB 帶來了不斷更新的需求和挑戰(zhàn),原有的代碼框架逐漸難以應(yīng)對。
因此,自 2019 年起,微信決定放棄接口的向后兼容性,全力打造一個更加強(qiáng)大的新版 WCDB。經(jīng)過多次迭代,WCDB 的接口層和核心邏輯層已經(jīng)得到了全面改進(jìn),同時也積累了許多新功能。
如今,微信宣布將該重大升級的新版本 WCDB 進(jìn)行開源,主要變化及更新包括:
更豐富的開發(fā)語言支持:新增支持了 C++,完整支持了 Java 和 Kotlin 語言的 ORM,覆蓋更多終端平臺;
更強(qiáng)大的 SQL 表達(dá)能力:對 Winq 進(jìn)行了重寫、強(qiáng)化等;
更安全的數(shù)據(jù)存儲能力:全新的數(shù)據(jù)備份方案、修復(fù)方案等;
更靈活的數(shù)據(jù)擴(kuò)展能力:數(shù)據(jù)遷移、數(shù)據(jù)壓縮等;
更細(xì)致的性能優(yōu)化能力:FTS5 優(yōu)化、可中斷事務(wù)等。
據(jù)介紹,WCDB 1.0 版本支持 Objective-C、Swift、Java 三種開發(fā)語言,但是三種語言的 WCDB 除了共用同一個版本的 SQLite 和共用同一套備份修復(fù)邏輯,其他代碼都是獨(dú)立開發(fā)的。
隨著 WCDB 不斷迭代,WCDB 的很多新能力都是在 ObjC 版本上開發(fā)完成和上線驗(yàn)證,Swift 和 Java 版本基本處于停止迭代的狀態(tài),他們之間的差異也越來越大。在理想的狀態(tài)下,不同語言版本的 WCDB 應(yīng)該擁有同樣的能力,但是如果把 ObjC 版本的新邏輯重新在 Swift 和 Java 上實(shí)現(xiàn)一遍,不僅工作量大,還容易出錯,需要再次上線驗(yàn)證,不太現(xiàn)實(shí)。
幸運(yùn)的是,ObjC 版本的 WCDB 的核心邏輯都是用 C++ 實(shí)現(xiàn)的,ObjC 只是用來實(shí)現(xiàn)接口層的邏輯。很多支持多種開發(fā)語言的庫都是使用 C++ 語言來實(shí)現(xiàn)核心邏輯,其他語言只是用來實(shí)現(xiàn)接口層,比如很熱門的客戶端 NoSQL 數(shù)據(jù)庫組件 realmDB 就是如此。WCDB 也可以按照這個思路來設(shè)計(jì),這樣 ObjC 版本的 WCDB 只需小幅調(diào)整,將核心邏輯完全改用 C++ 來實(shí)現(xiàn),Swift 和 Java 通過橋接方法來接入 C++ 核心邏輯。
此外,為了充分支持微信各端不同場景的數(shù)據(jù)庫開發(fā)需求,WCDB 還擴(kuò)展支持了 C++ 和 Kotlin,這樣就完整覆蓋了現(xiàn)在終端開發(fā)的主流語言。
在接口層面,新版 WCDB 全面支持了 C++、Java、Kotlin、Swift 和 ObjC 這五種主要的終端開發(fā)語言,覆蓋了 Android、iOS、Windows 和 Linux 這四大終端平臺。同時,微信還對 Winq 進(jìn)行了重寫和強(qiáng)化,使開發(fā)者能夠在各種語言中使用原生語法編寫任意 SQL。
在功能層面,新版 WCDB 推出了全新的數(shù)據(jù)備份和修復(fù)方案,提升了數(shù)據(jù)修復(fù)率,同時將數(shù)據(jù)備份的性能消耗降至可忽略不計(jì)。
此外,微信還重點(diǎn)推出了數(shù)據(jù)遷移和數(shù)據(jù)壓縮這兩個新功能,讓開發(fā)者通過簡單的配置,就能處理復(fù)雜業(yè)務(wù)中的數(shù)據(jù)過度聚集和數(shù)據(jù)過度膨脹這兩大難題。新版 WCDB 還推出了 FTS5 優(yōu)化和可中斷事務(wù)等新特性,使開發(fā)者在特定場景下可以實(shí)現(xiàn)更極致的性能優(yōu)化。
新版 WCDB 已在 Github 開源,IT之家附項(xiàng)目地址:
https://github.com/Tencent/wcdb
廣告聲明:文內(nèi)含有的對外跳轉(zhuǎn)鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時間,結(jié)果僅供參考,IT之家所有文章均包含本聲明。