2017-07-24 5 views

Répondre

0

Pour supprimer un grand nombre d'éléments de la table, vous devez d'abord interroger ou numériser, puis supprimer les éléments à l'aide de l'opération BatchWriteItem ou DeleteItem. La recherche et BatchWriteItem est meilleure en termes de performances et de coût, donc si c'est un travail qui arrive fréquemment, il vaut mieux ajouter un index secondaire global sur l'attribut que vous devez vérifier pour la suppression. Cependant, vous devez gérer BatchWriteItem itérativement pour un grand nombre d'éléments, car la requête retournera des valeurs paginées.

Sinon vous pouvez faire un scan et DeleteItem de façon itérative.

Vérifiez this Stackoverflow question pour plus d'informations.

0

Cela vaut la peine d'essayer d'utiliser l'intégration EMR Hive avec DynamoDB. Il vous permet d'écrire des requêtes SQL sur un DynamoDB. Hive prend en charge l'instruction DELETE et Amazon ont implémenté un DynamoDB connector. Je ne suis pas sûr si cela s'intégrerait parfaitement, mais cela vaut la peine d'essayer. Here est de savoir comment travailler avec DynamoDB en utilisant EMR Hive.

Une autre option consiste à utiliser l'analyse parallèle. Obtenez simplement tous les éléments de DynamoDB qui correspondent à une expression de filtre et supprimez chacun d'entre eux. Here is how pour effectuer des analyses à l'aide du client boto.

Pour accélérer le processus, vous pouvez supprimer des éléments par lots en utilisant la méthode BatchWriteItem. Here est comment faire cela dans boto.

Notez que BatchWriteItem a des limites suivantes:

BatchWriteItem peut écrire jusqu'à 16 Mo de données, qui peuvent comprendre que jusqu'à 25 mis ou supprimer des demandes.

Gardez à l'esprit que scanne sont chers quand vous faites des analyses que vous consommez RCU pour tous les articles DynamoDB se lit comme suit dans votre table et non pour les articles qu'il renvoie. Vous avez donc besoin soit de lire les données lentement, soit de fournir une RCU très élevée pour une table.

Vous pouvez effectuer cette opération rarement, mais vous ne pouvez pas le faire dans le cadre d'une requête de serveur Web si vous disposez d'une table de taille correcte.