Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Opérations par lots à l'aide du AWS SDK for .NET modèle de persistance des objets
Écriture par lots : insertion et suppression de plusieurs éléments
Pour insérer ou supprimer plusieurs objets dans une table en une seule demande, procédez comme suit :
-
Exécutez la méthode
CreateBatchWrite
duDynamoDBContext
et créez une instance de la classeBatchWrite
. -
Spécifiez les éléments que vous souhaitez insérer ou supprimer.
-
Pour insérer un ou plusieurs éléments, utilisez la méthode
AddPutItem
ouAddPutItems
. -
Pour supprimer un ou plusieurs éléments, vous pouvez spécifier la clé primaire de l'élément ou un objet côté client qui mappe à l'élément que vous voulez supprimer. Utilisez les méthodes
AddDeleteItem
,AddDeleteItems
etAddDeleteKey
pour spécifier la liste des éléments à supprimer.
-
-
Appelez la méthode
BatchWrite.Execute
pour insérer et supprimer tous les éléments spécifiés dans la table.
Note
Lorsque vous utilisez le modèle de persistance des objets, vous pouvez spécifier un nombre quelconque d'opérations dans un lot. Notez cependant qu'Amazon DynamoDB limite le nombre d'opérations dans un lot et la taille totale du lot dans une opération par lot. Pour plus d'informations sur les limites spécifiques, consultez BatchWriteItem. S'il API détecte que votre demande d'écriture par lots a dépassé le nombre de demandes d'écriture autorisé ou dépassé la taille de HTTP charge utile maximale autorisée, il divise le lot en plusieurs lots plus petits. De plus, si une réponse à une écriture par lots renvoie des éléments non traités, elle envoie API automatiquement une autre demande de lot avec ces éléments non traités.
Supposons que vous ayez défini une classe Book
C# qui mappe à la table ProductCatalog
dans DynamoDB. L'exemple de code C# suivant utilise l'objet BatchWrite
pour charger deux éléments et en supprimer un dans la table ProductCatalog
.
Exemple
DynamoDBContext context = new DynamoDBContext(client); var bookBatch = context.CreateBatchWrite<Book>(); // 1. Specify two books to add. Book book1 = new Book { Id = 902, ISBN = "902-11-11-1111", ProductCategory = "Book", Title = "My book3 in batch write" }; Book book2 = new Book { Id = 903, ISBN = "903-11-11-1111", ProductCategory = "Book", Title = "My book4 in batch write" }; bookBatch.AddPutItems(new List<Book> { book1, book2 }); // 2. Specify one book to delete. bookBatch.AddDeleteKey(111); bookBatch.Execute();
Pour insérer ou supprimer des objets dans plusieurs tables, procédez comme suit :
-
Créez une instance de la classe
BatchWrite
pour chaque type, et spécifiez les éléments que vous souhaitez insérer ou supprimer, comme décrit dans la section précédente. -
Créez une instance de
MultiTableBatchWrite
en utilisant l'une des méthodes suivantes :-
Appelez la méthode
Combine
sur un des objetsBatchWrite
que vous avez créés à l'étape précédente. -
Créez une instance du type
MultiTableBatchWrite
en fournissant une liste d'objetsBatchWrite
. -
Exécutez la méthode
CreateMultiTableBatchWrite
deDynamoDBContext
et transmettez votre liste d'objetsBatchWrite
.
-
-
Appelez la méthode
Execute
deMultiTableBatchWrite
qui effectue les opérations d'insertion et de suppression spécifiées sur différentes tables.
Supposons que vous ayez défini des classes C# Forum
et Thread
qui mappent aux tables Forum
et Thread
dans DynamoDB. Supposons également que la gestion des versions est activée pour la classe Thread
. Étant donné que la gestion des versions n'est pas prise en charge lors de l'utilisation d'opérations par lot, vous devez désactiver explicitement la gestion des versions comme illustré dans l'exemple de code C# suivant. L'exemple utilise l'objet MultiTableBatchWrite
pour effectuer une mise à jour sur plusieurs tables.
Exemple
DynamoDBContext context = new DynamoDBContext(client); // Create BatchWrite objects for each of the Forum and Thread classes. var forumBatch = context.CreateBatchWrite<Forum>(); DynamoDBOperationConfig config = new DynamoDBOperationConfig(); config.SkipVersionCheck = true; var threadBatch = context.CreateBatchWrite<Thread>(config); // 1. New Forum item. Forum newForum = new Forum { Name = "Test BatchWrite Forum", Threads = 0 }; forumBatch.AddPutItem(newForum); // 2. Specify a forum to delete by specifying its primary key. forumBatch.AddDeleteKey("Some forum"); // 3. New Thread item. Thread newThread = new Thread { ForumName = "Amazon S3 forum", Subject = "My sample question", KeywordTags = new List<string> { "Amazon S3", "Bucket" }, Message = "Message text" }; threadBatch.AddPutItem(newThread); // Now run multi-table batch write. var superBatch = new MultiTableBatchWrite(forumBatch, threadBatch); superBatch.Execute();
Pour obtenir un exemple pratique, consultez Exemple : opération d'écriture par lots à l'aide du AWS SDK for .NET modèle de persistance des objets.
Note
Le API lot DynamoDB limite le nombre d'écritures dans un lot et limite également la taille du lot. Pour plus d'informations, consultez BatchWriteItem. Lorsque vous utilisez le. NETmodèle de persistance des objetsAPI, vous pouvez spécifier un nombre illimité d'opérations. Toutefois, si le nombre d'opérations d'un lot ou sa taille dépassent la limite, le. NETAPIdivise la demande d'écriture par lots en lots plus petits et envoie plusieurs demandes d'écriture par lots à DynamoDB.
Obtention par lots : obtention de plusieurs éléments
Pour insérer ou supprimer plusieurs éléments d'une table en une seule demande, procédez comme suit :
-
Créez une instance de la classe
CreateBatchGet
. -
Spécifiez une liste de clés primaires à extraire.
-
Appelez la méthode
Execute
. La réponse renvoie les éléments dans la propriétéResults
.
L'exemple de code C# suivant extrait trois éléments de la table ProductCatalog
. Les éléments dans le résultat ne sont pas nécessairement dans l'ordre dans lequel vous avez spécifié les clés primaires.
Exemple
DynamoDBContext context = new DynamoDBContext(client); var bookBatch = context.CreateBatchGet<ProductCatalog>(); bookBatch.AddKey(101); bookBatch.AddKey(102); bookBatch.AddKey(103); bookBatch.Execute(); // Process result. Console.WriteLine(bookBatch.Results.Count); Book book1 = bookBatch.Results[0]; Book book2 = bookBatch.Results[1]; Book book3 = bookBatch.Results[2];
Pour extraire des objets de plusieurs tables, procédez comme suit :
-
Pour chaque type, créez une instance du type
CreateBatchGet
et fournissez les valeurs de clé primaire que vous souhaitez extraire de chaque table. -
Créez une instance de la classe
MultiTableBatchGet
en utilisant l'une des méthodes suivantes :-
Appelez la méthode
Combine
sur un des objetsBatchGet
que vous avez créés à l'étape précédente. -
Créez une instance du type
MultiBatchGet
en fournissant une liste d'objetsBatchGet
. -
Exécutez la méthode
CreateMultiTableBatchGet
deDynamoDBContext
et transmettez votre liste d'objetsBatchGet
.
-
-
Appelez la méthode
Execute
deMultiTableBatchGet
qui renvoie les résultats typés dans les objetsBatchGet
individuels.
L'exemple de code C# suivant extrait plusieurs éléments des tables Order
et OrderDetail
à l'aide de la méthode CreateBatchGet
.
Exemple
var orderBatch = context.CreateBatchGet<Order>(); orderBatch.AddKey(101); orderBatch.AddKey(102); var orderDetailBatch = context.CreateBatchGet<OrderDetail>(); orderDetailBatch.AddKey(101, "P1"); orderDetailBatch.AddKey(101, "P2"); orderDetailBatch.AddKey(102, "P3"); orderDetailBatch.AddKey(102, "P1"); var orderAndDetailSuperBatch = orderBatch.Combine(orderDetailBatch); orderAndDetailSuperBatch.Execute(); Console.WriteLine(orderBatch.Results.Count); Console.WriteLine(orderDetailBatch.Results.Count); Order order1 = orderBatch.Results[0]; Order order2 = orderBatch.Results[1]; OrderDetail orderDetail1 = orderDetailBatch.Results[0];