WCDB

wcdb
TencentUpdated Sep 4, 2024
微信的 sqlLite,有更多 ORM 语言的支持
notion image
WCDB 是一个易用、高效、完整的移动数据库框架,它基于 SQLite 和 SQLCipher 开发,在微信中应用广泛,且支持在 C++、Java、Kotlin、Swift、Objc 五种语言环境中使用。
易用性
One line of code 是 WCDB 设计的基本原则之一。通过更现代的数据库开发模式,减少开发者所需使用的代码量,绝大部分增删查改都只需一行代码即可完成:
  1. 模型绑定。基于C++、Java、Kotlin、Swift、Objc 的语法特性,使用声明式语句建立原生语言类型与数据库表之间的映射关系,从而使得开发者可以通过类对象直接操作数据库。
  1. 范型与类型推导。WCDB 的接口与 C++、Java、Kotlin、Swift、Objc 的语法相结合,使复杂的数据库操作可以以简明的方式表达出来。因此,代码不仅易于编写,而且更易于阅读和维护。
  1. 语言集成查询。深度结合 C++、Java、Kotlin、Swift、Objc 和 SQL 的语法,使得纯字符串的 SQL 可以以原生代码的形式表达出来。结合代码提示及纠错,极大地提高了开发效率。
高效性
WCDB 基于 SQLite,并深入其源码进行了性能优化,以适配移动终端的场景。同时,对于常用且性能消耗较大的场景,如批量插入等,也做了针对性的优化。 在多线程方面,WCDB 不仅可以安全地在任意线程进行数据库操作,且其内部会智能地根据操作类型调配资源,使其能够并发执行,进一步提升效率。
完整性
WCDB 总结实践中常见的问题,为数据库开发提供更完整、全面的使用体验:
  1. 加密。基于 SQLCipher 的加密机制,为数据安全提供保障。
  1. 全文搜索。WCDB 提供简单易用的全文搜索接口,并包含适配多种语言的分词器,使得数据搜索更精准。
  1. 反注入。内建在语言集成查询中的反注入机制,可以避免第三方从输入框注入 SQL,进行预期之外的恶意操作。
  1. 字段升级。数据库模型与类定义绑定,使得字段的增加、删除、修改都与类变量的定义保持一致,不需要开发者额外地管理字段的版本。
  1. 损坏修复。修复工具可以在系统错误、磁盘故障等情况下,尽最大限度地将损坏的数据找回并导出。
  1. 数据迁移。WCDB 支持通过简单的配置将数据表迁移到其他数据库,而且让开发者可以以迁移已经完成为假定前提 进行开发,无需关心迁移的中间状态和进度。
  1. 数据压缩。WCDB 支持通过简单的配置来使用 Zstd 压缩数据表中的部分字段的内容。配置后,开发者不会感知到数据加解压的细节,而且 WCDB 会自动压缩存量数据。
兼容性
WCDB 支持 C++、Java、Kotlin、Swift、Objc 五种语言进行开发,但是这五种语言在底层是共享同一套逻辑的,整体架构如下图所示:
notion image
在这个架构下,不同语言版本的WCDB可以拥有同样的接口结构和接口能力,开发者在一个项目中只要用一个WCDB就可以满足不同语言的开发需求,不同语言的数据库逻辑不会产生冲突。一些如错误监听之类的全局接口,可以做到一处配置,同时作用于不同语言的数据库,可以节省代码,统一数据库管理逻辑。
Loading...
目录
文章列表
王小扬博客
产品
Think
Git
软件开发
计算机网络
CI
DB
设计
缓存
Docker
Node
操作系统
Java
大前端
Nestjs
其他
PHP