0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

微信WCDB最新开源版本发布,优化数据库接口及核心逻辑,新增多项功能

微云疏影 来源:综合整理 作者:综合整理 2024-04-09 15:59 次阅读

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 均予以完整支持,涵盖了 AndroidiOS、Windows 和 Linux 四大终端平台,同时微信也对 Winq 做了重写和增强,使得开发人员可以在各类语言环境下面使用原生语法编写任意 SQL 语句。

新版 WCDB 功能层面的亮点则在于引入全新的数据备份和修复策略,提升了数据修复成功率,同时将数据备份的资源占用降低至几乎忽略不计。

据悉,WCDB 全新的版本还增设数据迁移和数据压缩两项功能,协助使用者通过简略的设置处理复杂业务环境中所出现的数据过度集中和膨胀问题。

最后,新版本 WCDB 还优化改进了 FTS5 以及可中断事务等特性,使得开发者在特定场合下能实现更高效的性能优化。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • SQL
    SQL
    +关注

    关注

    1

    文章

    773

    浏览量

    44238
  • C++
    C++
    +关注

    关注

    22

    文章

    2114

    浏览量

    73831
  • 微信
    +关注

    关注

    6

    文章

    512

    浏览量

    26736
收藏 人收藏

    评论

    相关推荐

    Oracle数据库的多功能集成开发环境

    Oracle数据库的多功能集成开发环境 快捷菜单中的可视化对象编辑器 上下文感知的SQL代码补全、智能格式化和重构 逐步执行的自动调试功能功能
    的头像 发表于 01-14 13:52 109次阅读
    Oracle<b class='flag-5'>数据库</b>的多<b class='flag-5'>功能</b>集成开发环境

    MySQL数据库的安装

    MySQL是一个开源免费的关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司。 MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好
    的头像 发表于 01-14 11:25 122次阅读
    MySQL<b class='flag-5'>数据库</b>的安装

    数据库是哪种数据库类型?

    数据库是一种部署在虚拟计算环境中的数据库,它融合了云计算的弹性和可扩展性,为用户提供高效、灵活的数据库服务。云数据库主要分为两大类:关系型数据库
    的头像 发表于 01-07 10:22 131次阅读

    Linux4.0.0版发布功能再升级

    近日,备受瞩目的Linux4.0.0版本终于迎来了正式发布。此次版本更新不仅带来了多项实用
    的头像 发表于 11-06 10:59 382次阅读

    数据库数据恢复—通过拼接数据库碎片恢复SQLserver数据库

    一个运行在存储上的SQLServer数据库,有1000多个文件,大小几十TB。数据库每10天生成一个NDF文件,每个NDF几百GB大小。数据库包含两个LDF文件。 存储损坏,数据库
    的头像 发表于 10-31 13:21 317次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—通过拼接<b class='flag-5'>数据库</b>碎片恢复SQLserver<b class='flag-5'>数据库</b>

    数据库数据恢复—SQL Server数据库出现823错误的数据恢复案例

    SQL Server数据库故障: SQL Server附加数据库出现错误823,附加数据库失败。数据库没有备份,无法通过备份恢复数据库
    的头像 发表于 09-20 11:46 401次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—SQL Server<b class='flag-5'>数据库</b>出现823错误的<b class='flag-5'>数据</b>恢复案例

    基于WDS证券行业建设金融创云承载数据库类关键应用

    基于WDS证券行业建设金融创云承载数据库类关键应用
    的头像 发表于 09-03 10:07 281次阅读
    基于WDS证券行业建设金融<b class='flag-5'>信</b>创云承载<b class='flag-5'>数据库</b>类关键应用

    软件系统数据库的分库分表设计

    软件系统数据库的分库分表设计 系统读写分离、分库分表技术实现采用MyCat中间件,MyCat 是一款开源(遵循 Apache License 2.0 协议)的大数据库集群中间件,用于搭建数据库
    的头像 发表于 08-22 11:39 364次阅读
    软件系统<b class='flag-5'>数据库</b>的分库分表设计

    基于分布式存储WDS的金融创云承载数据库类关键应用

    基于分布式存储WDS的金融创云承载数据库类关键应用
    的头像 发表于 08-16 09:42 318次阅读
    基于分布式存储WDS的金融<b class='flag-5'>信</b>创云承载<b class='flag-5'>数据库</b>类关键应用

    阿里云与中兴通讯达成开源数据库合作

    近日,阿里云与中兴通讯宣布达成开源数据库领域的深度合作。中兴通讯正式加入PolarDB开源社区,并荣任首届理事会成员单位,这一举措标志着两大科技巨头在数据库领域的合作迈向新的高度。
    的头像 发表于 05-17 10:47 611次阅读

    阿里云与中兴通讯达成开源数据库合作,助推国产数据库发展

    据悉,阿里云与中兴通讯于5月16日公布了开源数据库合作事宜。中兴通讯正式宣布加入PolarDB开源社区,并担任首届理事会成员单位。
    的头像 发表于 05-16 16:34 510次阅读

    新开源代码证实!“鸿蒙原生版”正在积极开发中

    话不多说,直接看图: 这是 MMKV 最新版本 v1.3.5 的发布说明。 MMKV 是团队开源的键值对(Key-Value)存储系统
    发表于 05-08 17:08

    数据库数据恢复—raid5阵列上层Sql Server数据库数据恢复案例

    数据库数据恢复环境: 5块硬盘组建一组RAID5阵列,划分LUN供windows系统服务器使用。windows系统服务器内运行了Sql Server数据库,存储空间在操作系统层面划分了三个
    的头像 发表于 05-08 11:43 570次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—raid5阵列上层Sql Server<b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复案例

    选择 KV 数据库最重要的是什么?

    经常有客户提到 KV 数据库,但却偏偏“不要 Redis”。比如有个做安全威胁分析平台的客户,他们明确表示自己对可靠性要求非常高,需要的不是开源 Redis 这种内存缓存,而是 KV 数据库
    的头像 发表于 03-28 22:11 738次阅读
    选择 KV <b class='flag-5'>数据库</b>最重要的是什么?

    阿维塔12发布3.2.0版本更新,新增多项功能优化细节

    特殊车道智能通行功能:城市和乡村的智驾领航辅助(NCA)和车道巡航辅助(LCC)均新增功能,支持通过潮汐车道、公交车道控制杆进入NCA模式,并实现自动驶出的操作。
    的头像 发表于 03-28 14:27 698次阅读