大規模なWebサイトを構築していて、スケーラブルにしたいと考えています。私は最近、高負荷プロジェクトの経験豊富な開発者(Oleg Bunin)によって書かれた記事を読みましたが、次のように述べています。
高負荷アプリケーションは、次の3つの部分に分割する必要があります。
1)フロントエンド(HTML、CSS、JS、画像)
2)バックエンド(サーバー側:PHP、Python、またはその他のサーバー側言語を使用した大量の計算タスク)
3)データベース
この場合、アプリケーションは大量のトラフィックに耐えることができます。また、この記事では、SQL
クエリはアプリケーションの1か所に配置する必要があると指摘しています。
PHP5OOPとMySQLデータベースを使用しています。私の解決策:
1)すべてのSQLクエリをクラスに配置しました。
2)データベースレイヤークラスにラップされたPHPPDOを使用します。
3)各クラスはデータベースレイヤーオブジェクトで初期化され、それを使用してSQLクエリを実行します。
例:
// On the public accessible page
$DBH = new RwtDatabaseLayer(['messages']); # database name
$msgs = new GetMessages($DBH);
そして私のGetMessages
クラスでは:
class GetMessages
{
private $_DBH;
function __construct($DBH)
{
$this->_DBH = $DBH;
}
function get_messages()
{
$this->_DBH->run(QUERY HERE); // `run` is Database Layer method
}
}
その結果、パブリックアクセス可能なページのコードにはSQLクエリが含まれていません。
私はこれを正しくやっていますか?