2009-11-09 7 views
5

妥当な量のトラフィックがあるサイトでは、アプリケーション/ビジネスロジックがPHPコードの内部ではなく、ストアドプロシージャ、トリガ、およびビューとして記述されているかどうかは重要ですか?PHPまたはMySQLのビジネスロジック?

スケーラビリティを念頭に置く最良の方法は何でしょうか。

+0

あなたが考えているリクエスト率を定量化できますか? –

+0

1日に100,000ページビューがあるとします。 –

答えて

9

私は統計情報を提供することはできませんが、将来別の言語用にPHPを変更する予定がない限り、PHPのビジネスロジックをより「スケーラビリティに優しい」と言えるでしょう。

Webサーバーの負荷に関する問題をデータベースで解決するよりも、ずっと簡単で安価です。あなたのデータベースは常に素早く点灯する必要があり、ミラーを投げても問題は解決しません。あなたが持っているデータベーススレーブが多くなればなるほど、より多くの書き込みが必要になります。

+0

+1 ..はい、まさに私が考えていたことです...私はPHPの負荷を分散できますが、MySQLの負荷を分散する方法はあります。 –

2

よくできたPHPアプリケーションは十分なはずですが、できるだけ少ない数のデータベースを呼び出す必要があります。 PHPで後で必要となる値を格納し、クエリやキャッシュなどを短くします。

PHPのデータベースコールの量が減少し、パフォーマンスが向上するため、MySQLの最適化は常に必須です。したがって、パフォーマンスを向上させることが目的の場合は、ストアドプロシージャなどを考えることができません。しかし、PHPコードがうまくいっていない(十分なデータベース呼び出しがない)なら、MySQL自体では十分ではないでしょう。なぜなら、PHPはコード化されていなければならないと思っています。途中で取得しません。たとえば、適切なMySQLを使用した「デュエット」のキャッシュは、パフォーマンスを大幅に向上させます。

+0

スケーラビリティの問題に具体的に答える個人的な経験や統計データをバックアップできますか? –

3

私の経験では、ビジネスロジックをデータベースに移すのではなく、PHPコードに配置する必要があります。データベースが別のサーバーにあると仮定すると、要求が入ったときにデータベースがビジー状態になることを避けることができます。

選択、挿入、および更新を処理するためにデータベースを高速に保ちます。

2

データベースのコードをデータベースに保存しておくと、レコードの数が多くなるほどパフォーマンスのチューニングが可能になります。また、データの保全性が向上し、有用であってもデータにとって重要です。アプリケーション内にすべてのコードを持つ大規模なテラバイトサイズのリレーショナルDBは表示されません。

データベースのパフォーマンスチューニングに関する書籍を読んで、アプリケーションコードに企業のデータを流したいかどうかを判断してください。

+0

PHPで何年ものことを何年にもわたった後、私はDBにロジックを持たせることで、たくさんのものをより簡単に、より中心的に、より透明にすることに気づき始めました。しかし、スケーラビリティについて考えると、何とかロードバランシングPHPがより簡単で安価であると思われます。私はMySQLについて同じことを言うことはできないと思っています。 –

2

ビジネスロジックをデータベースに配置するのかアプリケーションコードに配置するのかを決定する際には、いくつか考慮すべき点があります。

別のウェブサイト/ウェブ アプリケーションから同じデータベースにアクセスできますか?サイト/ アプリケーションは同じ 言語で、または別の言語で書かれますか?

データベースが単一のサイトから使用され、そのサイトが単一の言語で書かれている場合、これは問題になりません。それ以外の場合は、複数のコードベースでデータベースアクセスロジックなどを維持しようとすると、ストアドプロシージャやトリガなどの追加された複雑さを考慮する必要があります。

ため 一般的に良いではリレーショナルデータベースとは何であり、MySQLの いい、具体的にするために何ですか? PHP とは何ですか?

この対価はかなり簡単です。データベース全体のリレーショナルデータベースは、特にSQLの任意の変種で、データの挿入、更新、および削除を行う上で大きな役割を果たします。一般に、彼らはまた、ATOMIC取引をうまく処理します。しかし、SQL(MySQLを含む)の大部分は、複雑な計算やオンデマンド処理、ファイルシステムへのアクセスなどでは良くありません。

PHPは、計算、日付、ファイルシステムアクセスします。少し時間を取ることで、レコードが一度だけ取得され、必要に応じて保存されるようにPHPコードを設計することさえできます。

あなたはよく慣れていますか/ 使いやすさはどうですか?

明らかに、あなたが最もよく知っているツールを使用する方が理にかなっています。

最後の点は、ドリルをシートの岩石を切断するために使用することができ、またはハンマーを使用してねじを駆動することが、これらのものに使用されるべきではありません。時には、私は、プログラマが本当にうまくいった簡単なツールを作るのではなく、すべてを行うより強力なツールを作ろうと試みることによって、より大きな被害を与えると思うこともあります。

+0

すべての有効なポイント。しかし、私が本当に理解しなければならない部分は、DBレベルでビジネスロジックを適用する機能を持つことが悪い考えだったのです。 –

-2

MySQLは高度なDB技術を使用していますが、シンプルで高速です。 PHPは動的言語であり、データの処理が非常に簡単です。したがって、通常はPHPを使用するのが理にかなっています。でも、大規模なアプリケーションの開発に多くの経験を持っていない

+1

「MySQLは高度なDB技術を使用しています」と大胆な声明ですが、いくつかの統計データや例を提供できますか? ...また、「普通はPHPを使うのが理にかなっています」と言われると、PHPを使用しないと意味が分かりますか? –

+1

「高度なDB手法」とはどういう意味ですか? MySQLが提供していない高度なデータベース技術 –

0

私のPOVは、いくつかの理由のためにDBのビジネスロジックを記述することです:

1 - 保守、私は言語は短期的に機能や変更に他の多くのものを廃止することを考えますPHPがバージョンを変更した場合は、コードを新しいバージョンに変更する必要があります

2 - DBは言語安定性が高い傾向がありますので、新しいバージョンのRDBMSが出てくると、あなたのクエリやSPを書いたやり方で多くのことを変えたり、それは変わらない。あなたのロジックをDBに書き込むことで、新しいDBバージョンのためにコードの適合性が低下します

3 - RDBMSはプログラミング言語ではなく長期間生存する可能性が高くなります。また、データが重要であるため、RDBMS開発者は、SPを含め、データ全体を新しいRDBMSバージョンに自動的に移行することについて大きな懸念を抱いています。 Clipperが死んだとき、システムを新しいプログラミング言語に移行する方法はなく、完全に書き直さなければなりませんでした。

4 - 何らかの理由(言語の死など)でアプリケーションを書いている言語をいつか完全に変更しようと考える場合、唯一書き換えられるのはプレゼンテーションとSPコールであり、ビジネスロジックではありません。

私が指摘したことが意味をなさないか、そうでない場合は、なぜ他の人から知りたいのですか。私はSabeen Malikと同じ状況に陥っています。最初の巨大なプロジェクトを始めようと思っています。私が書いたもののためにSPに向かう傾向があります。だから私のPOVを訂正する時が間違っていたらそれです。

関連する問題