私のWebアプリケーションは常に2次接続を照会する必要があります。各ユーザーは200人の友人を言う&これらの友人はそれぞれ200人の友人を持っています。私は、このウェブアプリケーションを速くするための正しいデータベース(およびテーブル構造)を決定するのに役立ちます。&データベースの選択:頻繁に2次接続を照会
ビジネスロジック:ユーザーが(unsigned int型ように1列に格納されている)特定のサービスを使用し、他のユーザーのリストを取得するために彼らの第一&第二度の接続を検索します。それはこのアプリの唯一の機能です。
表構造:
- ユーザー表:USER_ID(PK)、Facebook_ID(SK)、名前、特定のサービス、ロケーション
- 関係テーブル:まだ未定。
質問:私は&「はソーシャル・ネットワーキング・データベース設計」のためにウェブを検索、多くの記事を読みました。しかし、これらのアプリケーションは私のものとはまったく異なっています。私は多くのユーザ(+ 10mil)を持っていますが、小さなデータベース&はビジネスロジックで説明されているように1つのクエリしか実行しません。
追加情報:ユーザーは自分のFacebookアカウントのみを使用して登録できます(&以降ログイン)。彼らの友人は(Facebookを介して)招待され、登録もされます。 リレーションシップテーブルは、一旦フレンド登録(アクティブ/非ブロック/未保留の友人のみ)に入力されます。したがって、私は関係表から "友情ステータス"欄を取り除くことができます。
はいデザインは左右対称である&(フォロワー、ブロックされた連絡先などのような)他のオプションはありません。 私の本当の疑問は、私は2階級の友人を見つけるためにクエリを実行するとき、この設計が効率的であるかどうかです。 –
すべてがキャッシュされている場合、千2度の友人は1秒未満でうまくいくはずです。完全にキャッシュされていない場合でも、わずか1秒かかる場合があります。 –
使用するデータベースの経験からコメントしていただけますか?私はグラフデータベースまたはRDBMSに行くべきですか? –