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 · 17 天前 · 2267 次点击

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

    20 条回复    2024-12-17 17:11:10 +08:00
    hellojukay
        1
    hellojukay  
       16 天前
    我一直都用 gorm ,同事也用 gorm
    wunonglin
        2
    wunonglin  
       16 天前
    bun 比 gorm 好用很多
    gvison
        3
    gvison  
       16 天前   ❤️ 1
    这个要问原作者的自己的考量了。

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

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

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

    很多框架还是用 gorm 的,比如: https://github.com/go-eagle/eagle
    qloog
        19
    qloog  
       10 天前
    @qloog 补充 内部 gorm 和 开源版本基本一致,不同的是内部版本只是更多适配了他们自己的基建
    shellcodecow
        20
    shellcodecow  
       4 天前
    jinzhu 去字节啦? 之前还在 longbridge 的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2701 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 07:51 · PVG 15:51 · LAX 23:51 · JFK 02:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.