CHN-08-0-数据库-概述

概述

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

Drogon是一个基于C++14/17的Http应用框架,使用Drogon可以方便的使用C++构建各种类型的Web应用服务端程序。 本版本库是github上Drogon工程的镜像库。Drogon是作者非常喜欢的美剧《权力的游戏》中的一条龙的名字(汉译作卓耿),和龙有关但并不是dragon的误写,为了不至于引起不必要的误会这里说明一下。 Drogon是一个跨平台框架,它支持Linux,也支持macOS、FreeBSD,和Windows。它的主要特点如下: 1、网络层使用基于epoll(macOS/FreeBSD下是kqueue)的非阻塞IO框架,提供高并发、高性能的网络IO。详细请见TFB Tests Results; 2、全异步编程模式; 3、支持Http1.0/1.1(server端和client端); 4、基于template实现了简单的反射机制,使主程序框架、控制器(controller)和视图(view)完全解耦; 5、支持cookies和内建的session; 6、支持后端渲染,把控制器生成的数据交给视图生成Html页面,视图由CSP模板文件描述,通过CSP标签把C++代码嵌入到Html页面,由drogon的命令行工具在编译阶段自动生成C++代码并编译; 7、支持运行期的视图页面动态加载(动态编译和加载so文件); 8、非常方便灵活的路径(path)到控制器处理函数(handler)的映射方案; 9、支持过滤器(filter)链,方便在控制器之前执行统一的逻辑(如登录验证、Http Method约束验证等); 10、支持https(基于OpenSSL实现); 11、支持websocket(server端和client端); 12、支持Json格式请求和应答, 对Restful API应用开发非常友好; 13、支持文件下载和上传,支持sendfile系统调用; 14、支持gzip/brotli压缩传输; 15、支持pipelining; 16、提供一个轻量的命令行工具drogon_ctl,帮助简化各种类的创建和视图代码的生成过程; 17、基于非阻塞IO实现的异步数据库读写,目前支持PostgreSQL和MySQL(MariaDB)数据库; 18、基于线程池实现sqlite3数据库的异步读写,提供与上文数据库相同的接口; 19、支持ARM架构; 20、方便的轻量级ORM实现,支持常规的对象到数据库的双向映射操作; 21、支持插件,可通过配置文件在加载期动态拆装; 22、支持内建插入点的AOP
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值