Propel のデータベース シャーディングのサポートがどれだけ優れているか気になりませんか? MySQL をデータベース サーバーとして使用し、Propel を ORM として使用して、PHP でアプリケーションを作成することを考えています。
私のアプリケーションがうまくいった場合に備えて、アーキテクチャを最初からスケーラブルに保つことが良いかもしれないと私は考えています。
あなたの見解は?
それはとても悪い考えだと思います。データをシャーディングする必要があると仮定することは、適切な仮定ではありません。どのようにスケーリングするかは事前にわかりません。シャーディングは非常に複雑なビジネスであり、可能な限り避ける必要があります。これは時期尚早の最適化のわいせつなケースです。
Propel は、接続を介してすぐに使用できるシャーディングをサポートします。ここで例を確認してください:
http://groups.google.com/group/propel-users/browse_thread/thread/4d19c0668aa17452
シャーディングについて心配するのは時期尚早であるという MarkR の意見には同意しますが、可能な限り避けるべきであるという意見には同意しません。あなたのスタイルと言語の選択に合うと思われる ORM を使用することをお勧めします。Propel はおそらくあなたの場合に適したものです。アプリケーションが大成功を収めたとしても、シャーディングはおそらく必要ないでしょう。MySQL ベースの DBMS と適切なキャッシング技術を使えば、2,500 万件のレコードを簡単に取得できます。そのため、クエリを高速化し、設計することに集中してください。 memcache との統合が簡単で、アプリが軌道に乗ったときでも満足できるでしょう。
頑張ってください!