关闭。这个问题是基于意见的。它目前不接受答案。**想改进这个问题吗?**更新这个问题,这样就可以通过编辑这篇文章用事实和引文来回答。
两年前关门了。改进这个问题我在使用knex,这个项目的查询生成器,但是我在使用连接时遇到了问题,你必须手动匹配相关的数据或者进行单独的查询并绑定相关的数据,所以我在考虑使用orm,但是在某个地方我听说它们比较慢,并且在引擎盖下使用循环进行查询,我使用nodejs这样它就可以阻塞线程,那么,是否值得自己使用orm或better mate连接数据呢?
uelo1irk1#
您应该尝试使用orm和不使用orm使用纯sql。你会发现99%[1]的时间里,使用orm会更好。很少有项目是如此简单,使用orm是没有好处的。你听到的人是错误的,或者他们正在使用坏的orm,或者他们没有正确地使用他们选择的orm。优秀的orm对其数据方法的实现进行了很好的调优,使用图算法计算出用于获取请求数据的最佳查询数以及它们与尽可能少的查询之间的关系。它不会阻塞事件循环,除非您自己在查询生命周期钩子中完成了一些缓慢的阻塞代码。我曾多次遇到这样的误解:orms会限制您高效查询的能力,但并非所有orms都是这样。js有一些轻量级的orms,可以非常轻松地完成常见或我的任务,但它们不会强迫您将sql抽象出来。您仍然拥有sql的全部功能,甚至在需要时随时可以使用原始查询,但是处理关系要比使用普通sql容易得多。例如,您可以高效地读/写嵌套的json结构,并使用单行轻松地填充多个表并从数据库中读取嵌套数据,而无需找出优化所需查询数的图形算法来获取相关数据并从平面查询结果构造嵌套数据。最后,如果您不使用任何orm和一组自定义帮助程序,那么其他人将很难进入该代码库,因为它将充满自定义的纯sql+各种帮助程序。免责声明:我是有偏见的(并且知道我在说什么),因为我在过去几年一直维护knex query builder,并且我参与了我可以推荐的唯一轻量级node.js orm的开发:objective.js[1] 斯特森哈里森1987
1条答案
按热度按时间uelo1irk1#
您应该尝试使用orm和不使用orm使用纯sql。你会发现99%[1]的时间里,使用orm会更好。很少有项目是如此简单,使用orm是没有好处的。
你听到的人是错误的,或者他们正在使用坏的orm,或者他们没有正确地使用他们选择的orm。优秀的orm对其数据方法的实现进行了很好的调优,使用图算法计算出用于获取请求数据的最佳查询数以及它们与尽可能少的查询之间的关系。它不会阻塞事件循环,除非您自己在查询生命周期钩子中完成了一些缓慢的阻塞代码。
我曾多次遇到这样的误解:orms会限制您高效查询的能力,但并非所有orms都是这样。
js有一些轻量级的orms,可以非常轻松地完成常见或我的任务,但它们不会强迫您将sql抽象出来。您仍然拥有sql的全部功能,甚至在需要时随时可以使用原始查询,但是处理关系要比使用普通sql容易得多。
例如,您可以高效地读/写嵌套的json结构,并使用单行轻松地填充多个表并从数据库中读取嵌套数据,而无需找出优化所需查询数的图形算法来获取相关数据并从平面查询结果构造嵌套数据。
最后,如果您不使用任何orm和一组自定义帮助程序,那么其他人将很难进入该代码库,因为它将充满自定义的纯sql+各种帮助程序。
免责声明:我是有偏见的(并且知道我在说什么),因为我在过去几年一直维护knex query builder,并且我参与了我可以推荐的唯一轻量级node.js orm的开发:objective.js
[1] 斯特森哈里森1987