2

Nodejs と Mongodb を使用して、Stackoverflow をスキャンして新しいコンテンツをスキャンし、ホットでトレンドのトピックを見つけるアプリケーションを構築しています。これを行う方法を知る必要があります。フォームMySQLと私の直感は、ここには何か違うものがあることを教えてくれます。

私は実際に Stackoverflow をスキャンしているわけではなく、類推として簡単に使用できますが、それでも、投稿、コメント、およびスレッドを投稿したユーザーがあります (コメントを投稿したユーザー atm は無視します)。

私の最初の解決策は、3 つのテーブル (コレクション) を作成することでした。

  • 投稿 - 投稿に関するすべての情報を保存する場所
  • 投稿統計 - 投稿に関するすべての動的情報 (コメント数、総合スコアなど) を X 分ごとに 1 回保存します。
  • ユーザー - 投稿を投稿したユーザーに関する情報を保存する場所

基本的に、「今日のトップユーザーを教えてください」と「この投稿の履歴を教えてください」でデータベースにクエリを実行して、この投稿がどのように動作したか(ランク、スコア、コメントなど)の一種のグラフを作成できるようにしたいと考えています。 ) 時間とともに。

Mongodb でこのようなことを行う正しい方法は何ですか? Post ドキュメントの一部として Post Stats を保存する必要がありますか?

4

1 に答える 1

0

個人的には、ここでハイブリッド ソリューションを使用します。

常に何らかの集計データが必要になることは避けられませんpost。そのpostため、すべての時間の統計を含む追加のサブドキュメントを格納します。

stats: {
    views: 456, // Just an example
    vote_ups: 5,
    vote_downs: 4,
    rank: 1, // vote ups minus vote downs
    comments: 5,
    answers: 6
}

次に、個々の期間post_statsについて、次のようなドキュメントの作成について説明する方法を使用します。

{
    post_id: 45,
    // etcera for minute by minute changes
    time: ISODate()
}

post_id(またはむしろ)を使用_idして、作成したいグラフを照会します。MongoDB は水平方向のスケーリングに優れているため、ここでそれを最大限に活用できます。

于 2012-12-08T20:37:14.357 に答える