go database/sql 源码分析(二)driver包设计哲学
2016-08-04 20:07
996 查看
驱动接口设计特点
驱动层设计很简单,没有并发锁的控制
驱动层的设计是基于单个连接的,没有考虑连接池
驱动层事务Tx和Stmt是独立分离的,Tx只有两个简单的方法就是Commit() 和Rollback()
驱动的具体实现者只需要在单个连接上实现驱动层的API接口即可
driver包的数据结构
![](https://img-blog.csdn.net/20160804200705884?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
调用关系
![](https://img-blog.csdn.net/20160804200733618?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
驱动注册
具体的数据库驱动只需要按照接口层的定义,实现api,然后在sql包的全局驱动切片sql.drivers中注册即可。
27 var (
28 driversMu sync.RWMutex
29 drivers = make(map[string]driver.Driver)
30 )
38 func Register(name string, driver driver.Driver) {
mysql 驱动 github.com/go-sql-driver/mysql注册过程:
src/github.com/go-sql-driver/mysql/driver.go
165 func init() {
166 sql.Register("mysql", &MySQLDriver{})
167 }
~
驱动层设计很简单,没有并发锁的控制
驱动层的设计是基于单个连接的,没有考虑连接池
驱动层事务Tx和Stmt是独立分离的,Tx只有两个简单的方法就是Commit() 和Rollback()
驱动的具体实现者只需要在单个连接上实现驱动层的API接口即可
driver包的数据结构
调用关系
驱动注册
具体的数据库驱动只需要按照接口层的定义,实现api,然后在sql包的全局驱动切片sql.drivers中注册即可。
27 var (
28 driversMu sync.RWMutex
29 drivers = make(map[string]driver.Driver)
30 )
38 func Register(name string, driver driver.Driver) {
mysql 驱动 github.com/go-sql-driver/mysql注册过程:
src/github.com/go-sql-driver/mysql/driver.go
165 func init() {
166 sql.Register("mysql", &MySQLDriver{})
167 }
~
相关文章推荐
- go database/sql 源码分析(一)sql包设计哲学
- go database/sql 源码分析 -题外篇
- go database/sql 源码分析(四)sql.Stmt数据结构
- go database/sql 源码分析(三)sql.DB数据结构
- JDBC-Driver、PostgreSQL的SQL语句参数上限错误分析及解决办法(源码)
- Mybatis架构设计及源码分析-SqlSessionFactory
- go database/sql sql-driver/mysql 操作
- golang github.com/go-sql-driver/mysql 遇到的数据库,设置库设计不合理的解决方法
- PostgreSQL源码分析(2)– 常用数据类型/SQL语句的解释和执行
- WiFi设计原理(源码分析)
- Android wifi设计原理(源码分析)
- 以Object 为中心和以Database为中心进行应用程序设计导致的后期修改的分析
- ANDROID移植: WIFI设计原理(源码分析
- P6Spy源码分析,理解跟踪SQL的工作原理
- Error while preforming database login with the sql driver Unable to create...
- ANDROID移植: WIFI设计原理(源码分析
- wifi设计原理(源码分析)
- [原创] jQuery源码分析-04 选择器-Sizzle-设计思路
- Android移植: wifi设计原理(源码分析)
- P6Spy源码分析,理解跟踪SQL的工作原理