5

バングラデシュ最大の衣料産業の 1 つである ERP システムを構築するプロジェクトがあります。

約 20,000 人の従業員がおり、その約 10% が毎月出入りしています。私たちは 5 人の PHP 開発者を抱える小さな会社であり、このような大規模なプロジェクトの経験はあまりありません。Codeigniter/Zend Framework と MySQL データベースを使用して、以前にさまざまな小規模/中規模のプロジェクトを開発しました。

このプロジェクトでは、Yii フレームワークと MySQL または PostgreSQL を使用することにしました。毎日約 100 万件のデータベース クエリが発生します。私の質問は、MySQL/PostgreSQL がこの負荷を処理できるか、それともより良い代替手段があるかということです。Yii フレームワークでそれを実行しても問題ないでしょうか?それとも、この種のアプリケーション用のより優れた PHP フレームワークがありますか? 給与計算と従業員管理モジュールを構築するのに 5 か月しかありません。

4

5 に答える 5

4

1 つには、MySQL ではなく PostgreSQL の使用を検討してください。ミッション クリティカルなデータを扱うことになりますが、一般的に次のことを理解する必要があります。

  • ウィンドウ関数 (レポートに便利)、ステートメント、およびはるかに堅牢なクエリ プランナーにアクセスできます。
  • 追加のデータ型、つまり、日付範囲の重複に関連するクエリを最適化するために使用できるジオメトリ型があります。
  • データが破損しやすいエンジン (MyISAM) を使用しなくても、全文検索機能にアクセスできます。
  • DB レプリケーションを実装するためのオプションが増えます (そのうちのいくつかは組み込みです)。

スケーラビリティに関しては、スケーラビリティ != パフォーマンスに注意してください。後者は、個々のリクエストを高速化することです。前者は大量の同時リクエストを処理できるようにするためのものであり、後者にはしばしばわずかな打撃が伴います。

PHP フレームワークに関しては、個人的には Yii を使用したことがないので、Yii がどの程度スケーリングするかはわかりません。しかし、Symfony2 (または、ベータ版ソフトウェアを使用したくない場合は Symfony) が適切に拡張されることは間違いありません。その主要な開発者は、主な顧客が中規模から大規模の組織である Web エージェンシーで働いています。

于 2011-05-23T13:09:28.833 に答える
1

Yii は (比較的) 大量のデータで問題なく動作すると思います。私は Yii を使用して 130 万件のレコードを管理しています。1 日に数千件の更新が行われ、小さな仮想ホスト上で 1 日に数千件のクエリが驚くべきパフォーマンスで実行されます。

データベースがこのデータを処理できる場合、Yii アプリケーションもそれを処理します。

データベースの選択は重要なポイントになります。だから@Denisはいくつかの重要な考えを言った。MySQL を使用することで、おそらくニーズに適したストレージ エンジンを調査/決定する必要があります。

しかし、Yii で成長するプロジェクトを作成して気づいた点がいくつかあります。あなたはそれらのことについて考える必要があります:

-Yii は新しいフレームワークです。新しいテクノロジー (ajax など) がサポートされていますが、いくつかの特殊なケースでは少し未熟です: 基本的なアプリケーションを数時間で生成するのは非常に簡単です。特別な状況や要件によって問題が発生する可能性があります。例: ユーザー入力 (HTML フォーム) のための優れた検証メカニズムがあります。しかし、Yii 1.1.6 までは HTML チェックボックスで動作しませんでした。Yii 1.1.7 以降、チェックボックスはデフォルトでサポートされていますが、チェックボックスのグループはサポートされていません。別の問題: Yii は常に "t" であるテーブル エイリアスを使用します。それは問題になる可能性があります!そのエイリアスを定義できる場合もあれば、そうでない場合もあります (これは矛盾しています)。Yii はすべてのテーブルを同じエイリアス "t" で呼び出すため、MySql でいくつかのテーブルをロックしたい場合、問題が発生します。そのため、テーブル名で MySql のテーブルを略奪することはできず、同じエイリアスによって呼び出されたいくつかのテーブルをロックすることもできません。-> これらは特定の問題であり、純粋な PHP (Yii の機能を使用しない) を作成することで解決できます。

-Yii は簡単に拡張できます。独自の拡張機能や機能を簡単に追加できます。したがって、これらの「小さな問題」の多くは、独自の拡張機能やウィジェットを作成するか、メソッドをオーバーライドすることで解決できます。

-Yii は PHP 5.2 をサポートします。Yii は 5.3 と互換性がありますが (Yii は 5.3 で動作します - 私は昨日からまだ使用していますが、動作します)、5.3 からの新機能はサポートしていません (おそらく必要ですか?) Yii 2.0 - 遠い未来 (2012)

-Yii には小さな (しかし非常に良い) コミュニティがあります。

- 専門的なサポートはありません (期待してバグを投稿できます。誰でも修正してくれます。または、自分で修正します)。

-Yii はオブジェクト指向の PHP です。Data-Objects で処理することによってそれについて考えてください。Data-objects に大量のデータをロードすることが可能です。ただし、アプリケーション サーバーに十分な RAM があることを覚えておいてください (ただし、これは Yii 固有のものではありません)。

まったく: 私は Yii が好きです。あなたのアプリケーションがそれほど複雑でないなら、最終的に素敵で強力なアプリケーションを大いに楽しむことができます。

于 2011-05-24T09:12:58.087 に答える
1

しかし、あなたは間違った質問をしているかもしれないと思います。

ERP システムを構築するのに 5 か月かかります。主な懸念事項は次のとおりです。

  • 安全。あなたはお金と個人情報を扱っています。
  • 信頼性。稼働時間はおそらく大したことです(少なくとも勤務時間中)
  • 一貫性。データの損失やデータの破損のリスクを冒したくない
  • 開発者の生産性。あなたが説明したものを構築するのに、5か月はそれほど時間はかかりません
  • 保守性。これは、何年にもわたる寿命を持つコア エンタープライズ アセットのように思えます。将来、メンテナンスと拡張が必要になる可能性があります。
  • スケーラビリティ。何万人もの労働者をサポートする必要があり、それぞれが多数のタイム カードや給与計算などを行っています。
  • パフォーマンス。アプリケーションをレスポンシブにする必要があります。

パフォーマンスが絶対的な優先事項であるかどうかを調べます。遅くはないはずですが、多くの ERP システムは少し遅いです。パフォーマンスの最適化は、多くの場合、他の優先事項とのトレードオフを意味します。たとえば、ORM システムは開発者の生産性を向上させますが、手作りの SQL よりも遅くなる可能性があります。

スケーラビリティに関しては、合理的に設計されたスキーマがある限り、適切なハードウェア上の最新の RDBMS にとって、20,000 人の従業員が大きな課題になるとは思いません。

したがって、もし私があなたなら、Denis が言及している理由から、おそらく PostgreSQL を使用するでしょう。Yii を使用したことはありませんが、完全に理にかなっているようです。パフォーマンスが本当に受け入れられない状況が見つかるまで、ORM を使用します。

重要なのは、開発サイクル中にパフォーマンスとスケーラビリティを監視できるテスト フレームワークをまとめ (これには JMeter を使用します)、本当に必要な場合にのみパフォーマンスの最適化を行うことです。問題があることに気付く前に、他のすべてのもの、特に生産性と保守性をパフォーマンスの名の下に犠牲にすることは、複雑すぎるソリューションを作成する傾向があり、その結果、より多くのセキュリティの問題とメンテナンスの問題が発生する傾向があります。

于 2011-05-24T09:23:48.373 に答える
0

追加するだけで、Yiiは両方向に非常にうまくスケーリングします(つまり、新しいモジュールなどを使用した機能の追加であり、パフォーマンスに関しては最速のphpフレームワークの1つです)。Yiiで私が見ることができる唯一の欠点は、ユーザーベースが少ないため、他のフレームワークよりもサポートが少し少ないことですが、これは急速に変化しています。Yiiの最良の部分は、giiベースのコード生成です。これは、慣れればすぐに始めるのに役立ちます。

于 2011-05-24T08:04:55.870 に答える
0

Yii は非常に柔軟で、軽量で、習得が容易な PHP フレームワークです。

于 2011-05-24T09:00:01.790 に答える