Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ajustements sur la procédure de reduce #333

Open
chrnin opened this issue Mar 5, 2021 · 0 comments
Open

ajustements sur la procédure de reduce #333

chrnin opened this issue Mar 5, 2021 · 0 comments
Labels
enhancement New feature or request

Comments

@chrnin
Copy link

chrnin commented Mar 5, 2021

Objectif de cette issue

Proposer une optimisation du processus de reduce pour:

  • réduire le temps de calcul du processus
  • limiter le laps de temps d'indisponibilité des données pour les data-scientists

Remarque

Une partie de ces modifications est déjà effective grace à #330

Fonctionnement actuel

La procédure lance le mapReduce par morceaux sur des chunks de la collection RawData et déverse le résultat dans autant de bases de données mongo qu'il n'y a de chunks, dans une collection nommée TemporaryCollection.

Une fois ce calcul effectué, un traitement reprend le contenu de toutes ces bases et execute une aggregation pour merge les objets calculés dans la base Features. Cela se déroule en 2 séquences:

  • renommage de l'ancienne collection Features en Features_<date> et création de la nouvelle collection avec ses indexes
  • processus de copie des données et suppression des bases supplémentaires dans la collection Features

Problème rencontré

  • La présence de 2 indexes dans la collection Features multiplie environ le temps de recopie par 2 ou 3
  • Pendant ce temps de recopie, la base disponible dans Features est incomplète (mais accessible) et les data scientists pourraient faire des requêtes partielles et être induits en erreur

Proposition

L'idée est de changer la séquence de cette façon:

  • Création d'une collection Features_next sans indexes
  • processus de copie des données à destination de Features_next et suppression des bases temporaires
  • création des indexes dans Features_next
  • renommage de Features en Features_<date> puis renommage de Features_next en Features

De cette façon la collection Features reste toujours complète et les indexes ne gènent pas la recopie. Il est envisagé que la création des indexes en un bloc aura un coût moindre que leur alimentation au fil de l'eau pendant la copie.

@chrnin chrnin added the enhancement New feature or request label Mar 5, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant