PHP或MySQL中的业务逻辑?

时间:2009-11-09 21:48:40

标签: php mysql business-logic

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

考虑保持可扩展性的最佳方法是什么。

7 个答案:

答案 0 :(得分:9)

我无法向您提供统计信息,但除非您计划在将来将PHP更改为其他语言,我可以说保持PHP中的业务逻辑更具“可扩展性友好性”。

解决Web服务器负载问题比在数据库中使用它们更容易,也更便宜。您的数据库将始终需要快速点亮,只是向它投掷镜像将无法解决问题。您拥有的数据库从站越多,您必须执行的写入越多。

答案 1 :(得分:3)

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

快速保持数据库处理选择,插入和更新。

答案 2 :(得分:2)

应该考虑使用完善的PHP应用程序,但请记住,它还要求您尽可能少地调用数据库。稍后在PHP中存储您需要的值,缩短查询,缓存等。

MySQL优化始终是必须的,因为它还会减少PHP的数据库调用量,从而获得更好的性能。因此,如果您的目标是提高性能,则无法想到存储过程等。但是如果你的PHP代码做得不好(很多不必要的数据库调用),那么MySQL本身就不会有用,这就是为什么我认为PHP必须编码良好,在开发过程中记住漏洞过程,以便不必要的东西不会妨碍。例如,在具有适当MySQL的“duet”中,缓存可以极大地提升性能。

答案 3 :(得分:2)

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

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

答案 4 :(得分:2)

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

  

是否可以访问同一个数据库   来自不同的网站/网站   应用程序?请问网站/   应用程序写在同一个   语言还是用不同的语言?

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

  

什么是关系数据库   一般有用,什么是MySQL   特别好吗?什么是PHP   最好的?

这种考虑是相当直接的。全面的关系数据库,特别是SQL的任何变体,都可以很好地插入,更新和删除数据。通常他们也很好地处理ATOMIC交易。但是,SQL的大多数变体(包括MySQL)都不擅长复杂的计算,即时日期处理,文件系统访问等。

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

  

你最熟悉的是什么/   使用舒服吗?

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

最后一点考虑,仅仅因为钻头可以用来切割板岩,或者因为锤子可以用来驱动螺钉并不意味着它们应该用于这些东西。有时我认为程序员通过尝试制作更强大的工具来做更多的事情,而不是制作更简单的工具来做一件事,真的很好。

答案 5 :(得分:0)

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

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

2 - DB往往更加语言稳定,因此当新版本的RDBMS出现时,它通常不会改变您编写查询或SP的方式,甚至不会改变。在DB中编写逻辑会因为新的DB版本而减少代码适应性

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

4 - 如果您认为有一天要完全改变您正在编写应用程序的语言(例如语言死亡),唯一需要重写的是演示和SP调用,而不是业务逻辑。 / p>

我想知道其他人在这里是否有意义,如果不是,为什么。我和Sabeen Malik的情况相同,我正在考虑开始我的第一个大项目,因为我所写的内容,我正在倾向于SP。所以现在是时候纠正我的POV,如果不是那么正确的话。

答案 6 :(得分:-1)

MySQL使用高级数据库技术很糟糕,它简单快捷。 PHP是一种动态语言,使处理数据变得非常容易。因此,使用PHP通常是有意义的。