WCDB 是腾讯开源的一个高效、完整、易用的移动数据库框架,基于SQLCipher,支持 iOS、macOS 和 Android。
WINQ(WCDB语言集成查询): 通过WINQ,开发者无须为了拼接SQL的字符串而写一大坨胶水代码。
ORM(Object Relational Mapping): WCDB支持灵活、易用的ORM。开发者可以很便捷地定义表、索引、约束,并进行增删改查操作。
多线程高并发: WCDB支持多线程读与读、读与写并发执行,写与写串行执行。
加密:WCDB提供基于SQLCipher的数据库加密。
损坏修复: WCDB内建了Repair Kit用于修复损坏的数据库。
反注入: WCDB内建了对SQL注入的保护。
...
WCDB支持iOS 8、macOS 10.10以上。
WCDB需使用Xcode 8.0以上版本进行编译。
需使用Objective-C++。
基于SQLCipher的数据库加密
使用连接池实现并发读写
内建 Repair Kit 可用于修复损坏数据库
针对占用空间大小优化的数据库备份/恢复功能
日志输出重定向以及性能跟踪接口
内建用于全文搜索的 mmicu
FTS3/4 分词
WCDB 作为微信的终端数据库,从 2017.6 开源至今,共迭代了 5 个版本。我们一直关注开发者们的需求,并不断优化性能,新增如全文搜索等常用的功能。而这其中,呼声最高的莫过于 对 Swift 的支持。 WCDB ObjC 版本的实现中,由于引入了 C++ 代码,并不能直接 bridge 到 Swift。因此,我们从 9 月份开始就着手使用原生的 Swift,重写 WCDB。并于 10.10
本文旨在记录自己项目过程中的一些使用,想要了解更多的小伙伴移步到这里:WCDB wiki 1.集成 使用cocoapods集成到项目中 pod 'WCDB' 2.封装 这里封装了一个工具类,专门对数据库创建,表创建,查询,更新等操作的封装! 由于WCDB是基于Objective-C++,因此需要将引用WCDB的源文件后缀.m改为.mm 为避免大范围更改,我们将使用WCDB代码的类隔绝起来! WM
1.前言 刚刚在玩雀魂,感觉发牌姬一点也不爱我,遂来写一下今天学习WCDB(https://github.com/Tencent/wcdb)的记录。很久之前就开始了移动端数据库框架的调研,在这之前,IOS端是使用的FMDB框架,但是这个框架已经很久没有更新维护了,并且还是手动拼接SQL语句,容易出错和被SQL注入,所以一直想换框架。在这里就想提出了几个要求:性能不能太弱、移动端通用、体积不能太大。
importandroid.content.ContentValues;importandroid.content.Context;importcom.aax.exchange.entity.Favorites;importcom.tencent.wcdb.Cursor;importcom.tencent.wcdb.database.SQLiteDatabase;importjava.util.A
接入方法 1、在接入 Room 的基础上,gradle 里加上 WCDB 的 room 组件 dependencies { implementation 'com.tencent.wcdb:room:1.0.8' // 代替 room-runtime,同时也不需要再引用 wcdb-android annotationProcessor 'android.arch.persist
WCDB简介 WCDB 是腾讯开源的移动数据库框架,官网:https://github.com/Tencent/wcdb。 和fmdb相比,主要是它支持ORM,用c++编写的,效率更高并且还是跨平台的,既可以在iOS上使用也可以在Android上使用。 安装 使用Cocoapods 安装,pod ‘WCDB’,其他安装方式请参考https://github.com/Tencent/wcdb/wik
,并定义类遵循WCTTableCoding协议 - **WCDB_PROPERTY**用于在头文件中声明绑定到数据库表的字段。 - **WCDB_IMPLEMENTATION**,用于在类文件中定义绑定到数据库表的类。同时,该宏内实现了WCTTableCoding。因此,开发者无须添加更多的代码来完成WCTTableCoding的接口 - **WCDB_SYNTHESIZE**,用于在类文件中定义
前言 长久以来SQLite DB都有损坏问题,从Android、iOS等移动系统,到Windows、Linux 等桌面系统都会出现。由于微信所有消息都保存在DB,服务端不保留备份,一旦损坏将导致用户 消息被清空,显然不能接受。 我们即将开源的移动数据库组件 WCDB (WeChat Database),致力于解决 DB 损坏导致数据丢失的问题。 之前的一篇文章《微信 SQLite 数据库修复实践》
微信的移动端数据库组件 WCDB 已经正式开源了,有关注的小伙伴可能已经用上了。如果还没用上, 可以翻到文末关注我们的 GitHub 和公众号其他文章。 之前我们已经发过几篇 iOS 和修复的文章,Android 由于接口跟系统几乎一样,相信大家都比较熟悉, 不熟悉用法也可以到 Android Developer 官网看一下。但是,我们也有一些特色功能和优化大家可能不容易注意到, 现在就单独拿出来
高效、完整、易用是WCDB的基本原则。前几篇文章分享了WCDB的基本用法和修复工具,接下来将更深入地聊聊WCDB在易用性上的思考和实践。 对于各类客户端数据库,似乎都绕不开拼接字符串这一步。即便在Realm这样的NoSQL的数据库中,在进行查询时,也依赖于字符串的语法: //Realm code [Dog objectsWhere:@"age < 2"] 别看小小的字符串拼接,带来的麻烦可不小:
WCDB(WeChat DataBase)是微信官方的移动端数据库组件,致力于提供一个高效、易用、完整的移动端存储方案。 它包含三个模块: WCDB-iOS/Mac WCDB-Android 数据库损坏修复工具WCDBRepair 目前正在筹备开源中。 背景 对于iOS开发者来说,数据库的技术选型一直是个令人头痛的问题。由于Apple提供的CoreData框架差强人意,使得开发者们纷纷将目光投向开
本文向大家介绍移动数据库,包括了移动数据库的使用技巧和注意事项,需要的朋友参考一下 移动数据库与主数据库是分开的,可以轻松地传输到各个地方。即使它们没有连接到主数据库,它们仍然可以与数据库通信以共享和交换数据。 移动数据库包括以下组件- 存储所有数据并链接到移动数据库的主系统数据库。 移动数据库,允许用户即使在移动中也可以查看信息。它与主数据库共享信息。 使用移动数据库访问数据的设备。该设备可以是
问题内容: 我有一个熊猫数据框。看起来像这样: 但有100行和100列。 我想展平它,使其看起来像这样: 最有效的方法是什么? 谢谢, 插口 问题答案: 选项1 无法100%确定效率,但最简单的方法是使用 。 选项2 另一个简单的选项 - 要么,
问题内容: 我正在启动一个新应用程序,并考虑使用ORM,尤其是SQLAlchemy。 假设我的数据库中有一列“ foo”,我想增加它。在直通sqlite中,这很容易: 我弄清楚了SQLAlchemy SQL-builder等效项: 这稍微慢一点,但是没有太多。 这是我对SQLAlchemy ORM方法的最佳猜测: 这样做是正确的,但所需的时间是其他两种方法的不到50倍。我认为这是因为它必须先将所有
我正在尝试优化一个程序,该程序需要在数据流的每个位置(字节)为数据流中的恒定大小窗口计算哈希。在比可用RAM大得多的磁盘文件中查找重复时需要它。目前我为每个窗口计算单独的md5哈希,但它花费了很多时间(窗口大小为几千字节,因此每个数据字节被处理几千次)。我想知道是否有一种方法可以在恒定(与窗口大小无关)时间内计算每个后续哈希(例如移动平均中1个元素的加减)?哈希函数可以是任何东西,只要它不提供长哈