初始GORM(设计及应用)

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第2天,点击查看活动详情

首先对于ORM: Object-Relationl Mapping,即对象关系映射,这里的Relationl指的是关系型数据库 它的作用是在关系型数据库和对象之间作一个映射,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一样操作它就可以了 。

gorm框架是go的一个数据库连接及交互框架,一般用于连接关系型数据库。

GORM设计原理

  1. 操作过程

image-20220629161235201

SQL的生成

image-20220629165323900

image-20220629211127463

image-20220629211229221

image-20220629211322939

自定义Clause Builder

image-20220630163149179

方便扩展Clause

image-20220630163405647

自由选择Clauses

image-20220630163448126

插件是怎么工作的

  • Fiisher Method -> 决定 Statement类型 -> 执行Callbacks -> 生成 SQL并执行

image-20220630205031655

image-20220630211502564

多租户 自动通过租户ID实现操作的过滤。 多数据库、读写分离

image-20220630211722378

ConnPool

理想情况

image-20220630211850767

实际操作

image-20220630212521103

读写分离模式: image-20220630212554986

举例: image-20220630212814964

还可通过插件做出扩展

image-20220630212949329

Dialector

解决功能扩展问题

image-20220630213235857

GORM最佳实践

    1. 数据序列化与SQL表达式
    2. Logger / Trace
    3. 批量数据操作
    4. Migrator
    5. 代码复用、分库分表、Sharding
    6. Gen 代码生成/Raw sQL
    7. 混沌工程/压测
    8. 安全
  • 数据序列化与SQL表达式

    • SQL表达式查询
    • 数据序列化
  • 批量数据操作

    • 批量创建/查询
    • 批量更新
    • 批量数据加速操作
posted @ 2022-09-30 12:05  Luciferpluto  阅读(0)  评论(0)    收藏  举报  来源