电脑安全

您当前的位置:主页 > 电脑安全 >

为什么FleaPHP使用Table Data Gateway代替Active Record提供

来源:[db:来源]标题:   对象    编辑:电脑技术全能网 时间:2019-09-22 12:29

原标题:为什么FleaPHP使用Table Data Gateway代替Active Record提供
   很多开辟者很怀疑为甚么 FleaPHP 以高效开辟为目的,却没有供给 Active Record 形式。本文实验具体论述这个成绩。Active Record 是甚么?  Active Record 形式中文名为“运动记载”,在《企业利用架构形式》(PoEAA)一书中界说以下: 运动记载(Active Record):一个工具,它包装数据库表或视图中的某一行,封装数据库拜访,并在这些数据上增添了范畴逻辑。   举个例子来讲,一个图书数据表,每一笔记录就是一本图书的信息。那末采纳 Active Record 时,每一本图书就是一个 Active Record 工具实例。Active Record 因 Ruby On Rails 而风行  Active Record 之以是当初这么炙手可热,乃至很多人将 Active Record 和 ORM 划等号,完整是 Ruby On Rails 的起因。在 Ruby On Rails 中,Active Record 除了最基础的将数据记载和一个工具相互映照外,还供给了数据(而不是工具)间关系关联的处置。比方:  一本图书有一个或许多个作者,以是每一个图书工具都和多个作者工具关系。反过去一个作者能够写多本书,以是一个作者工具也和多个图书工具关系。  在 RoR 中,咱们猎取一个图书工具时,主动就取得了该图书工具所对应的作者工具(实质上是图书数据对应的作者数据)。更进一步,经过图书工具关系的作者工具,咱们 能够猎取该作者所写的全部图书的工具实例。而这些任务,在 RoR 中只要要几行代码罢了,从前咱们须要写上一大段代码才干完成一样的后果。  RoR 中,对 Active Record 形式的完成完整应用了 Ruby 言语的机动性,冗长几行代码便可以界说一个关系。而且经过庞杂的 ActiveRecord:Base 工具,供给了 CRUD(创立、读取、更新、删除)操纵的默许处置。以是应用 RoR 时,绝大局部罕见的数据库操纵只要要很大批的代码便可以实现,大大进步了开辟效力。  但 Active Record 形式也不是完善的,Active Record 存在很多毛病。 * Active Record 形式须要数据表构造和工具属性逐一对应(最少是大局部对应),不然将难以应用 Active Record 形式; * Active Record 形式并不可能真正合适完整面向工具的利用顺序。由于 Active Record 形式实质上就请求一个工具必需和一个数据表对应。但在完整面向工具的利用顺序中,数据和操纵数据的方式很能够散布在各个差别的工具中,这些工具却并没有和 某一个数据表完整对应,并且 Active Record 无奈很好的处置工具的继续、聚合等面向工具罕见的工具间关联; * 跟着逐步向 Active Record 增加营业逻辑,Active Record 工具中会混入越来越多的 SQL 语句,这在更庞杂的名目中明显是一个倒霉要素。  假如在 Active Record 形式中增加了对数据关联(留神,不是工具关联)的处置,那末还要留神机能成绩:  如果一个 Active Record 工具有多个关系。那末我掏出一个工具时,很能够就连带掏出了其余很多工具。但这些工具能够基本就是本次操纵用不上的。其次,将工具更新到数据库时,也须要对关系的工具停止处置,不然对关系工具的修正就会丧失。  固然能够用种种技能来幸免这些情形,但毫无疑难须要开辟者对 RoR 的 Active Record 很熟习才行。不然看下来很简略的代码,背地则会是恶梦般的数据库操纵。  其次,假定咱们要将数据库中每本书的单价减半,那末采纳 Active Record 形式时,就必需起首读取全部的记载并实例化为工具,而后更新工具属性,再写回数据库。可想而知如许会有多差的效力。  固然了,现实开辟中没有人会如许做。开辟者会编写一个独自的方式,用一条 SQL 语句实现对批量数据的更新。但也阐明 Active Record 形式不合适批量处置数据,而事实天下中,批量处置数据的需要到处可见。  不外因为 RoR 对开辟效力戏剧性的进步,以是关于寻求开辟效力的名目,RoR 是一个很不错的抉择。并且机能上的缺乏能够经过更新硬件或许共同其余技巧手腕来改良(比方 FastCGI 平日是运转 RoR 利用的首选)。因而在事实天下中,37signals.com 公司的全部基于 RoR 开辟的利用,都取得了精良的机能表示(然而等同的硬件,跑 PHP 开辟的一样功效利用是更好仍是更差呢?这个成绩没有谜底)。Active Record 与 ORM  很多人将 Active Record 与 ORM 划等号,这是过错的。

上一篇:PHP 开发中的三个世界-网络编程

下一篇:没有了