Database/SQL与GORM设计与实践 | 青训营笔记

83 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天

1.理解database/sql

1.1 基本用法

  • import driver 实现 使用driver + DNS初始化 DB 连接
  • 执行一条SQL,通过rows取回返回的数据 处理完毕,需要释放链接
  • 数据、错误处理

1.2 设计原理

设计原理.png

设计原理2.png

2.GROM使用简介

2.1 背景

“设计简洁、功能强大、自由扩展的全功能ORM"
设计原则 : API精简、测试优先、最小惊讶、灵活扩展、无依赖可信赖
功能完善:

  • 关联:一对一、一对多、单表自关联、多态;Preload、Joins预加载、级联删除;关联模式;自定义关联表
  • 事务:事务代码块、嵌套事务、Save Point
  • 多数据库、读写分离、命名参数、Map、子查询、分组条件、代码共享、SQL表达式(查询、创建、更新)、自动选字段、查询优化器
  • 字段权限、软删除、批量数据处理、Prepared Stmt、自定义类型、命名策略、虚拟字段、自动track时间、SQL Builder、Logger
  • 代码生成、复合主键、Constraint、Prometheus、Auto Migration、真·跨数据库兼容...
  • 多模式灵活自由扩展

2.2 基本用法

基本用法.png

2.3 模型定义

约定由于配置 模型定义.png

2.3 关联操作

3.GORM设计原理

3.1 SQL是怎么生成的

  • 自定义 Clause Builder
  • 方便扩展 Clause
  • 自由选择 Clauses

3.2 插件是怎么工作的

Finished Method->决定Statement类型->执行Callback->生成SQL并执行

  • 多用户
  • 多数据库、读写分离
  • 加解密、混沌系统

3.3 ConnPool是什么

Connpol.png

4.GORM最佳实践

  • 数据序列化SQL表达式-SQL表达式更新创建
  • 数据序列化SQL表达式-数据序列化
  • 批量数据操作-批量创建/查询
  • 批量数据操作-批量更新
  • 批量数据操作-批量数据加速操作
  • 代码复用、分库分表、Sharding
  • 混沌工程/压测
  • Logger/Trace
  • Migrator-数据库迁移管理
  • Gen 代码生成/Raw SQL-Raw SQL
  • 安全问题