有点奇怪的说法。
您定义您的要求,然后选择满足这些要求的工具,而不是相反。
Datamapper 是一个 ORM,一个对象关系映射器。在这种情况下,遵循 Active Record 设计模式(不要将此与 CI 的 AR 混淆,后者不是活动记录,它是一个查询构建器)。它将数据实体(在本例中为 RDBMS 表中的记录)映射到对象,并且知道这些对象之间的关系。
这就是 ORM 所做的。是不是比使用 PHP 的原生函数直接访问数据库要慢?绝对地。添加的任何抽象级别都会增加处理时间。
ORM 的目标不是在数据操作方面最快,它的目标是从控制器逻辑中抽象出数据操作,这使得编写应用程序变得更容易和更快,并且绝对更快地维护这些应用程序。就像在商业环境中时间 == 金钱一样,这就是好处所在。如果您免费编码并在两位共享主机上运行您的代码,那么 ORM 可能不适合您。
此外,ORM 不是瑞士军刀。它是为特定目的而设计的,这是一种面向对象的数据收集方法,并用于操纵这些收集及其关系。
如果它不是工作的正确工具,请勿使用它。如果您需要根据一些奇怪的标准批量更新一百万条记录,请改为编写本机 SQL 查询。在自定义模型方法中执行此操作,以使您的数据操作代码从控制器中抽象出来。
至于您的具体意见:
- Datamapper 很慢:与什么相比?
- 它是不可配置的:参见http://datamapper.wanwizard.eu/pages/config.html。
- 它加载整个表:如果你 get() 整个表,是的。对我来说似乎并不奇怪。
- 如果您使用相同的数据创建两个对象,它会保存两次:是。如果您两次运行相同的 UPDATE 查询,则相同。
- 它不适合大型数据库:我有 Datamapper 支持的应用程序和 TB 大小的数据库,所以我看不出与大小的关系。
- 它并不快:请参阅答案 nr。1.
如果您是一名专业的网页设计师,您应该了解使用 MVC 架构设计和构建应用程序的正确方法,并使用正确的工具集完成工作,以便及时将应用程序交付给您的客户。
时间 == 金钱,如果您可以更快地交付,并且您可以更快地维护或改进,您将留住您的客户。ORM 可以帮助你。但不要将它用于它不应该做的事情。