wcdb README

The project's README from github.com/Tencent/wcdb. As one markdown file: README.md.

WCDB

PRs Welcome Release Version LanguagePlatform

中文版本请参看这里

WCDB is an efficient, complete, easy-to-use mobile database framework used in the WeChat application. It's based on SQLite and SQLCipher, and supports five languages: C++, Java, Kotlin, Swift and Objective-C.

Feature

Easy-to-use

With ORM and WINQ, you can insert, update, query and delete objects from database in one line code:

// C++
database.insertObjects<Sample>(Sample(1, "text"), myTable);
database.updateRow("text2", WCDB_FIELD(Sample::content), myTable, WCDB_FIELD(Sample::id) == 1);
auto objects = database.getAllObjects<Sample>(myTable, WCDB_FIELD(Sample::id) > 0);
database.deleteObjects(myTable, WCDB_FIELD(Sample::id) == 1);
// Java
database.insertObject(new Sample(1, "text"), DBSample.allFields(), myTable);
database.updateValue("text2", DBSample.content, myTable, DBSample.id.eq(1));
List<Sample> objects = database.getAllObjects(DBSample.allFields(), myTable, DBSample.id.gt(0));
database.deleteObjects(myTable, DBSample.id.eq(1));
// Kotlin
database.insertObject<Sample>(Sample(1, "text"), DBSample.allFields(), myTable)
database.updateValue("text2", DBSample.content, myTable, DBSample.id.eq(1))
val objects = database.getAllObjects<Sample>(DBSample.allFields(), myTable, DBSample.id.gt(0))
database.deleteObjects(myTable, DBSample.id.eq(1))
// Swift
try database.insert(Sample(id:1, content:"text"), intoTable: myTable)
try database.update(table: myTable,
                    on: Sample.Properties.content,
                    with: "text2"
                    where:Sample.Properties.id == 1)
let objects: [Sample] = try database.getObjects(fromTable: myTable,
                                                where: Sample.Properties.id > 0)
try database.delete(fromTable: myTable where: Sample.Properties.id == 1)
// Objc
[database insertObject:sample intoTable:myTable];
[database updateTable:myTable
          setProperty:Sample.content
              toValue:@"text2"
                where:Sample.id == 1];
NSArray* objects = [database getObjectsOfClass:Sample.class
                                     fromTable:myTable
                                         where:Sample.id > 0];
[database deleteFromTable:myTable where:Sample.id == 1];

Efficient

Through the framework layer and sqlcipher source optimization, WCDB have more efficient performance.

Complete

WCDB summarizes common problems in practice to provide a more complete development experience for database development:

Compatibility

WCDB has interfaces in five languages: C++, Java, Kotlin, Swift, and Objc. Interfaces in different languages share the same underlying logic. The code structure of WCDB is shown in the figure below:

Under such architecture, WCDB in different languages can have the same interface structure and interface capabilities. In one project, you can write database code in different languages with one WCDB. Database logic in different languages will not conflict. Some global interfaces such as error monitoring can work on database logic in different languages at the same time.

Build and Install

Following wikies contain the detailed instructions about building and installing of WCDB.

Tutorials

Tutorials of different languages can be found below:

Contributing

If you are interested in contributing, check out the [CONTRIBUTING.md], also join our Tencent OpenSource Plan.

WCDB 正式加入TDS 腾讯端服务产品联盟,携手联盟其他成员,共同致力于构建开放共赢的大前端技术产品生态。

信息公示

wcdb (Tencent/wcdb)

Searching Database…

11.6K ·GitHub
Что это такое?WCDB — кроссплатформенный фреймворк для баз данных, созданный WeChat на основе SQLite и SQLCipher. Он предоставляет ORM, шифрование, восстановление после повреждений и другие возможности БД для мобильных и десктопных приложений.
Это отдельное приложение или библиотека, которую я встраиваю в свой проект?Это библиотека/SDK, которую подключают к своему приложению. Она предоставляет нативные интерфейсы на C++, Java, Kotlin, Swift и Objective-C, работающие на общей базовой логике.
Как добавить WCDB в мой проект?Следуйте страницам вики для каждого языка (C++, Java/Kotlin, Swift или Objective-C), чтобы узнать точные шаги сборки и установки для вашей платформы.
На чем WCDB построен внутри?Она основана на SQLite, использует SQLCipher для шифрования и Zstd для необязательного сжатия данных.
Есть какие-то подводные камни, прежде чем начать пользоваться?В самом README нет встроенных команд установки — чтобы собрать и настроить библиотеку, нужно идти по отдельным страницам вики/руководствам для каждого языка, и это немного добавляет возни с настройкой.
Для кого предназначен WCDB?Она рассчитана на разработчиков мобильных приложений (iOS, Android) и команды, работающие с десктопом и кроссплатформенными решениями, которым нужна промышленная встраиваемая база данных с шифрованием и восстановлением после сбоев, похожая на ту, что WeChat использует внутри.
На каких платформах это работает?WCDB рассчитан на Android, iOS, macOS, Windows и Linux.
Что такое WINQ?WINQ (язык интегрированных запросов WCDB) — это нативный API для запросов, который позволяет описывать операции, аналогичные SQL, прямо в коде на вашем языке, а не склеивать строки с сырым SQL.
Что будет, если файл моей базы данных повредится?В WCDB есть встроенный набор для восстановления, созданный специально для починки поврежденных баз данных, так что отдельный инструмент восстановления не понадобится.
Может ли WCDB справляться с большим количеством одновременных обращений?Да, он поддерживает многопоточный одновременный доступ (чтение-чтение и чтение-запись) через пул соединений, а также глубоко оптимизирован для мобильных сценариев с интенсивной записью, например для пакетной записи.
Можно ли переносить данные между базами?Да, в WCDB есть функция миграции данных, которая переносит данные из одной базы в другую по простой настройке и сама управляет промежуточным состоянием.
Creator
Tencent
Size
83.8 MB
Stars
11.6K
Age
9y
Commits · 90 Days