繁体   English   中英

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

[英]Zend Db (standard or table gateway) vs Doctrine in Zend 2 - Pros/Cons

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

自从文档,书籍,教程基于Zend DB或Table Gateway开始我启动Zend 2时,我就使用了它,但是当我们必须处理2个,3个或更多表联接(多个表网关适配器)时,我对这种方式不满意。我改用了教义ORM(也读了很多话说“教义对大型项目有好处”)。 我已经在symfony项目中使用了学说,所以并不困难,但是我也不喜欢这种学说,例如实体之间的复杂连接(额外的工作),尤其是与Zend DB相比,速度慢和额外的内存。

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

根据我的分析:

表网关

优点

  • 轻巧(保持简单)
  • Zend原生(更好的支持现在和将来的更新)
  • 更多文档书籍
  • 更好的社区或用户支持(许多人正在努力)
  • 关闭数据库表(我擅长SQL。因此感觉很好)
  • 更灵活
  • 更易于使用其他学说的本机功能,例如ACL

缺点:

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

教义

优点

  • 更多类-松散耦合-更好的控制
  • 具备使用ORM的所有优势
  • 关于教义本身(教程文档)的许多工作在大多数时间都有效
  • 减少对数据库的依赖
  • 缓存(但Zend DB Table Gateway也可以)

缺点:

  • 中等项目的内存更大,速度更慢(与Zend DB Table Gateway相比)
  • 增加复杂性(额外的文件+配置+自己的约定)
  • 有时对中等项目过于夸大
  • 实体之间或复杂联接之间的多对多关系需要更多工作
  • 额外的工作YAML模式
  • 更少的教程-书籍-Zend + Doctrine上的用户支持

还有其他吗? ( 对彼此而言)

那么,鉴于这些,您建议哪一个? 我可以扩展的通用CMS。

还是为什么Zend DB无法/不应在较大的项目中使用?

我在这里找到了一些讨论,但没有根据它的优缺点进行分析。

我做了相反的事情。 我删除了Doctrine 2并切换到Zend DB 2,这使我们的查询性能提高了5倍,然后我们可以自定义Zend DB表网关的某些部分,从而使查询性能提高了5倍(几乎是本地性能)。

我想说的是,如果您拥有大量数据集,请不要使用“学说”。 记住,学说消耗了大量资源。

多年后我改用了学说,如果可以使其与Zend兼容,我认为它比Zend_Db Doctrine可以migrate您的数据库,这意味着您可以只用一个命令就可以migrate客户数据库更新到最新版本。 另一个好处是您的entities可以在多个DBMS实现,例如mysqlmssqlmangodb和...

为了获得更高的兼容性,您可以使用拉曼框架 (此框架在Zend 1.12中添加了一些功能)

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM