どのようなデータベースを使用する予定ですか? リレーショナル (PostgreSQL、MySQL) と「NoSQL」 (MongoDB、CouchDB) には大きな違いがあります。
PostgreSQL は私が経験した唯一のデータベースであるため、リレーショナル側の PostgreSQL についてのみ説明します。
まず、すべてを 1 つのデータベースに保持します。アカウントごとにデータベースを使用する利点はありません。
第二に、1 台のマシンでは十分に成長できないことを絶対に確認する必要があります。読み取りよりも多くの書き込みを処理するアプリケーションの種類を考えると、マスター/スレーブ レプリケーションは高可用性のためにのみ機能し、PostgreSQL を使用したマルチマスター レプリケーションは簡単ではありません。
私の最後の調査によると、それを行うための最も簡単な方法は、書き込みスケーラブルになるように設計されたPostgres-XC のようなツールを使用することでしたが、それがどれほど本番環境に対応しているかはわかりません。
もう 1 つの解決策は、Bucardo や SkyTools などのツールを使用することです。SkyTools の経験はありませんが、昨年は Bucardo を機能させるのに苦労しました。
最後の解決策は、シャーディングを行うことです。シャードする単純な方法は、次のようなことです
shard number = id % 10
。ただし、これを使用すると、シャードを追加/削除するたびにクラスターを再調整する必要があります。クエリを正しいシャードに送信するには、アプリケーションを「シャード対応」で作成する必要があります。
とにかく、前に言ったように、最初にシャード/クラスタ化する必要があることを確認してください。
「NoSQL」側については、どのソリューションの経験もありませんが、MongoDB と CouchDB がシャーディング自体を処理することは知っているので、これらのソリューションの方がはるかに簡単ですが、かなりあきらめます。