Je ne sais pas si l'exécution à l'intérieur est monothread, mais s'il s'agit d'un environnement de production, il est préférable de ne pas accéder directement aux résultats de mapReduce à chaque fois. En fonction de la taille des données, cela prendra quand même. un certain laps de temps. Nos données se comptent en dizaines de millions et chaque exécution de mapReduce prend environ 5 à 6 secondes. Heureusement, notre application n'est pas très en temps réel. Donc, fondamentalement, les données sont mises en cache pendant 2 heures, puis mapReduce est exécuté pour obtenir les derniers résultats.
J'ai fait des choses similaires avant d'utiliser MapReduce. Parce que cela prenait du temps, je l'ai ensuite modifié pour utiliser une requête agrégée pour les statistiques. L'exemple spécifique est le suivant :
Il semble avoir atteint notre effet. Je viens d'utiliser une petite quantité de données 10W pour faire le test ci-dessus. Pendant le processus d'exécution, il affichera :
Parce que les données de ma simulation sont relativement simples et régulières, on peut voir que le nombre de calculs est presque deux fois supérieur au nombre de documents numérisés. Plus tard, j'ai utilisé des données aléatoires pour les tests et j'ai découvert que les résultats étaient encore pires. J'ai définitivement abandonné l'implémentation de MapReduce et j'ai changé l'utilisation d'autres implémentations.
Je ne sais pas si l'exécution à l'intérieur est monothread, mais s'il s'agit d'un environnement de production, il est préférable de ne pas accéder directement aux résultats de mapReduce à chaque fois. En fonction de la taille des données, cela prendra quand même. un certain laps de temps. Nos données se comptent en dizaines de millions et chaque exécution de mapReduce prend environ 5 à 6 secondes. Heureusement, notre application n'est pas très en temps réel. Donc, fondamentalement, les données sont mises en cache pendant 2 heures, puis mapReduce est exécuté pour obtenir les derniers résultats.
Je pense que cet article expliquera les problèmes de performances de mongodb !
http://stackoverflow.com/questions/39...
J'ai fait des choses similaires avant d'utiliser MapReduce. Parce que cela prenait du temps, je l'ai ensuite modifié pour utiliser une requête agrégée pour les statistiques. L'exemple spécifique est le suivant :
Le modèle de document de base est comme ci-dessus, j'ai indexé sur accountId et tags
Maintenant, il est nécessaire de compter les balises sous l'utilisateur. MapReduce est conçu comme suit :
Résultat :
Il semble avoir atteint notre effet. Je viens d'utiliser une petite quantité de données 10W pour faire le test ci-dessus. Pendant le processus d'exécution, il affichera :
Parce que les données de ma simulation sont relativement simples et régulières, on peut voir que le nombre de calculs est presque deux fois supérieur au nombre de documents numérisés. Plus tard, j'ai utilisé des données aléatoires pour les tests et j'ai découvert que les résultats étaient encore pires. J'ai définitivement abandonné l'implémentation de MapReduce et j'ai changé l'utilisation d'autres implémentations.