sql server - 带有MySQL数据库的PHP Yii框架上的应用程序是否可以处理20K员工的ERP解决方案


sql server - Will an application on PHP Yii framework with MySQL database handle an ERP solution of 20K employees?

我们有一个项目,为孟加拉国最大的服装业之一建立一个ERP系统。

他们有大约 20,000 名员工,其中大约 10% 每个月都有外出/上岗。我们是一家拥有 5 名 PHP 开发人员的小公司,对如此大的项目没有太多经验。我们之前使用Codeigniter/Zend Framework和MySQL数据库开发了不同的中小型项目。

对于这个项目,我们决定使用 Yii 框架和 MySQL 或 PostgreSQL。每天将有大约 100 万个数据库查询。现在我的问题是MySQL/PostgreSQL可以处理这种负载还是有更好的选择?是否可以使用 Yii 框架来做,或者对于这种应用程序有更好的 PHP 框架?我们只有 5 个月的时间来构建薪资和员工管理模块。

首先,考虑使用PostgreSQL而不是MySQL。您将处理任务关键型数据,一般来说,您会欣赏到:

  • 您将可以访问窗口函数(对报表有用)、语句和更强大的查询规划器。
  • 您将拥有额外的数据类型,即可用于优化日期范围重叠相关查询的几何类型。
  • 您将可以访问全文搜索功能,而无需使用容易导致数据损坏的引擎(MyISAM)。
  • 您将有更多选项来实现数据库复制(其中一些是内置的)。
关于可伸缩性

,请注意可伸缩性!=性能。后者是关于更快地提出个人请求;前者是关于能够处理大量并发请求,并且通常会对后者造成轻微打击。

对于PHP框架,我个人从未使用过Yii,所以我不知道它的扩展能力如何。但我非常确定Symfony2(或Symfony,如果你不喜欢使用测试版软件)会很好地扩展:它的关键开发人员在一个主要客户是大中型组织的网络机构中工作。

我认为

,Yii 可以很好地处理(相对)大量的数据。我使用 Yii 在一个小型虚拟主机上管理 130 万条记录,每天更新一些 thausend 更新,每天进行数千次查询,性能惊人。

如果你的数据库可以处理这些数据,你的 Yii 应用程序也会处理这些数据。

您对数据库的选择将是一个重要的点。所以@Denis说了一些重要的想法。通过使用MySQL,您可能必须探索/确定适合您需求的存储引擎。

但是,有一些要点是我通过使用 Yii 创建一个不断增长的项目来实现的。您应该考虑以下事项:

Yii 是一个年轻的框架:支持新技术(如 ajax),但在某些特殊情况下它有点不成熟:在几个小时内生成一个基本应用程序非常容易。特殊情况和要求可能会出现问题。 示例:它们对用户输入(HTML表单)有一个很好的验证机制。但是直到 Yii 1.1.6 它不适用于 HTML 复选框,从 Yii 1.1.7 开始,默认情况下支持复选框,但没有复选框组。另一个问题:Yii 总是使用表别名,它总是 "t"。这可能是个问题!有时您可以定义该别名,有时不能(这是不一致的)。如果你想在 MySql 中锁定几个表,你就遇到了一个问题,因为 Yii 调用每个具有相同别名"t"的表。因此,您无法按表名掠夺MySql中的表,也无法锁定由同一别名调用的几个表。->这些是特定的问题,你可以通过编写纯 PHP(不使用 Yii 功能)来解决它们 我想说的是:框架在很多情况下不会有帮助,但在大多数情况下。

-Yii易于扩展。添加自己的扩展或功能很容易。因此,很多"小问题"都可以通过编写自己的扩展,小部件或通过覆盖方法来解决。

-Yii 支持 PHP 5.2。Yii 与 5.3 兼容,但是(Yii 在 5.3 上运行 - 我从昨天开始仍在使用它,它可以工作),但不支持 5.3 的新功能(也许你需要一个?PHP5.3 将(也许)支持 Yii 2.0 - 在遥远的未来 (2012)

-Yii有一个小(但非常好)的社区。

-没有专业支持(您可以发布错误,任何人都可以修复它 - 或者您将自己修复它)

-Yii 是 OO PHP。通过处理数据对象来考虑这一点。可以将大量数据加载到数据对象中。但请记住,您的应用程序服务器有足够的 RAM(但这不是 Yii 特定的东西)

完全:我喜欢Yiian,如果你的应用程序不复杂,你会有很多乐趣,最后是一个漂亮而强大的应用程序。

不过,我认为您可能问错了问题。

您有五个月的时间构建ERP系统。主要关注点应该是:

  • 安全。您正在处理金钱和个人详细信息。
  • 可靠性。正常运行时间可能是一件大事(至少在工作时间内)
  • 一致性。您不想冒丢失数据或损坏数据的风险
  • 开发人员的工作效率。五个月的时间不多,做你描述的东西
  • 可维护性。听起来这是企业的核心资产,使用寿命长达数年 - 将来可能需要维护和扩展。
  • 可扩展性。您需要支持数以万计的工人,每个工人都有许多考勤卡、工资单等。
  • 性能。您希望应用程序具有响应能力。

我会质疑性能是否是绝对优先事项 - 它不应该很慢,但许多ERP系统有点迟钝。性能优化通常意味着权衡其他优先级 - 例如,ORM系统可以提高开发人员的工作效率,但可能比手工制作的SQL慢。

至于可扩展性 - 只要你有一个合理设计的模式,我认为20K员工对任何现代RDBMS来说都不是太大的挑战。

所以,如果我是你,出于Denis提到的原因,我可能会选择PostgreSQL。从未使用过 Yii,但这似乎是完全合理的。我会使用 ORM,直到您发现性能确实无法接受的情况。

至关重要的是,我会建立一个测试框架,它允许你在开发周期中监控性能和可扩展性(我为此使用 JMeter),并且只在你真的需要时才进行性能优化。在你知道自己有问题之前,以性能的名义牺牲所有其他东西 - 特别是生产力和可维护性 - 往往会创建过于复杂的解决方案,反过来又往往会带来更多的安全问题和维护挑战。

只是为了补充,Yii在两个方向上都很好地扩展(即使用新模块等添加功能,并且在性能方面是最快的PHP框架之一)。我能看到的 Yii 的唯一缺点是它的用户群较少,因此比其他一些框架的支持少一些,但这正在快速变化。Yii 最好的部分是基于 gii 的代码生成,一旦你习惯了它,它可以帮助你快速入门。

Yii是非常灵活,轻量级和易于学习的PHP框架。

相关文章: