【发布时间】:2011-04-08 08:04:37
【问题描述】:
我最近开始学习ORM,突然想到一个问题:
PHP 应用程序主要使用 MySql 和 Sqlite,几乎所有 PHP 服务器都安装了它,那么 PHP 中的 ORM 是否值得在数据库中使用?
性能怎么样?
【问题讨论】:
我最近开始学习ORM,突然想到一个问题:
PHP 应用程序主要使用 MySql 和 Sqlite,几乎所有 PHP 服务器都安装了它,那么 PHP 中的 ORM 是否值得在数据库中使用?
性能怎么样?
【问题讨论】:
数据库独立性不是使用 ORM 的主要原因。您想要的是数据库的一般抽象。这可能意味着:使用简单、开发速度更快、数据库独立……在任何情况下,通常都值得使用 ORM。如果您的应用程序耗尽了您所有的 cpu 能力,那么您可能会使用一些普通的 sql 来优化某些查询。不过,我想这是一种罕见的情况。
您可能想阅读以下内容: What are the advantages of using an ORM?
【讨论】:
您可能选择使用 ORM 的原因有几个,我能想到的几个:
使用 ORM 的大多数原因与开发速度/易用性有关。
在性能方面,我之前在 php 中使用过学说,与仅获取行相比,水合会产生巨大的开销。
【讨论】:
对于数据库独立性(和性能),请使用PDO。它是内置的,它的预处理语句非常适合防止 SQL 注入漏洞。
如果您被 O/RM 困住,它甚至带有一点 OO 风格...请参阅 PDOStatement::fetch(以及其他一些 fetchXxx 方法)。
【讨论】:
使用 ORM 减少了编写与打开数据库连接、连接池、准备语句、执行语句、将执行语句的结果映射到更有意义的结果以及最后关闭连接相关的样板代码的冗余。
像实例化一个对象,设置它的属性,然后在对象上调用一个保存操作这样的事情要干净得多。与手动编码与数据库交互所需的许多步骤相比,仅这种值就值得使用 ORM。
此外,使用干净的 ORM 可以在对应用程序进行最小更改的情况下交换数据库。
希望对您有所帮助。
【讨论】:
ORM 有点浪费时间。这很奇怪,因为它旨在节省您的时间:) 但这是真的。我有机会在几种语言中使用 ORM,这不值得。基本上有两种类型的项目:
具有许多连接表、视图和其他内容的复杂项目。可能还有更多的数据库。
在我看来,ORM 之所以存在,是因为框架在内部使用它。和性能?我不确定(因为我不再使用它)但我相信性能也可能是一个问题。您必须为从数据库查询中抽象出来的事实付出至少一些代价,对吧?我认为 ORM 在纸面上是个好主意,但效果不佳。
【讨论】:
如果您的服务器运行 PostgreSql 或 SQL Server - 另外两个非常常见的数据库引擎会怎样。
如果您想连接到旧数据库怎么办?
另外,您是否维护过任何直接连接到数据库的大型项目?当我打开一个满是mysql_query 电话的文件时,我会颤抖。
性能方面...取决于所讨论的 ORM。我在 .NET 环境中更熟悉它们,当然在那种环境中,性能存在很大差异,但这通常是与功能的权衡。
使用 ORM 将增加您的代码和数据库之间的正交性 - 这将使其更易于开发和维护。在数据库之间切换的能力是这样做的好处,但肯定不是唯一的原因。
【讨论】: