私と各ユーザーには、毎月collection
SocialWall
独自の通知機能があります。Document
Event
私の問題は、内部のオブジェクトusers
のフィールドに基づいて新しい通知を取得したいということです。効果的に尋ねるTS 以降のすべての通知をくれますか? (例のために、同じ月内であるとしましょう)TS
Event
SocialWall
TS
ユーザーが望むものだけを提供するために、ここで行う選択肢が 1 つあります。
1) から月全体をすべて取得してSocialWall
並べ替えますPHP
か?
ユーザーの友達が増え、アプリとのさまざまなやり取りが増えると、ユーザーには多くのイベントが発生するため、その配列は非常に急速に大きくなります。TS
したがって、巨大な配列でソートおよびフィルタリングする必要があります。これは、大規模なパフォーマンスやメモリ管理には最適ではない可能性があります。
2)Map Reduce
関数を作成MongoDB
して、並べ替えおよびフィルター処理された配列を取得しますか?
私は周りを読んでmap reduce
いて、あまり効率的ではないというコメントがたくさんあります。はい、2.4
改善されましたがnew to Mongo
、Map Reduce
パフォーマンスに関してそれが実際に何を意味するのかはわかりません。したがって、遅いクエリを作成すると、Mongo サーバーにより多くの負荷がかかるのではないかと心配しています。また、最高のパフォーマンスを得るために、多くの人Hadoop
が複雑なクエリにを使用することを好むことも読んでいます。map reduce
私の問題に対する現在の最善の解決策は何ですか? 仕分けに行くべきですか、PHP
それとも作るべきMap Reduce
ですか?
最善の解決策である場合Map Reduce
、どうすればそれを実行できますか?
ドキュメントは次のようになります
SocialWall
{
_id: MongoId
userId: MongoId
Month: 1003(MonthYear)
Events:[]
}
Event
{
_id: MongoId
userId: MongoId
ts: ISODate
details:[]
likedBy:[]
comments:[]
}