代码之家  ›  专栏  ›  技术社区  ›  Camsoft

使用CodeIgniters活动记录库来操作MySQL数据库是一个好主意还是应该只使用SQL?

  •  15
  • Camsoft  · 技术社区  · 16 年前

    我开始接触CodeIgniter,发现它支持 活动记录 图案。

    我喜欢这样一个事实:它为您生成SQL代码,这样您就可以检索、更新数据并将数据插入数据库,而无需将应用程序绑定到特定的数据库引擎。

    我的问题

    你对这个模式有什么看法,特别是关于CodeIgniters的实现?

    将数据库包装到另一层是否存在速度问题?

    利大于弊吗?

    2 回复  |  直到 16 年前
        1
  •  36
  •   Tom Schlick    16 年前

    好的,首先99%的查询都是简单的select/insert/update/delete。因为这个活动记录很好。它提供了易于更改的简单语法。对于更复杂的查询,应该只使用query方法。这就是为什么。

    第二,它提供了逃逸和;这些查询的安全性。面对现实,您的应用程序可能会有成百上千个查询发生的地方。你一定会搞砸的,忘了好好逃脱其中的一些。活动记录不会忘记。

    第三,以我的经验来看,绩效并没有受到显著影响。当然是这样,但每个查询的值可能在.00001左右。我认为这是完全可以接受的增加安全性和健全的检查,它为你做。

    最后,我认为很明显,我认为优点远远大于缺点。拥有安全的查询,即使是最初级的开发人员也能理解并且不会搞砸,这是一件很棒的事情。

        2
  •  2
  •   Community Mohan Dere    9 年前

    你的意见是什么 (原文如此)

    http://kore-nordmann.de/blog/why_active_record_sucks.html

    编辑 在@kemp的评论之后,我查看了CI用户指南,看看他们是如何实现AR的:

    正如你在书中看到的 PoEAA AR是 在数据库表或视图中包装行、封装数据库访问并在该数据上添加域逻辑的对象。 但这不是CI所做的。它只提供了一个API来构建查询。我知道有一个扩展AR的模型类,可以用来构建业务对象,但这更像是一个 Row Data Gateway 那么。退房 PHPActiveRecord

    将数据库包装到另一层是否存在速度问题?

    https://stackoverflow.com/search?q=orm+slow

    编辑 对于CI的简单查询构建API,我假设性能影响可以忽略。组装查询在逻辑上比仅仅使用将原始SQL字符串传递给db适配器要花费更多的时间,但这应该只是微秒。据我在用户指南中看到的,您还可以缓存查询字符串。但当有疑问时,基准。

    取决于您的查询。我见过相当混乱的SQL查询。当通过OO接口表达时,它们不会变得更漂亮。根据API的不同,您可能会发现无法通过API表达的查询。但话说回来,这取决于您的查询。