4 月 9 日報道,由微信團(tuán)隊(duì)研發(fā)并已開源多年的 WCDB,是一款使用 SQLite 為基礎(chǔ)的終端數(shù)據(jù)庫。自 2017 年 6 月啟動以來,至今已推出超過十個版本。
而后,由于微信集團(tuán)內(nèi)部涉及眾多業(yè)務(wù),數(shù)據(jù)規(guī)模高達(dá)百萬甚至千萬級別的現(xiàn)狀,原有 WCDB 模塊表現(xiàn)開始顯得力不從心。
為了解決以上問題,自 2019 年起,微信團(tuán)隊(duì)決定對接口的向后兼容性予以放棄,著力于開發(fā)更加完善且強(qiáng)大的新版本 WCDB。歷經(jīng)數(shù)次改良與迭代,WCDB 的接口層和核心邏輯層均獲得了顯著提高,同時也增加了諸多新穎而實(shí)用的功能。
如今,微信已經(jīng)發(fā)布此項(xiàng)重大技術(shù)升級的新版本 WCDB,以及其更為豐富的開發(fā)語言支持,如新增 C++以及對 Java 和 Kotlin 語言的 ORM 提供完整支援,覆蓋越發(fā)廣泛的終端平臺;更強(qiáng)大的 SQL 表達(dá)能力,通過對 Winq 的重新書寫和強(qiáng)化體現(xiàn)出來;全新制定的數(shù)據(jù)存儲機(jī)制,包含了為用戶提供更全面的備份和修復(fù)計(jì)劃;更加便捷靈活的數(shù)據(jù)擴(kuò)展能力,包括數(shù)據(jù)遷移及數(shù)據(jù)壓縮;更加精細(xì)入微的性能優(yōu)化能力,例如 FTS5 效率提升及可中斷事務(wù)功能。
另外值得關(guān)注的是,早先的 WCDB 1.0 版本底部采用 Objective-C、Swift、Java 三種語言開發(fā),雖然三者版本的 SQLite 和數(shù)據(jù)修復(fù)邏輯相同,但各自不同的代碼皆為獨(dú)立開發(fā)完成。
然而,隨著 WCDB 版本更替與逐步發(fā)展,Objective-C 版本實(shí)際發(fā)揮更多功能,而 Swift 和 Java 版則處于相對落后的境地,兩者間的差距日益加大。
理論上,不同版本的 WCDB 應(yīng)具備相同實(shí)力,但是若將 Objective-C 版本的新邏輯在 Swift 和 Java 上重新實(shí)現(xiàn),工作繁重且易出錯,且需二次上線驗(yàn)證,因此并不可行。
幸運(yùn)的是,Objective-C 版本中 WCDB 的核心邏輯都通過 C++ 得以實(shí)現(xiàn),考慮到很多支持多語言開發(fā)的系統(tǒng)或庫都依賴 C++ 來構(gòu)建核心邏輯,其他語言則受限于接口層實(shí)現(xiàn),如業(yè)內(nèi)知名的客戶端NoSQL 數(shù)據(jù)庫組件 realmDB 即是類似例子。
遵循此思路來看待 WCDB,只需稍作調(diào)整,便能轉(zhuǎn)換 Core Logic 以 C++ 方式實(shí)現(xiàn),利用 Swift 和 Java 的橋接功能來接入 C++ core logic。同時為了滿足微信各個終端環(huán)境對數(shù)據(jù)庫開發(fā)的需求,WCDB 現(xiàn)已添加對 C++和 Kotlin 的支持,從而能夠全方位適配當(dāng)前終端開發(fā)的主流語言。
在此基礎(chǔ)上,新版本 WCDB 進(jìn)一步強(qiáng)化了接口層支持,對多個重要的終端開發(fā)語言,包括 C++、Java、Kotlin、Swift 和 Objective-C 均予以完整支持,涵蓋了 Android、iOS、Windows 和 Linux 四大終端平臺,同時微信也對 Winq 做了重寫和增強(qiáng),使得開發(fā)人員可以在各類語言環(huán)境下面使用原生語法編寫任意 SQL 語句。
新版 WCDB 功能層面的亮點(diǎn)則在于引入全新的數(shù)據(jù)備份和修復(fù)策略,提升了數(shù)據(jù)修復(fù)成功率,同時將數(shù)據(jù)備份的資源占用降低至幾乎忽略不計(jì)。
據(jù)悉,WCDB 全新的版本還增設(shè)數(shù)據(jù)遷移和數(shù)據(jù)壓縮兩項(xiàng)功能,協(xié)助使用者通過簡略的設(shè)置處理復(fù)雜業(yè)務(wù)環(huán)境中所出現(xiàn)的數(shù)據(jù)過度集中和膨脹問題。
最后,新版本 WCDB 還優(yōu)化改進(jìn)了 FTS5 以及可中斷事務(wù)等特性,使得開發(fā)者在特定場合下能實(shí)現(xiàn)更高效的性能優(yōu)化。
-
SQL
+關(guān)注
關(guān)注
1文章
764瀏覽量
44128 -
C++
+關(guān)注
關(guān)注
22文章
2108瀏覽量
73646 -
微信
+關(guān)注
關(guān)注
6文章
511瀏覽量
26566
發(fā)布評論請先 登錄
相關(guān)推薦
Linux微信4.0.0版發(fā)布,功能再升級
數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—通過拼接數(shù)據(jù)庫碎片恢復(fù)SQLserver數(shù)據(jù)庫
![<b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—通過拼接<b class='flag-5'>數(shù)據(jù)庫</b>碎片恢復(fù)SQLserver<b class='flag-5'>數(shù)據(jù)庫</b>](https://file1.elecfans.com/web1/M00/F4/07/wKgaoWcjE32AbQdWAAJD_hojvJc119.png)
數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—SQL Server數(shù)據(jù)庫出現(xiàn)823錯誤的數(shù)據(jù)恢復(fù)案例
![<b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—SQL Server<b class='flag-5'>數(shù)據(jù)庫</b>出現(xiàn)823錯誤的<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)案例](https://file1.elecfans.com/web2/M00/07/F4/wKgaombs78mANJ1GAAPeSoXHVPE244.png)
基于WDS證券行業(yè)建設(shè)金融信創(chuàng)云承載數(shù)據(jù)庫類關(guān)鍵應(yīng)用
![基于WDS證券行業(yè)建設(shè)金融<b class='flag-5'>信</b>創(chuàng)云承載<b class='flag-5'>數(shù)據(jù)庫</b>類關(guān)鍵應(yīng)用](https://file1.elecfans.com/web2/M00/05/02/wKgZombWb3eAWNMJAABsd334Cmg177.png)
軟件系統(tǒng)數(shù)據(jù)庫的分庫分表設(shè)計(jì)
![軟件系統(tǒng)<b class='flag-5'>數(shù)據(jù)庫</b>的分庫分表設(shè)計(jì)](https://file1.elecfans.com/web2/M00/03/C2/wKgZombGsDeAbXZcAADe-3smVHg464.png)
基于分布式存儲WDS的金融信創(chuàng)云承載數(shù)據(jù)庫類關(guān)鍵應(yīng)用
![基于分布式存儲WDS的金融<b class='flag-5'>信</b>創(chuàng)云承載<b class='flag-5'>數(shù)據(jù)庫</b>類關(guān)鍵應(yīng)用](https://file1.elecfans.com/web2/M00/03/D4/wKgaoma-rm-AeQeUAABn3gVGlrU598.png)
鴻蒙開發(fā)接口數(shù)據(jù)管理:【@ohos.data.rdb (關(guān)系型數(shù)據(jù)庫)】
阿里云與中興通訊達(dá)成開源數(shù)據(jù)庫合作
阿里云與中興通訊達(dá)成開源數(shù)據(jù)庫合作,助推國產(chǎn)數(shù)據(jù)庫發(fā)展
最新開源代碼證實(shí)!“鴻蒙原生版”微信正在積極開發(fā)中
數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—raid5陣列上層Sql Server數(shù)據(jù)庫數(shù)據(jù)恢復(fù)案例
![<b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—raid5陣列上層Sql Server<b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)案例](https://file.elecfans.com/web2/M00/A2/AD/pYYBAGRLbSSAHhFWAAI9vWNRQec919.png)
選擇 KV 數(shù)據(jù)庫最重要的是什么?
![選擇 KV <b class='flag-5'>數(shù)據(jù)庫</b>最重要的是什么?](https://file1.elecfans.com/web2/M00/C7/0C/wKgaomYFejKABcBUAAYcik-_bpw704.png)
阿維塔12發(fā)布3.2.0版本更新,新增多項(xiàng)功能并優(yōu)化細(xì)節(jié)
【數(shù)據(jù)庫數(shù)據(jù)恢復(fù)】Oracle數(shù)據(jù)庫ASM實(shí)例無法掛載的數(shù)據(jù)恢復(fù)案例
![【<b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)】Oracle<b class='flag-5'>數(shù)據(jù)庫</b>ASM實(shí)例無法掛載的<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)案例](https://file.elecfans.com/web2/M00/95/B0/pYYBAGQBiF6AY6tDAARqBdq6YRc559.png)
評論