[PHP-users 34845] Re: PHPの実装方法について

あきら akirainfoml @ gmail.com
2009年 11月 17日 (火) 11:38:53 JST


あきらです

> このようなサービスを開発する場合、データベースをどのように分け、PHPでどのように実装するのが理想でしょうか?

フレームワークとデータベースによってアプローチは変わってくると思います。
また同じフレームワークでもデータベースアクセスの方法が選べたりするので
環境別に検証を行うことをお勧めします。

フレームワークを利用しないでPHPを組むのは単一の小さなプロジェクト以外
ではやめた方がいいです。

> 1.データベースをサービス単位で分割する

全部一個にいれて、あとで分割できるように設計するのが汎用的だと思います
が絶対に同時に使わないテーブルは同じサーバーでもはじめから別けておいて
もよいと思います。

PostgreSQLとかだとクラスタリングなどであとからサーバーに分配するのも
標準環境ではないですが可能です。

そもそもOracleであれば最初からクラスタリング構成で設計した方がいいかも
しれません。

とはいえ、最近はデータアクセスは階層を分離するので、実際のロジックなど
からは設計を変更しても極力影響を与えないように組むのがよいと思います。

データベースの分割については経験が必要ですので、どのレベルで拡張を行って
いくのかを最初に検証したほうがよいと思います。

コストかけれるのであれば、最初からクラスタリングがいいと思いますし最初は
ユーザーが少ないのであれば分割しなくてもよいのではないでしょうか?
クラスタリングよりはミラーリングの方がよい場合もあると思います。

実際問題オークションってのはかなりヘビーなコンテンツですが。。。

ただしSNSやBlogの連携ってDB経由じゃなくっても、XML経由とかRSS経由とか
SOAP通信とかシステムを分割しておくのもよいかもしれません。

これは各サービスレベルで実装者や設計者が違う場合に、DB経由の場合いろいろ
トラブル起こる場合があるので、責任範囲を別ける意味もあります。

ミラーリングされたDBにアクセスするのであれば問題ありませんが、本番系DB
に直接アクセスする場合には、参照系の外部サービスから重いSQLを投げられる
ことがあり注意が必要です。

Webサーバーの分割方法と、DBサーバーの分割方法も合わせて考えて検証を
するのをお勧めします。
テーブルのレコード分割も必要になるかも検討する必要があります。

また理想よりは、管理できる範囲の中での設計をお勧めします。

あきら


PHP-users メーリングリストの案内