6

在一个流量合理的网站上,如果应用程序/业务逻辑被编写为存储过程、触发器和视图,而不是 PHP 代码本身,这是否重要?

牢记可扩展性的最佳方法是什么。

4

7 回答 7

10

我无法为您提供统计数据,但除非您计划将来将 PHP 更改为另一种语言,否则我可以说将业务逻辑保留在 PHP 中更“可扩展性友好”。

解决 Web 服务器负载问题总是比将它们放在数据库中更容易、更便宜。您的数据库将始终需要快速点亮,只是向它扔镜子并不能解决问题。您拥有的数据库从站越多,您需要执行的写入操作就越多。

于 2009-11-09T22:14:35.030 回答
3

根据我的经验,您应该将业务逻辑放在 PHP 代码中,而不是将其移到数据库中。假设您的数据库位于单独的服务器上,您不希望数据库在请求进入时忙于计算公式。

让您的数据库快速处理选择、插入和更新。

于 2009-11-09T22:04:24.023 回答
2

一个做得好的 PHP 应用程序应该足够了,但请记住,它还要求您尽可能少地调用数据库。在 PHP 中存储您稍后需要的值、缩短查询、缓存等。

MySQL 优化始终是必须的,因为它也会减少 PHP 的数据库调用量,从而获得更好的性能。因此,如果您的目标是提高性能,就不可能不考虑存储过程等。但是如果你的 PHP 代码做得不好(很多不必要的数据库调用),那么 MySQL 本身是不够的,这就是为什么我认为 PHP 必须编码好,在开发它时要记住漏洞过程,这样不必要的东西不碍事。例如,在“二重奏”中使用适当的 MySQL 缓存可以极大地提高性能。

于 2009-11-09T21:51:19.770 回答
2

我认为您将拥有更好的可扩展性,将数据库代码保存在数据库中,随着记录数量的增加,可以对其进行性能调整。您还将拥有更好的数据完整性,这对数据甚至有用都至关重要。您不会在应用程序中看到很多 TB 大小的关系数据库及其所有代码。

阅读一些关于数据库性能调优的书籍,然后决定是否要拿公司的应用程序代码数据冒险。

于 2009-11-09T22:20:46.450 回答
2

在尝试决定将业务逻辑放置在数据库中还是应用程序代码中时,需要考虑几件事情。

是否会从不同的网站/Web 应用程序访问相同的数据库?网站/应用程序是用相同的语言还是用不同的语言编写的?

如果数据库将从单个站点使用,并且该站点是用一种语言编写的,那么这将成为一个非问题。否则,您将需要考虑存储过程、触发器等与尝试在多个代码库中维护数据库访问逻辑等所增加的复杂性。

关系数据库一般有什么好处,MySQL 有什么特别的好处?PHP 最擅长什么?

这种考虑是相当直截了当的。全面的关系数据库,特别是任何 SQL 变体中的关系数据库,在插入、更新和删除数据方面都会做得很好。通常,它们也能很好地处理 ATOMIC 事务。然而,大多数 SQL 变体(包括 MySQL)并不擅长复杂计算、即时日期处理、文件系统访问等。

另一方面,PHP 在处理计算、日期、文件系统访问方面非常快。通过花一点时间,您甚至可以设计您的 PHP 代码以使记录只检索一次,然后在必要时存储。

您最熟悉/最喜欢使用什么?

显然,使用您最熟悉的工具往往更有意义。

作为最后一点考虑,仅仅因为可以使用钻头切割石板或因为可以使用锤子来驱动螺钉,并不意味着它们应该用于这些事情。有时我认为程序员通过尝试制作更强大的工具来完成所有事情而不是制作更简单的工具来真正非常好地完成一件事,从而造成更大的潜在损害。

于 2009-11-09T22:21:03.500 回答
0

我的 POV,即使没有太多开发大型应用程序的经验,也是出于某些原因在 DB 中编写业务逻辑:

1 - 可维护性,我认为语言会在短时间内弃用功能并更改许多其他内容,因此如果 PHP 更改版本,您需要使代码适应新版本

2 - 数据库往往更稳定的语言,所以当一个新版本的关系数据库出现时,它通常不会改变你编写查询或 SP 的方式,甚至不会改变。由于新的 DB 版本,在 DB 中编写逻辑将减少代码适应

3 - RDBMS 更有可能存活很长时间,而不是编程语言。此外,由于您的数据至关重要,RDBMS 开发人员非常担心将整个数据自动迁移到新的 RDBMS 版本,包括您的 SP。当 Clipper 死时,没有办法将系统迁移到新的编程语言,它们必须完全重写。

4 - 如果您想有一天出于某种原因(例如语言死亡)彻底改变您正在编写应用程序的语言,那么唯一需要重写的将是演示文稿和 SP 调用,而不是业务逻辑。

我想从这里的其他人那里知道我所指出的是否有道理,如果没有,为什么。我和 Sabeen Malik 处于同样的境地,我正在考虑开始我的第一个大型项目,并且由于我写的内容,我倾向于使用 SP。因此,如果我的 POV 不那么正确,是时候纠正它了。

于 2014-11-06T17:56:59.523 回答
-1

MySQL 不擅长使用先进的数据库技术,它既简单又快速。PHP 作为一种动态语言,使处理数据变得非常容易。因此,使用 PHP 通常是有意义的。

于 2009-11-09T22:24:30.500 回答