Maison > Questions et réponses > le corps du texte
mongodb一个collection里存了日志,现在要进行统计分析。
因为是记录日志,所以经常插入信息,也就没有索引。但是分析查表的时候没有索引又特别慢。想问下有没有什么好的方法。暂时2000W数据量。
巴扎黑2017-05-02 09:22:46
De manière générale, les index ne devraient pas avoir un impact très évident sur les performances d'écriture. Bien sûr, si vous devez ajouter beaucoup d'index, c'est une autre affaire. Si vous ne l'avez jamais essayé auparavant, il est recommandé de l'essayer d'abord pour voir combien d'effets secondaires l'indice dont vous avez besoin entraîne et s'il se situe dans la plage acceptable. Si c'est le cas, c'est super, problème résolu. Si cela n'est pas acceptable, vous pouvez envisager les deux options suivantes :
Utilisez le partage pour la transformation.
Vous devriez déjà savoir ce qu'est le sharding, pas besoin d'expliquer davantage. Le problème posé par cette solution est évidemment que le nombre de serveurs va augmenter considérablement, ce qui est aussi le résultat inévitable de l'expansion horizontale. À long terme, si votre entreprise avance, c’est la voie que vous devez emprunter, alors planifiez à l’avance.
Créez différents index sur différents points de jeu de réplication
Si vous utilisez toujours un seul nœud, il est recommandé de mettre à niveau vers un jeu de réplicas dès que possible. Il existe de nombreux cas où une défaillance matérielle d’un seul nœud entraîne la perte de données et ne peut pas être récupérée. N’attendez pas que cela se produise pour le regretter. Dans le cadre des jeux de réplicas, chaque résultat peut être indexé indépendamment.
Arrêter le nœud
Supprimez la configuration du jeu de réplicas et démarrez avec différents ports
Construisez l'index dont vous avez besoin sur ce nœud
Redémarrer avec la configuration d'origine
Il convient de noter que le jeu de réplicas doit encore terminer toutes les opérations d'écriture sur le nœud principal, donc un trop grand nombre d'index peut toujours causer des problèmes. Tout reste à tester par vous-même pour tirer des conclusions.
phpcn_u15822017-05-02 09:22:46
Soit ajoutez un index, soit passez à elasticsearch ou hbase. Il est recommandé de passer à elasticsearch dès que possible