Imaginez un téléchargement de fichiers sur Amazon S3 et, en cas de succès, l'emplacement du fichier (et des métadonnées) est stocké dans un enregistrement dans ElasticSearch. OK, c'est bon.Comment garder les données cohérentes? (Amazon S3 et ElasticSearch)
Mais, comment assurez-vous la cohérence des données (ACID?) Si l'une de la demande échoue ... Par exemple, si le service est ElasticSearch unavailible
- le fichier sur S3 doit être supprimé
- mais si la suppression sur S3 échoue
cela conduirait à un état incohérent. Donc, la question est de savoir comment garder ces instances en synchronisation?
Les idées sont:
- S'il y a un état incohérent et l'utilisateur demande l'enregistrement ElasticSearch et rien se trouve l'enregistrement dans S3 est supprimé. (meeh)
- Travail par lots pour rechercher des incohérences dans la base de données et les supprimer.
- Exécuter les requêtes dans une transaction dans la base de données et si l'on ne réussit pas -> rollback et une nouvelle tentative plus tard (file d'attente, emploi = Overkill?)