MongoDBに接続するREST APIをNodeJSで作成し、MapReduceを実行して別のコレクションに結果を格納します。MongoDB + NodeJS:MapReduceまたは手動計算
コードはかなりシンプルです。それはユーザIDを取り、何らかのアルゴリズムを使用してこのユーザに関係する他のすべてのユーザを取得し、次にそれぞれについて、類似率を計算する。テストデータベースにユーザーが50,000人いると仮定すると、このMapReduceは約200〜800msかかります。それは私にとって理想的です。これが有名になり、このような何百もの同時リクエストがあった場合、私はそれがもうこれ以上ないと確信しています。私は、必要に応じてMongoDBを断片化する必要があるかもしれないことを理解しています。
もう1つのシナリオは、通常のfind()を実行し、カーソルをループして同じロジックを実行することです。 MapReduceと同じ時間がかかります。しかし、私はちょうどクライアントの側(NodeJS)に計算の重い吊り上げを入れて、MapReduceのようなサーバー側では試してみることを考えました。このアイデアにもメリットはありますか?私はこの方法で、ロードバランサの背後にAPIを水平にスケールすることができると思いました。