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

2024-12-05 15:39:03 +08:00
 higanbana

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

4507 次点击
所在节点    Go 编程语言
21 条回复
hellojukay
2024-12-05 15:58:11 +08:00
我一直都用 gorm ,同事也用 gorm
shakaraka
2024-12-05 16:07:11 +08:00
bun 比 gorm 好用很多
gvison
2024-12-05 16:37:09 +08:00
这个要问原作者的自己的考量了。

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

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

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

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

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

https://ex.noerr.eu.org/t/1095255

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

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

© 2021 V2EX