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 以及可中断事务等特性,使得开发者在特定场合下能实现更高效的性能优化。
全部0条评论
快来发表一下你的评论吧 !