Table of Contents
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
概述
Drogon内置了数据库读写引擎,对数据库连接的操作基于non-blocking I/O技术实现,因此,从底层到上层接口,都是高效率的非阻塞异步方式,保证了Drogon对高并发性能的追求。目前,Drogon支持PostgreSQL和MySQL数据库,如果要使用数据库,开发系统必须先安装相应数据库的开发环境,Drogon会自动探测这些库的头文件和库文件,编译相应的部分。数据库开发环境的准备,参见安装数据库环境。
Drogon为了支持轻量级应用,也支持sqlite3数据库,通过线程池实现异步接口,与前述数据库的接口是统一的。
客户端
Drogon的数据库基本操作对象是DbClient
(这是一个抽象类,用户可以持有的是DbClient
类型的智能指针,具体类型取决于构造它的接口),区别于一般的数据库接口,这个对象并不代表单一的数据库连接,它内部可以包含一个或多个数据库连接,你可以把它看作一个连接池对象。
DbClient
同时提供了同步和异步接口,异步接口也同时支持阻塞和非阻塞的模式,当然,出于和Drogon异步框架配合的需要,建议大家多使用异步接口的非阻塞模式,这也是对提高并发性最有效的接口。
通常,一个异步接口调用时,DbClient会在它管理的空闲连接中随机选取一个,执行相关的查询操作,待有结果返回时,DbClient
会处理数据,通过回调函数对象返回给调用方;如果调用时没有空闲连接,执行内容会被缓存,一旦有连接执行完自己的sql请求,就会从缓存中依次取出待执行的命令去执行。
DbClient
的详细内容,见DbClient。
事务
由DbClient
可以产生事务对象,用以支持事务操作,事务对象除了多出一个rollback()
接口,其余基本和DbClient
一致,事务对象的类是Transaction
,关于事务的详细内容,参见事务。
ORM
Drogon也提供了对ORM的支持,用户可以通过drogon_ctl读取数据库中的表,并生成对应的model对象类源码,然后,通过Mapper<MODEL>
类模板完成这些对象的数据库操作,为标准的数据操作提供了简单便捷的接口,使用户可以不用自己写sql语句就可以完成对表的增删改查。关于ORM,请参阅ORM。
08.1 DbClient
Document
Tutorial
- Overview
- Install drogon
- Quick Start
- Controller
- Middleware and Filter
- View
- Session
- Database
- References
- Plugins
- Configuration File
- drogon_ctl Command
- AOP
- Benchmarks
- Coz profiling
- Brotli info
- Coroutines
- Redis
- Testing Framework
- FAQ