4 月 9 日報道,由微信團隊研發(fā)并已開源多年的 WCDB,是一款使用 SQLite 為基礎(chǔ)的終端數(shù)據(jù)庫。自 2017 年 6 月啟動以來,至今已推出超過十個版本。
而后,由于微信集團內(nèi)部涉及眾多業(yè)務(wù),數(shù)據(jù)規(guī)模高達百萬甚至千萬級別的現(xiàn)狀,原有 WCDB 模塊表現(xiàn)開始顯得力不從心。
為了解決以上問題,自 2019 年起,微信團隊決定對接口的向后兼容性予以放棄,著力于開發(fā)更加完善且強大的新版本 WCDB。歷經(jīng)數(shù)次改良與迭代,WCDB 的接口層和核心邏輯層均獲得了顯著提高,同時也增加了諸多新穎而實用的功能。
如今,微信已經(jīng)發(fā)布此項重大技術(shù)升級的新版本 WCDB,以及其更為豐富的開發(fā)語言支持,如新增 C++以及對 Java 和 Kotlin 語言的 ORM 提供完整支援,覆蓋越發(fā)廣泛的終端平臺;更強大的 SQL 表達能力,通過對 Winq 的重新書寫和強化體現(xiàn)出來;全新制定的數(shù)據(jù)存儲機制,包含了為用戶提供更全面的備份和修復(fù)計劃;更加便捷靈活的數(shù)據(jù)擴展能力,包括數(shù)據(jù)遷移及數(shù)據(jù)壓縮;更加精細入微的性能優(yōu)化能力,例如 FTS5 效率提升及可中斷事務(wù)功能。
另外值得關(guān)注的是,早先的 WCDB 1.0 版本底部采用 Objective-C、Swift、Java 三種語言開發(fā),雖然三者版本的 SQLite 和數(shù)據(jù)修復(fù)邏輯相同,但各自不同的代碼皆為獨立開發(fā)完成。
然而,隨著 WCDB 版本更替與逐步發(fā)展,Objective-C 版本實際發(fā)揮更多功能,而 Swift 和 Java 版則處于相對落后的境地,兩者間的差距日益加大。
理論上,不同版本的 WCDB 應(yīng)具備相同實力,但是若將 Objective-C 版本的新邏輯在 Swift 和 Java 上重新實現(xiàn),工作繁重且易出錯,且需二次上線驗證,因此并不可行。
幸運的是,Objective-C 版本中 WCDB 的核心邏輯都通過 C++ 得以實現(xiàn),考慮到很多支持多語言開發(fā)的系統(tǒng)或庫都依賴 C++ 來構(gòu)建核心邏輯,其他語言則受限于接口層實現(xiàn),如業(yè)內(nèi)知名的客戶端NoSQL 數(shù)據(jù)庫組件 realmDB 即是類似例子。
遵循此思路來看待 WCDB,只需稍作調(diào)整,便能轉(zhuǎn)換 Core Logic 以 C++ 方式實現(xiàn),利用 Swift 和 Java 的橋接功能來接入 C++ core logic。同時為了滿足微信各個終端環(huán)境對數(shù)據(jù)庫開發(fā)的需求,WCDB 現(xiàn)已添加對 C++和 Kotlin 的支持,從而能夠全方位適配當(dāng)前終端開發(fā)的主流語言。
在此基礎(chǔ)上,新版本 WCDB 進一步強化了接口層支持,對多個重要的終端開發(fā)語言,包括 C++、Java、Kotlin、Swift 和 Objective-C 均予以完整支持,涵蓋了 Android、iOS、Windows 和 Linux 四大終端平臺,同時微信也對 Winq 做了重寫和增強,使得開發(fā)人員可以在各類語言環(huán)境下面使用原生語法編寫任意 SQL 語句。
新版 WCDB 功能層面的亮點則在于引入全新的數(shù)據(jù)備份和修復(fù)策略,提升了數(shù)據(jù)修復(fù)成功率,同時將數(shù)據(jù)備份的資源占用降低至幾乎忽略不計。
據(jù)悉,WCDB 全新的版本還增設(shè)數(shù)據(jù)遷移和數(shù)據(jù)壓縮兩項功能,協(xié)助使用者通過簡略的設(shè)置處理復(fù)雜業(yè)務(wù)環(huán)境中所出現(xiàn)的數(shù)據(jù)過度集中和膨脹問題。
最后,新版本 WCDB 還優(yōu)化改進了 FTS5 以及可中斷事務(wù)等特性,使得開發(fā)者在特定場合下能實現(xiàn)更高效的性能優(yōu)化。
-
SQL
+關(guān)注
關(guān)注
1文章
759瀏覽量
44069 -
C++
+關(guān)注
關(guān)注
22文章
2104瀏覽量
73487 -
微信
+關(guān)注
關(guān)注
6文章
509瀏覽量
26522
發(fā)布評論請先 登錄
相關(guān)推薦
評論