我正在使用 knex,项目的查询构建器,但是在使用连接时遇到了问题,您必须手动配对相关数据或执行单独的查询并绑定相关数据,所以我正在考虑使用 ORM 但我在某处听说它们速度较慢,并且在后台使用循环进行查询,我使用 nodejs 以便它可以阻塞线程,那么是否值得您自己使用 ORM 或更好的 mate join 数据?
您应该尝试使用 ORM 和不使用 ORM 使用普通 SQL。您会发现,在 99% [1] 的时间里,使用 ORM 会更好。很少有项目如此简单以至于使用 ORM 没有好处。
您听到的人是错误的,或者他们使用了糟糕的 ORM,或者他们没有正确使用他们选择的 ORM。好的 ORM 对其数据方法的实现进行了很好的调整,使用图形算法来找出最佳查询数量,以尽可能少的查询来获取请求的数据及其关系。它不会阻塞事件循环,除非您自己在查询生命周期钩子中完成了一些缓慢的阻塞代码。
我多次遇到过这种对 ORM 的误解,认为它们会限制您进行高效查询的能力,但并非所有 ORM 都如此。
Node.js 很少有轻量级的 ORM,它允许非常容易地完成常见的 ORMy 任务,但它们不会强迫您将 SQL 抽象出来。您仍然可以随时掌握 SQL 的全部功能,甚至可以随时使用原始查询,但与使用普通 SQL 相比,您可以更轻松地处理关系。
例如,您可以高效地读取/写入嵌套的 JSON 结构,并使用单行轻松填充多个表并从数据库读取嵌套数据,而无需找出优化所需查询数量以获取相关数据和构建嵌套数据的图形算法从平面查询结果。
最后,如果您不使用任何 ORM 和一组自定义帮助程序,其他人将更难进入该代码库,因为它将充满自定义的纯 SQL + 各种帮助程序。
免责声明:我有偏见(并且知道我在说什么),因为过去几年我一直在维护 knex 查询构建器,并且我参与了我可以推荐的唯一轻量级 Node.js ORM 的开发:反对.js
[1] 斯泰森-哈里森 1987
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句