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

142 天前
 higanbana

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

3454 次点击
所在节点    Go 编程语言
21 条回复
hellojukay
142 天前
我一直都用 gorm ,同事也用 gorm
wunonglin
142 天前
bun 比 gorm 好用很多
gvison
142 天前
这个要问原作者的自己的考量了。

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

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

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

很多框架还是用 gorm 的,比如: https://github.com/go-eagle/eagle
qloog
136 天前
@qloog 补充 内部 gorm 和 开源版本基本一致,不同的是内部版本只是更多适配了他们自己的基建
shellcodecow
130 天前
jinzhu 去字节啦? 之前还在 longbridge 的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://yangjunhui.monster/t/1095255

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX