Je comprends que l'analyse DynamoDB n'est pas recommandée et constitue une mauvaise pratique.

Disons que j'ai un site Web de commande de nourriture et que je veux faire une analyse quotidienne de tous les utilisateurs pour savoir qui n'a pas commandé de nourriture la semaine dernière afin que je puisse leur envoyer un e-mail (juste un exemple).

Cela entraînerait une demande très forte sur la base de données, en particulier avec une large base d'utilisateurs.

Existe-t-il une alternative à ces analyses programmées qui me manque? Ou dans ce scénario, une analyse est-elle le meilleur outil pour le travail?

2
Toby Cannon 21 févr. 2021 à 14:46

1 réponse

Meilleure réponse

Il existe de nombreuses réponses possibles à cette question. Comme si souvent tout cela commence par la simple vérité que la meilleure façon de faire quelque chose comme ça, dépend des spécificités réelles et de ce pour quoi vous essayez d'optimiser (coût, latence, durée, etc.) .

Comme cela semble être une chose «une fois par semaine», je suppose que la latence et la durée du «travail» ne figurent pas en haut de la liste des priorités, mais le coût pourrait l'être.

La prochaine chose importante à considérer est la complexité de la mise en œuvre. Par exemple: si votre service ne compte que 100 utilisateurs, je ne me soucierais d'aucune des solutions les plus complexes et ferais simplement une analyse. Mais si votre service compte des millions d'utilisateurs, ce n'est probablement plus une bonne idée.

Aux fins de cette réponse, je vais supposer que votre base d'utilisateurs est devenue trop grande pour simplement faire une analyse. Dans ce scénario, je peux penser à deux solutions possibles:

  1. Ajoutez un index distinct qui vous permet de "demander" facilement la date de la dernière commande.
  2. Utiliser une sauvegarde S3

Le premier devrait être assez explicite. Comme souvent décrit dans les articles DynamoDB, vous êtes censé définir vos «modèles d'accès» et créer des index autour d'eux. L'avantage ici est que vous travaillez toujours dans DynamoDB, le contre est le coût supplémentaire.

Ma solution préférée est probablement de simplement faire des sauvegardes planifiées de la table sur S3, puis de traiter la sauvegarde ailleurs. Peut-être un outil personnalisé que vous écrivez ou un service AWS qui permet de traiter de grandes quantités de données. C'est probablement la solution la moins chère mais le temps de traitement n'est peut-être pas "ultra rapide".

J'attends avec impatience d'autres solutions à cette question intéressante.

5
Jens 21 févr. 2021 à 12:45