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