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