您的位置:首页 > 数据库 > SQL

go database/sql 源码分析(二)driver包设计哲学

2016-08-04 20:07 996 查看
驱动接口设计特点
驱动层设计很简单,没有并发锁的控制
驱动层的设计是基于单个连接的,没有考虑连接池
驱动层事务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 }
~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: