IT之家 4 月 9 日消息,WCDB 是微信团队开源的一款基于 SQLite 的终端数据库。自 2017 年 6 月开源以来,已经推出了十多个版本。
然而,作为国内乃至全球范围内使用数据库最频繁的 App,微信内部涉及上百种不同业务的数据库,存储的消息条数可达百万乃至千万级别。这种庞大的数据量和日益丰富的应用场景,给 WCDB 带来了不断更新的需求和挑战,原有的代码框架逐渐难以应对。
因此,自 2019 年起,微信决定放弃接口的向后兼容性,全力打造一个更加强大的新版 WCDB。经过多次迭代,WCDB 的接口层和核心逻辑层已经得到了全面改进,同时也积累了许多新功能。
如今,微信宣布将该重大升级的新版本 WCDB 进行开源,主要变化及更新包括:
更丰富的开发语言支持:新增支持了 C++,完整支持了 Java 和 Kotlin 语言的 ORM,覆盖更多终端平台;
更强大的 SQL 表达能力:对 Winq 进行了重写、强化等;
更安全的数据存储能力:全新的数据备份方案、修复方案等;
更灵活的数据扩展能力:数据迁移、数据压缩等;
更细致的性能优化能力:FTS5 优化、可中断事务等。
据介绍,WCDB 1.0 版本支持 Objective-C、Swift、Java 三种开发语言,但是三种语言的 WCDB 除了共用同一个版本的 SQLite 和共用同一套备份修复逻辑,其他代码都是独立开发的。
随着 WCDB 不断迭代,WCDB 的很多新能力都是在 ObjC 版本上开发完成和上线验证,Swift 和 Java 版本基本处于停止迭代的状态,他们之间的差异也越来越大。在理想的状态下,不同语言版本的 WCDB 应该拥有同样的能力,但是如果把 ObjC 版本的新逻辑重新在 Swift 和 Java 上实现一遍,不仅工作量大,还容易出错,需要再次上线验证,不太现实。
幸运的是,ObjC 版本的 WCDB 的核心逻辑都是用 C++ 实现的,ObjC 只是用来实现接口层的逻辑。很多支持多种开发语言的库都是使用 C++ 语言来实现核心逻辑,其他语言只是用来实现接口层,比如很热门的客户端 NoSQL 数据库组件 realmDB 就是如此。WCDB 也可以按照这个思路来设计,这样 ObjC 版本的 WCDB 只需小幅调整,将核心逻辑完全改用 C++ 来实现,Swift 和 Java 通过桥接方法来接入 C++ 核心逻辑。
此外,为了充分支持微信各端不同场景的数据库开发需求,WCDB 还扩展支持了 C++ 和 Kotlin,这样就完整覆盖了现在终端开发的主流语言。
在接口层面,新版 WCDB 全面支持了 C++、Java、Kotlin、Swift 和 ObjC 这五种主要的终端开发语言,覆盖了 Android、iOS、Windows 和 Linux 这四大终端平台。同时,微信还对 Winq 进行了重写和强化,使开发者能够在各种语言中使用原生语法编写任意 SQL。
在功能层面,新版 WCDB 推出了全新的数据备份和修复方案,提升了数据修复率,同时将数据备份的性能消耗降至可忽略不计。
此外,微信还重点推出了数据迁移和数据压缩这两个新功能,让开发者通过简单的配置,就能处理复杂业务中的数据过度聚集和数据过度膨胀这两大难题。新版 WCDB 还推出了 FTS5 优化和可中断事务等新特性,使开发者在特定场景下可以实现更极致的性能优化。
新版 WCDB 已在 Github 开源,IT之家附项目地址:
https://github.com/Tencent/wcdb
广告声明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等形式),用于传递更多信息,节省甄选时间,结果仅供参考,IT之家所有文章均包含本声明。
本文由LinkNemo爬虫[Echo]采集自[https://www.ithome.com/0/760/723.htm]