2010-11-22 4 views
2

私は、ユーザーのつぶやき、FacebookのステータスとFacebookの写真を収穫するアプリケーションの開発の途中です。現在、ユーザは、この収穫がいつ起こるかを正確に設定し、この期間中にクモがデータを取り出す。 whenとtoはMySQLデータベースに保存されていて、私の計画はMongoDBにすべてのツイート、ステータス、写真のメタデータを保存することでした(実際の画像はS3にあります)。MongoDB Collections

私は、ユーザーが収穫したい期間ごとに1つのコレクションを作成し、その特定のコレクションのその期間のすべてのツイートなどを保存すると考えていました。

これは合理的なアプローチのようですか?

+0

なぜ、あなたはちょうど別のコレクションにこれらを保存することをお勧めしたいと思っています...私はちょっと混乱していますか?あなたはこれについて私は思うだろうが、多分あなたはもう少し説明することができます複数のコレクションを必要はありませんか?また、(恥知らずなプラグイン)ここに少しのTwitter/MongoDBチュートリアルがありましたら参考にしてください:http://learnmongo.com/posts/mongodb-php-twitter-part-1/ –

+0

私は、その特定のイベントに関連するすべてのもの?私が望むもののために何十万ものドキュメントを検索するのではなく、 – christophmccann

答えて

4

これは妥当なアプローチのようですか?

#1ユーザーのクエリは何ですか?それは"期間別活動を見つける"ですか?ユーザーが「期間別に検索」したい場合は、これが理にかなっています。

ただし、ユーザーが蓄積ビューを必要とする場合は、ユーザーの履歴を収集して表示用にマージする必要があります。

「この期間」と「累積」の両方が必要な場合は、すべてのデータを1つのユーザーオブジェクトにまとめることをおすすめします。個々のアクションに「収穫実行」と「タイムスタンプ」をタグ付けするのは簡単です。

モンゴー詳細:MongoDBは、最大約4MBの個別ドキュメントを処理できます。最近のバージョンではこれを8MBまたは16MBにまで上げています。このスペースだけをテキストに使用している場合は、これが多くのテキストであることに気づいてください。戦争のコピー&平和は3MBsちょうどです。したがって、あなたは4MBのテキストの何百ものページについて話しています。 8MBまたは16MBの場合、ほとんどの人に数秒間ステータス更新&を保存することができます。

MongoDBにはバイナリデータ(画像ファイルなど)を保存するためのGridFSがあるので、通常は、これらのファイルへのポインタだけをユーザ文書に保存します。

+0

これは本当に役に立ちます。最も一般的なクエリ(時間の99%)は、期間別に検索されます。 S3に画像ファイルを保存し、MongoDBのURLへの参照を保持することを予定しています。 – christophmccann

関連する問題