5

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

他们有大约 20,000 名员工,其中大约 10% 的人每个月都会离开/进入。我们是一家拥有 5 个 PHP 开发人员的小公司,对这么大的项目没有太多经验。我们之前使用 Codeigniter/Zend 框架和 MySQL 数据库开发了不同的中小型项目。

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

4

5 回答 5

4

一方面,考虑使用 PostgreSQL 而不是 MySQL。您将要处理关键任务数据,一般来说,您会意识到:

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

关于可扩展性,请注意可扩展性!= 性能。后者是关于使个人请求更快;前者是关于能够同时处理大量的请求,而后者往往会受到轻微的打击。

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

于 2011-05-23T13:09:28.833 回答
1

不过,我想你可能问错了问题。

你有五个月的时间来建立一个 ERP 系统。主要关注点应该是:

  • 安全。您正在处理金钱和个人信息。
  • 可靠性。正常运行时间可能很重要(至少在工作时间内)
  • 一致性。您不想冒丢失数据或损坏数据的风险
  • 开发人员的生产力。五个月的时间并不多,建造你所描述的
  • 可维护性。听起来这是一项核心企业资产,使用寿命长达数年——未来可能需要维护和扩展。
  • 可扩展性。您需要支持数以万计的工人,每个工人都有很多时间卡、工资单等。
  • 表现。您希望应用程序具有响应性。

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

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

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

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

于 2011-05-24T09:23:48.373 回答
1

我认为,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”调用每个表。因此,您无法通过 tablename 掠夺 MySql 中的表,也无法锁定几个由相同别名调用的表。-> 这些是具体问题,您可以通过编写纯 PHP(不使用 Yii 功能)来解决它们 我想说的是:该框架在某些情况下不会有帮助,但在大多数情况下。

-Yii 易于扩展。添加自己的扩展或功能很容易。所以很多这些“小问题”可以通过编写自己的扩展、小部件或重写方法来解决。

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

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

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

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

完全:我喜欢 Yii,如果你的应用程序不是很复杂,那么最终你会获得很多乐趣,一个漂亮而强大的应用程序。

于 2011-05-24T09:12:58.087 回答
0

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

于 2011-05-24T08:04:55.870 回答
0

Yii 是一个非常灵活、轻量且易于学习的 PHP 框架。

于 2011-05-24T09:00:01.790 回答