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

本文探讨了Go语言database/sql包的设计哲学,它提供了一个与数据库无关的标准化API,使得应用层调用逻辑不依赖具体数据库。通过内部实现数据类型转换,sql包在不显著增加新接口的情况下增强了功能。此外,sql包将数据库连接隐藏在内部,实现了抽象访问,允许连接在网络、文件或其他中间件中进行管理,体现了Go语言的组合编程模式。
摘要由CSDN通过智能技术生成
database/sql设计哲学非常优雅,但是内部实现又非常复制,本节从顶层来去分析下database/sql的实现思想

对上层应用提供一个标准的API


对驱动层定义一个标准接口层
隔离具体的数据库
各个具体的数据库驱动实现该套接口即可被使用

应用层调用逻辑不依赖具体的数据库,其使用的是sql提供的标准API


三大功能
在内部实现一个连接池
内部通过锁实现并发访问的安全性

内部实现数据类型的自动转换


驱动层实现的接口和应用层的调用接口几乎一模一样
使应用程序调用者和驱动的实现者看到的接口视角的一致性

则也算一种编程哲学:增强功能但是调用接口不变,一般的理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值