Zend Db(标准或表格网关)与Zend 2中的Doctrine - 优点/缺点

时间:2015-03-14 11:50:20

标签: php zend-framework doctrine-orm zend-framework2

Zend DB(标准方式或表网关)与Zend 2中的Doctrine。 有些人可能会说它是苹果与橙色比较,但我会说因为它们是替代品(我们在两者之间使用一个)所以可以进行比较(因为要求并不总是很清楚)。

当我启动Zend 2以来,因为文档,书籍,教程都是基于Zend DB或Table Gateway,我使用它但我不满意我们必须处理2,3或更多表连接的方式(多表网关)适配器)所以我切换到Doctrine ORM(也读了很多说“教条对大项目有用”)。我已经在symfony项目中使用了doctrine,所以并不困难,但我也不喜欢实体中的学说,比如实体之间的复杂连接(额外的工作),特别是与Zend DB相比,缓慢和额外的内存。

现在我真的很困惑,我该怎么办?那么你们有什么建议呢?

根据我的分析:

表网关

赞成

  • 轻量级(保持简单)
  • 原生于Zend(现在更好地支持以及将来更新)
  • 更多文档书籍
  • 更好的社区或用户支持(正如许多人正在努力的那样)
  • 关闭数据库表(我很擅长SQL。感觉很好)
  • 更灵活
  • 更容易使用ACL等其他学说原生功能

缺点:

  • 表连接(更复杂)
  • 在某些情况下的原始
  • 处理多个表网关实例很困难。

学说

赞成

  • 更多课程 - 松散耦合 - 更好的控制
  • 带来使用ORM的所有优势
  • 大部分时间都在教条本身(教程 - 文档)上做了大量工作
  • 减少对数据库的依赖
  • 缓存(但也可以使用Zend DB Table Gateway)

缺点:

  • 用于中型项目的更多内存和更慢(与Zend DB Table Gateway相比)
  • 添加复杂性(额外文件+配置+自己的约定)
  • 有时候对中型项目有点过分
  • 在实体或复杂连接之间的多对多关系中做更多工作
  • 额外工作YAML-Schema
  • 减少Zend + Doctrine上的教程 - 书籍 - 用户支持

还有其他人吗? (对于两者)

所以,鉴于这些,你建议哪一个?使用我可以扩展的通用CMS。

或为什么Zend DB不能/不应该用于大型项目?

我在这里找到了一些讨论但不是根据其优缺点分析。

3 个答案:

答案 0 :(得分:2)

我反过来了。我删除了Doctrine 2并切换到Zend DB 2,它将我们的查询提高了5倍,然后我们就能够自定义Zend DB表网关的某些部分,并且我们在查询上获得了5倍的性能(几乎是本机的)。

我想说如果你已经离开有大型数据集,请不要使用Doctrine。记住,学说消耗了大量的资源。

答案 1 :(得分:0)

多年后我已经转向学说,我认为如果你能使它与Zend_Db兼容,它会比Zend好。 Doctrine可以migrate您的数据库,这意味着您可以使用一个命令将客户数据库更新到最新版本。 另一个好处是,您的entities可以在多个DBMS中实施,例如mysqlmssqlmangodb和...

为了获得更多兼容性,您可以使用Raman Framework(此框架为Zend 1.12添加一些功能)

答案 2 :(得分:0)

如果以下内容对您很重要,那么我绝对要使用Zend / Db / *

  1. 性能
  2. 可扩展性
  3. 学习曲线不足