2017-09-28 5 views
2

DynamoDB fournit une API pour la suppression d'éléments. Dans les DeleteItemOutcome et DeleteItemResult retournés il n'y a aucun champ ou méthode pour déterminer si la clé a été trouvée et l'article a été effectivement supprimé.Comment déterminer si un élément DynamoDB a bien été supprimé?

La seule façon de savoir si l'article était bien présent et supprimé, est de demander aux attributs de produits:

new DeleteItemSpec() .withPrimaryKey("key","1") .withReturnValues(ReturnValue.ALL_OLD))

Ceci, cependant, consomme la capacité de lecture supplémentaire. Existe-t-il un moyen plus efficace de vérifier le résultat de la suppression: clé trouvée et clé supprimée/invalide?

+0

Si vous avez une clé en main, alors il est venu sans doute d'un élément DynamoDB était donc, à un point, une clé valide. Si vous avez vraiment besoin de savoir qu'il représente toujours un élément valide, vous pouvez le tester. – jarmod

Répondre

4

DeleteItemResult#getAttributes() est la manière de déterminer si une opération DeleteItem a effectivement supprimé un élément ou non.

Si vous spécifiez ReturnValue.ALL_OLD et que l'élément a été supprimé, une carte d'attributs d'élément est renvoyée, sinon la mappe vide est renvoyée. C'est la seule façon de savoir avec certitude si l'opération a réussi. Aucune autre confirmation n'est renvoyée par l'API. Gardez à l'esprit qu'une opération DeleteItemconsommera au minimum 1 unité de capacité d'écriture à chaque fois. Si l'élément supprimé est plus grand que 1 Ko, la capacité consommée sera plus 1.

Pour référence:http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/CapacityUnitCalculations.html#ItemSizeCalculations.Writes