为什么国内的微服务框架都不用 gorm 作为微服务框架的 orm? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
higanbana
V2EX    Go 编程语言

为什么国内的微服务框架都不用 gorm 作为微服务框架 orm?

  •  
  •   higanbana 310 天前 4140 次点击
    这是一个创建于 310 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,同问,观察了一下,go-zero 用的是自己封装的 sqlx ,还可以理解是最简化,但是完全没好到哪儿去,复杂 sql 很麻烦,kratos 直接用了国外的 Ent ,其他的几个没接触过,想知道这样的考量是什么?

    21 条回复    2024-12-31 21:28:36 +08:00
    hellojukay
        1
    hellojukay  
       310 天前
    我一直都用 gorm ,同事也用 gorm
    shakaraka
        2
    shakaraka  
    PRO
       310 天前
    bun 比 gorm 好用很多
    gvison
        3
    gvison  
       310 天前   1
    这个要问原作者的自己的考量了。

    gorm 提供了大量的抽象层和自动化功能,内部使用了不少的反射操作,在处理复杂 SQL 或高并发场景时,性能不够好,在简单查询和标准 CRUD 操作上,grom 通常能够提供足够的性能了。

    这个微服务框架默认使用的是 gorm ,也可以使用自己熟悉的 orm 替代 gorm 。
    https://github.com/zhufuyi/sponge
    securityCoding
        4
    securityCoding  
       310 天前
    可读性吧 ,国内互联网大多是单表查询用不到那些高级玩意
    leexsh31
        5
    leexsh31  
       310 天前   1
    字节都用 gorm 吧 gorm 作者也在字节
    lasuar
        6
    lasuar  
       309 天前
    最近遇到的 gorm 硬伤:假设一个表有很多字段(数十个),在查询时,对于 A 字段,我要使用函数,例如地理数据:`astext(geometry) AS geometry`,其他字段不变,使用 gorm ,似乎没有 API 实现这个需求,只能手动 select(all_fields...)。
    liaohongxing
        7
    liaohongxing  
       309 天前
    框架作者喜好
    cdx
        8
    cdx  
       309 天前   2
    可能是把组员的 sql 水平尽量拉到同一水平线上。ent 是完全的 go 代码,增删改查基本不用去写 sql ,直接使用 ent 生成的 go 代码即可
    Baloneo
        9
    Baloneo  
       309 天前
    不好用
    laikicka
        10
    laikicka  
       309 天前
    golang 上的 orm 都不怎么好用..
    sngxx
        11
    sngxx  
       309 天前
    gorm xorm 都有用
    hankli
        12
    hankli  
       309 天前
    难道没有人用 https://github.com/go-jet/jet 吗? 非常好用!
    zoharSoul
        13
    zoharSoul  
       309 天前
    @gvison #3 这个好像没有整合依赖注入相关的啊
    yuzuhi
        14
    yuzuhi  
       309 天前
    没有人提 ent 吗?最近正打算试试看,用gorm 总有一种就是在写原生 sql 的感觉
    gvison
        15
    gvison  
       309 天前
    @zoharSoul 不需要依赖注入也可以在 解耦、测试性、灵活性、可扩展性 满足要求的
    bv
        16
    bv  
       309 天前
    @yuzuhi 咋不试试 gorm/gen https://gorm.io/gen/query.html
    ninjashixuan
        17
    ninjashixuan  
       309 天前
    一般拆成微服务,大多服务不会写复杂的 sql ,毕竟微服务数据库都是拆分很细了,复杂的联表查询自然少,自然要个简单的 orm , 个人猜测。
    qloog
        18
    qloog  
       303 天前
    目前用的最多的还是 gorm, 也了解过 sqlc (基于 sql 生成代码)

    如楼上上上...所说, gorm 作者在字节,经过很多线上场景的考验,所以性能问题不用考虑(字节的体量你懂的),是经过大量优化的,同时 gorm 提供了 基于数据库表生成代码,还支持通过编写复杂 sql 生成代码,非常方便,也可以避免常见的 SQL 注入

    很多框架还是用 gorm 的,比如: https://github.com/go-eagle/eagle
    qloog
        19
    qloog  
       303 天前
    @qloog 补充 内部 gorm 和 开源版本基本一致,不同的是内部版本只是更多适配了他们自己的基建
    shellcodecow
        20
    shellcodecow  
       297 天前
    jinzhu 去字节啦? 之前还在 longbridge 的
    fxjson
        21
    fxjson  
       283 天前
    sqlx 这个库原生写,也不错,我自己用 gin 开发了一个开箱即用框架 https://github.com/fanqingxuan/go-gin ,使用的 gorm
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5481 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 08:44 PVG 16:44 LAX 01:44 JFK 04:44
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86