数据库 行锁在日常开发中用的真的不多吗?Prisma 居然没有提供行锁的 API

willx · 2024年05月31日 · 最后由 ironboxer 回复于 2024年06月14日 · 635 次阅读

新项目试了一下 Node 目前被推荐最多的 ORM prisma https://github.com/prisma/prisma

然后发现这个框架居然没有提供行锁的任何 API,只能写 raw sql 来实现。

但在个人认知里,其实行锁用的还比较频繁,特别是现在互联网公司非常喜欢在 mysql 里面存序列化后的 JSON,很多需要增量更新的情况,比如读取全量的 json 字符串,然后把新的字段更新进去,再保存。没有行锁的话,这个操作很容易就互相覆盖了。(虽然这是一种不太好的实践,但说实话在几家大厂都见过大量这种写法)

去年的 ISSUE,到现在也没啥声音 https://github.com/prisma/prisma/issues/17136

Raw SQL 遇到过错误 https://github.com/prisma/prisma/issues/21570

我以为这种 RawSQL 的 API 是软件的底层,应该先设计。结果一年多都没解决。

吹自己是次世代,我现在对 JavaScript 的东西保持怀疑。

次世代框架你也不能说它错,反正不是“现代”能用的框架。

Mark24 回复

还是老一点的东西好用,这个 prisma 一堆人推荐,结果 issue 长期两三千个,碰到问题就 gg。node 这边老牌的 sequelize 和 TypeORM 都挺好的

willx 回复

是的。时髦有风险。

Node 能做的,Sinatra + Sequel(ORM)其实都行。我经常用这个渲染页面。

Ruby 下的 Sequel(ORM)0 BUG,实在是强。

Mark24 回复

JS 圈子营销严重,新出来的工具全都号称次世代产品、颠覆性设计之类的,然后网站都做的非常 fancy。擅长文档营销,写一些看起来很厉害实则全是水文的「Ultimate Guide」和「Comprehensive Guide」。

ttys000 回复

js 这边其实很多东西很早很早就有了,而且也经过了超大型项目的验证,比如什么 express,koa,eggjs 之类的。

但一堆人总觉得这些老东西有问题,我们要重新设计“现代化”的 XXXX 库,三年两载就出来一堆新库,与之相伴的还有造一堆新概念。最后大家兴冲冲地跑去用,结果发现一堆问题 😑 还真不如用以前的东西,至少真的能完成任务。

willx 回复

确实是。总是出来一堆「现代化的 xxxx」,制造一些新概念,往往还是新瓶装旧酒,质量还不如老的好。

magicdawn 回复

https://github.com/typeorm/typeorm/issues/4686#issuecomment-528332702

这个回答提醒了我们,还是要使用有固定团队维护的技术产品。比如 Rails。

短暂时间用过 prisma, 但是确实没感受到"次世代"先进的地方在哪

magicdawn 回复

还行吧,基础功能都有,不要依赖一些骚操作一般没啥问题,作者好几年前确实说自己没精力维护了

只能说由于 node 在后端的使用频率和场景不够丰富导致其 orm 工具相对比较简单,后端这个基本都是历史决定其地位老软件轻易不会修改

某些前端童鞋非要让 js 做后端的事情... 能把前端做好就谢天谢地了

需要 登录 后方可回复, 如果你还没有账号请 注册新账号