Mit Artikeln arbeiten:. NET - Amazon-DynamoDB

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Mit Artikeln arbeiten:. NET

Sie können die AWS SDK for .NET Low-Level-Methode verwenden, API um typische Erstellungs-, Lese-, Aktualisierungs- und Löschvorgänge (CRUD) für ein Element in einer Tabelle durchzuführen. Im Folgenden finden Sie die häufigsten Schritte, die Sie befolgen, um CRUD Datenoperationen mit dem durchzuführen. NETniedriges NiveauAPI:

  1. Erstellen einer Instance der AmazonDynamoDBClient-Klasse (Client).

  2. Geben Sie die für die Operation spezifischen, erforderlichen Parameter in einem entsprechenden Anforderungsobjekt an.

    Verwenden Sie z. B. das PutItemRequest-Anforderungsobjekt zum Hochladen eines Elements und das GetItemRequest-Anforderungsobjekt, wenn Sie ein vorhandenes Element abrufen.

    Mit dem Anforderungsobjekt können Sie sowohl die erforderlichen als auch die optionalen Parameter angeben.

  3. Führen Sie die vom Client bereitgestellte, geeignete Methode aus, indem Sie das Anforderungsobjekt, das Sie im vorhergehenden Schritt erstellt haben, übergeben.

    Der AmazonDynamoDBClient Client stelltPutItem, GetItemUpdateItem, und DeleteItem Methoden für die CRUD Operationen bereit.

Einfügen eines Elements

Mit der PutItem-Methode wird ein Element in eine Tabelle hochgeladen. Wenn das Element bereits vorhanden ist, wird das ganze Element ersetzt.

Anmerkung

Anstatt das gesamte Element zu ersetzen und nur spezifische Attribute zu aktualisieren, können Sie die Methode UpdateItem verwenden. Weitere Informationen finden Sie unter Aktualisieren eines Elements.

Im Folgenden werden die Schritte zum Hochladen eines Elements mithilfe der Low-Level-Methode beschrieben. NETSDKAPI:

  1. Erstellen Sie eine Instance der AmazonDynamoDBClient-Klasse.

  2. Stellen Sie die erforderlichen Parameter bereit, in dem Sie eine Instance der PutItemRequest-Klasse erstellen.

    Um für ein Element eine PUT-Operation auszuführen, müssen Sie den Tabellennamen und das Element angeben.

  3. Führen Sie die PutItem-Methode aus, indem Sie das PutItemRequest-Objekt bereitstellen, das Sie im vorherigen Schritt erstellt haben.

Im folgenden C#-Codebeispiel werden die vorherigen Schritte veranschaulicht. Das Beispiel lädt ein Element in die ProductCatalog-Tabelle hoch.

Beispiel
AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string tableName = "ProductCatalog"; var request = new PutItemRequest { TableName = tableName, Item = new Dictionary<string, AttributeValue>() { { "Id", new AttributeValue { N = "201" }}, { "Title", new AttributeValue { S = "Book 201 Title" }}, { "ISBN", new AttributeValue { S = "11-11-11-11" }}, { "Price", new AttributeValue { S = "20.00" }}, { "Authors", new AttributeValue { SS = new List<string>{"Author1", "Author2"} } } } }; client.PutItem(request);

Im vorherigen Beispiel laden Sie ein Buchelement mit den Attributen Id, Title, ISBN und Authors hoch. Beachten Sie, dass Id ein Attribut vom Typ Zahl ist. Alle anderen Attribute sind vom Typ Zeichenfolge. Autoren ist eine String-Einstellung.

Angeben eines optionalen Parameters

Sie können mit dem PutItemRequest-Objekt auch optionale Parameter angeben, wie im folgenden C#-Beispiel dargestellt. Das Beispiel gibt die folgenden optionalen Parameter an:

  • ExpressionAttributeNames,ExpressionAttributeValues, und ConditionExpression geben Sie an, dass das Element nur ersetzt werden kann, wenn das vorhandene Element das ISBN Attribut mit einem bestimmten Wert hat.

  • Mit dem Parameter ReturnValues wird das alte Element in der Antwort angefordert.

Beispiel
var request = new PutItemRequest { TableName = tableName, Item = new Dictionary<string, AttributeValue>() { { "Id", new AttributeValue { N = "104" }}, { "Title", new AttributeValue { S = "Book 104 Title" }}, { "ISBN", new AttributeValue { S = "444-4444444444" }}, { "Authors", new AttributeValue { SS = new List<string>{"Author3"}}} }, // Optional parameters. ExpressionAttributeNames = new Dictionary<string,string>() { {"#I", "ISBN"} }, ExpressionAttributeValues = new Dictionary<string, AttributeValue>() { {":isbn",new AttributeValue {S = "444-4444444444"}} }, ConditionExpression = "#I = :isbn" }; var response = client.PutItem(request);

Weitere Informationen finden Sie unter PutItem.

Abrufen eines Elements

Die GetItem-Methode ruft ein Element ab.

Anmerkung

Um mehrere Elemente abzurufen, können Sie die BatchGetItem-Methode verwenden. Weitere Informationen finden Sie unter Batch Get: Abrufen mehrerer Elemente.

Im Folgenden werden die Schritte zum Abrufen eines vorhandenen Elements mithilfe der Low-Level-Methode beschrieben AWS SDK for .NET API.

  1. Erstellen Sie eine Instance der AmazonDynamoDBClient-Klasse.

  2. Stellen Sie die erforderlichen Parameter bereit, in dem Sie eine Instance der GetItemRequest-Klasse erstellen.

    Zum Abrufen eines Elements müssen Sie den Tabellennamen und den Primärschlüssel des Elements angeben.

  3. Führen Sie die GetItem-Methode aus, indem Sie das GetItemRequest-Objekt bereitstellen, das Sie im vorherigen Schritt erstellt haben.

Im folgenden C#-Codebeispiel werden die vorherigen Schritte veranschaulicht. Das Beispiel ruft ein Objekt aus der ProductCatalog-Tabelle ab.

AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string tableName = "ProductCatalog"; var request = new GetItemRequest { TableName = tableName, Key = new Dictionary<string,AttributeValue>() { { "Id", new AttributeValue { N = "202" } } }, }; var response = client.GetItem(request); // Check the response. var result = response.GetItemResult; var attributeMap = result.Item; // Attribute list in the response.

Angeben eines optionalen Parameters

Sie können mit dem GetItemRequest-Objekt auch optionale Parameter angeben, wie im folgenden C#-Beispiel dargestellt. Das Beispiel gibt die folgenden optionalen Parameter an:

  • ProjectionExpression Parameter, um die abzurufenden Attribute anzugeben.

  • ConsistentRead Parameter zum Ausführen eines Strongly-Consistent-Lesevorgangs. Weitere Informationen zur Lesekonsistenz finden Sie unter DynamoDB-Lesekonsistenz.

Beispiel
AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string tableName = "ProductCatalog"; var request = new GetItemRequest { TableName = tableName, Key = new Dictionary<string,AttributeValue>() { { "Id", new AttributeValue { N = "202" } } }, // Optional parameters. ProjectionExpression = "Id, ISBN, Title, Authors", ConsistentRead = true }; var response = client.GetItem(request); // Check the response. var result = response.GetItemResult; var attributeMap = result.Item;

Weitere Informationen finden Sie unter GetItem.

Aktualisieren eines Elements

Mit der UpdateItem-Methode wird ein bestehendes Element aktualisiert, wenn es vorhanden ist. Sie können die UpdateItem-Operation verwenden, um vorhandene Attributwerte zu aktualisieren, der vorhandenen Sammlung neue Attribute hinzuzufügen oder Attribute aus der vorhandenen Sammlung zu löschen. Wenn das Element, das den bestimmten Primärschlüssel besitzt, nicht gefunden wird, wird ein neues Element hinzugefügt.

Die UpdateItem-Operation verwendet folgende Leitlinien:

  • Wenn das Element nicht vorhanden ist, fügt UpdateItem ein neues Element hinzu, indem der in der Eingabe angegebene Primärschlüssel genutzt wird.

  • Wenn das Element vorhanden ist, wendet UpdateItem die Aktualisierung wie folgt an:

    • Ersetzt die vorhandenen Attributwerte durch die Werte in der Aktualisierung.

    • Wenn das Attribut, das Sie in der Eingabe angegeben haben, nicht vorhanden ist, wird dem Element ein neues Attribut hinzugefügt.

    • Wenn das Eingabeattribut Null ist, wird das Attribut gelöscht, sofern es vorhanden ist.

    • Wenn Sie ADD für die Aktion Action verwenden, können Sie einem vorhandenen Satz (Zeichenfolgen- oder Zahlensatz) Werte hinzufügen oder mathematisch addieren (unter Verwendung einer positiven Zahl) bzw. von dem vorhandenen numerischen Attributwert subtrahieren (unter Verwendung einer negativen Zahl).

Anmerkung

Die PutItem-Operation kann auch eine Aktualisierung durchführen. Weitere Informationen finden Sie unter Einfügen eines Elements. Wenn Sie z. B. PutItem aufrufen, um ein Element hochzuladen, und der Primärschlüssel vorhanden ist, ersetzt die PutItem-Operation das gesamte Element. Wenn das vorhandene Element Attribute entiert und diese Attribute nicht in der Eingabe angegeben sind, werden diese Attribute vom PutItem-Vorgang gelöscht. Jedoch aktualisiert UpdateItem lediglich die angegebenen Eingabeattribute. Alle anderen vorhandenen Attribute dieses Elements bleiben unverändert.

Im Folgenden werden die Schritte beschrieben, um ein vorhandenes Element mithilfe der Low-Level-Version zu aktualisieren. NETSDKAPI:

  1. Erstellen Sie eine Instance der AmazonDynamoDBClient-Klasse.

  2. Stellen Sie die erforderlichen Parameter bereit, in dem Sie eine Instance der UpdateItemRequest-Klasse erstellen.

    Dies ist das Anforderungsobjekt, in dem Sie alle Aktualisierungen beschreiben, z. B. Attribute hinzufügen, vorhandene Attribute aktualisieren oder Attribute löschen. Um ein vorhandenes Attribut zu löschen, geben Sie den Attributnamen mit Nullwert an.

  3. Führen Sie die UpdateItem-Methode aus, indem Sie das UpdateItemRequest-Objekt bereitstellen, das Sie im vorherigen Schritt erstellt haben.

Im folgenden C#-Codebeispiel werden die vorherigen Schritte veranschaulicht. Im Beispiel wird ein Buchelement in der ProductCatalog-Tabelle aktualisiert. Es fügt der Authors-Auflistung einen neuen Autor hinzu und löscht das vorhandene ISBN-Attribut. Darüber hinaus wird auch der Preis um eins gesenkt.

AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string tableName = "ProductCatalog"; var request = new UpdateItemRequest { TableName = tableName, Key = new Dictionary<string,AttributeValue>() { { "Id", new AttributeValue { N = "202" } } }, ExpressionAttributeNames = new Dictionary<string,string>() { {"#A", "Authors"}, {"#P", "Price"}, {"#NA", "NewAttribute"}, {"#I", "ISBN"} }, ExpressionAttributeValues = new Dictionary<string, AttributeValue>() { {":auth",new AttributeValue { SS = {"Author YY","Author ZZ"}}}, {":p",new AttributeValue {N = "1"}}, {":newattr",new AttributeValue {S = "someValue"}}, }, // This expression does the following: // 1) Adds two new authors to the list // 2) Reduces the price // 3) Adds a new attribute to the item // 4) Removes the ISBN attribute from the item UpdateExpression = "ADD #A :auth SET #P = #P - :p, #NA = :newattr REMOVE #I" }; var response = client.UpdateItem(request);

Angeben eines optionalen Parameters

Sie können auch optionale Parameter mithilfe des UpdateItemRequest-Objekts bereitstellen, wie im folgenden C#-Beispiel gezeigt. Folgende optionale Parameter werden angegeben:

  • ExpressionAttributeValues und ConditionExpression, um festzulegen, dass der Preis nur aktualisiert werden kann, wenn er momentan 20,00 beträgt.

  • Der Parameter ReturnValues zum Anfordern des aktualisierten Elements in der Antwort.

Beispiel
AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string tableName = "ProductCatalog"; var request = new UpdateItemRequest { Key = new Dictionary<string,AttributeValue>() { { "Id", new AttributeValue { N = "202" } } }, // Update price only if the current price is 20.00. ExpressionAttributeNames = new Dictionary<string,string>() { {"#P", "Price"} }, ExpressionAttributeValues = new Dictionary<string, AttributeValue>() { {":newprice",new AttributeValue {N = "22"}}, {":currprice",new AttributeValue {N = "20"}} }, UpdateExpression = "SET #P = :newprice", ConditionExpression = "#P = :currprice", TableName = tableName, ReturnValues = "ALL_NEW" // Return all the attributes of the updated item. }; var response = client.UpdateItem(request);

Weitere Informationen finden Sie unter UpdateItem.

Unteilbarer Zähler

Sie können updateItem verwenden, um einen unteilbaren Zähler zu implementieren, mit dem der Wert eines bestehenden Attributs erhöht oder verringert wird, ohne andere Schreibanforderungen zu beeinflussen. Um einen Atomzähler zu aktualisieren, verwenden Sie updateItem mit einem Attribut vom Typ Number im Parameter UpdateExpression und ADD als Action.

Das folgende Codebeispiel zeigt diesen Vorgang und erhöht das Attribut Quantity um eins.

AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string tableName = "ProductCatalog"; var request = new UpdateItemRequest { Key = new Dictionary<string, AttributeValue>() { { "Id", new AttributeValue { N = "121" } } }, ExpressionAttributeNames = new Dictionary<string, string>() { {"#Q", "Quantity"} }, ExpressionAttributeValues = new Dictionary<string, AttributeValue>() { {":incr",new AttributeValue {N = "1"}} }, UpdateExpression = "SET #Q = #Q + :incr", TableName = tableName }; var response = client.UpdateItem(request);

Löschen eines Elements

Die DeleteItem-Methode löscht ein Element aus einer Tabelle.

Im Folgenden werden die Schritte zum Löschen eines Elements mithilfe der Low-Level-Methode beschrieben. NETSDKAPI.

  1. Erstellen Sie eine Instance der AmazonDynamoDBClient-Klasse.

  2. Stellen Sie die erforderlichen Parameter bereit, in dem Sie eine Instance der DeleteItemRequest-Klasse erstellen.

    Zum Löschen eines Elements sind der Tabellenname und der Primärschlüssel des Elements erforderlich.

  3. Führen Sie die DeleteItem-Methode aus, indem Sie das DeleteItemRequest-Objekt bereitstellen, das Sie im vorherigen Schritt erstellt haben.

Beispiel
AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string tableName = "ProductCatalog"; var request = new DeleteItemRequest { TableName = tableName, Key = new Dictionary<string,AttributeValue>() { { "Id", new AttributeValue { N = "201" } } }, }; var response = client.DeleteItem(request);

Angeben eines optionalen Parameters

Sie können mit dem DeleteItemRequest-Objekt auch optionale Parameter angeben, wie im folgenden C#-Beispiel dargestellt. Folgende optionale Parameter werden angegeben:

  • ExpressionAttributeValuesund ConditionExpression um anzugeben, dass das Buchelement nur gelöscht werden kann, wenn es nicht mehr veröffentlicht wird (der InPublication Attributwert ist falsch).

  • Der Parameter ReturnValues zum Anfordern des gelöschten Elements in der Antwort.

Beispiel
var request = new DeleteItemRequest { TableName = tableName, Key = new Dictionary<string,AttributeValue>() { { "Id", new AttributeValue { N = "201" } } }, // Optional parameters. ReturnValues = "ALL_OLD", ExpressionAttributeNames = new Dictionary<string, string>() { {"#IP", "InPublication"} }, ExpressionAttributeValues = new Dictionary<string, AttributeValue>() { {":inpub",new AttributeValue {BOOL = false}} }, ConditionExpression = "#IP = :inpub" }; var response = client.DeleteItem(request);

Weitere Informationen finden Sie unter DeleteItem.

Batch Write: Einfügen und Löschen mehrerer Elemente

Batch Write bezieht sich auf das Einfügen und Löschen mehrerer Elemente in einem Batch. Die BatchWriteItem-Methode ermöglicht Ihnen das Einfügen und Löschen von mehreren Elementen aus einer oder mehreren Tabellen anhand eines einzigen Aufrufs. Im Folgenden werden die Schritte zum Abrufen mehrerer Elemente mithilfe der Low-Level-Methode beschrieben. NETSDKAPI.

  1. Erstellen Sie eine Instance der AmazonDynamoDBClient-Klasse.

  2. Beschreiben Sie alle Put- und Delete-Operationen, indem Sie eine Instance der BatchWriteItemRequest-Klasse erstellen.

  3. Führen Sie die BatchWriteItem-Methode aus, indem Sie das BatchWriteItemRequest-Objekt bereitstellen, das Sie im vorherigen Schritt erstellt haben.

  4. Verarbeiten Sie die Antwort. Überprüfen Sie, ob in der Antwort nicht verarbeitete Anforderungselemente zurückgegeben wurden. Dies kann der Fall sein, wenn Sie das Kontingent für den bereitgestellten Durchsatz erreichen oder ein anderer vorübergehender Fehler auftritt. Außerdem begrenzt DynamoDB die Anforderungsgröße und die Anzahl der Vorgänge, die Sie in einer Anforderung angeben können. Wenn Sie diese Limits überschreiten, wird die Anforderung von DynamoDB abgelehnt. Weitere Informationen finden Sie unter BatchWriteItem.

Im folgenden C#-Codebeispiel werden die vorherigen Schritte veranschaulicht. Das Beispiel erstellt eine BatchWriteItemRequest zum Ausführen der folgenden Schreibvorgänge:

  • Einfügen eines Elements in die Forum-Tabelle

  • Einfügen und Löschen eines Elements in der Thread-Tabelle.

Der Code führt BatchWriteItem aus, um einen Batchvorgang auszuführen.

AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string table1Name = "Forum"; string table2Name = "Thread"; var request = new BatchWriteItemRequest { RequestItems = new Dictionary<string, List<WriteRequest>> { { table1Name, new List<WriteRequest> { new WriteRequest { PutRequest = new PutRequest { Item = new Dictionary<string,AttributeValue> { { "Name", new AttributeValue { S = "Amazon S3 forum" } }, { "Threads", new AttributeValue { N = "0" }} } } } } } , { table2Name, new List<WriteRequest> { new WriteRequest { PutRequest = new PutRequest { Item = new Dictionary<string,AttributeValue> { { "ForumName", new AttributeValue { S = "Amazon S3 forum" } }, { "Subject", new AttributeValue { S = "My sample question" } }, { "Message", new AttributeValue { S = "Message Text." } }, { "KeywordTags", new AttributeValue { SS = new List<string> { "Amazon S3", "Bucket" } } } } } }, new WriteRequest { DeleteRequest = new DeleteRequest { Key = new Dictionary<string,AttributeValue>() { { "ForumName", new AttributeValue { S = "Some forum name" } }, { "Subject", new AttributeValue { S = "Some subject" } } } } } } } } }; response = client.BatchWriteItem(request);

Ein funktionierendes Beispiel finden Sie unter Beispiel: Batch-Operationen mit dem AWS SDK for .NET Low-Level API.

Batch Get: Abrufen mehrerer Elemente

Die BatchGetItem-Methode ermöglicht Ihnen das Abrufen mehrerer Elemente aus einer oder mehreren Tabellen.

Anmerkung

Um ein einzelnes Element abzurufen, können Sie die GetItem-Methode verwenden.

Im Folgenden werden die Schritte zum Abrufen mehrerer Elemente mithilfe der Low-Level-Methode beschrieben AWS SDK for .NET API.

  1. Erstellen Sie eine Instance der AmazonDynamoDBClient-Klasse.

  2. Stellen Sie die erforderlichen Parameter bereit, in dem Sie eine Instance der BatchGetItemRequest-Klasse erstellen.

    Zum Abrufen mehrerer Elemente, sind der Tabellenname und eine Liste der Primärschlüsselwerte erforderlich.

  3. Führen Sie die BatchGetItem-Methode aus, indem Sie das BatchGetItemRequest-Objekt bereitstellen, das Sie im vorherigen Schritt erstellt haben.

  4. Verarbeiten Sie die Antwort. Überprüfen Sie, ob nicht verarbeitete Schlüssel vorhanden sind. Dies kann der Fall sein, wenn Sie das Kontingent für den bereitgestellten Durchsatz erreichen oder ein anderer vorübergehender Fehler auftritt.

Im folgenden C#-Codebeispiel werden die vorherigen Schritte veranschaulicht. Das Beispiel ruft Elemente aus zwei Tabellen, Forum und Thread, ab. Die Anforderung gibt zwei Elemente in der Tabelle Forum und drei Elemente in der Tabelle Thread an. Die Antwort enthält Elemente aus beiden Tabellen. Der Code zeigt, wie Sie die Antwort verarbeiten können.

AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string table1Name = "Forum"; string table2Name = "Thread"; var request = new BatchGetItemRequest { RequestItems = new Dictionary<string, KeysAndAttributes>() { { table1Name, new KeysAndAttributes { Keys = new List<Dictionary<string, AttributeValue>>() { new Dictionary<string, AttributeValue>() { { "Name", new AttributeValue { S = "DynamoDB" } } }, new Dictionary<string, AttributeValue>() { { "Name", new AttributeValue { S = "Amazon S3" } } } } } }, { table2Name, new KeysAndAttributes { Keys = new List<Dictionary<string, AttributeValue>>() { new Dictionary<string, AttributeValue>() { { "ForumName", new AttributeValue { S = "DynamoDB" } }, { "Subject", new AttributeValue { S = "DynamoDB Thread 1" } } }, new Dictionary<string, AttributeValue>() { { "ForumName", new AttributeValue { S = "DynamoDB" } }, { "Subject", new AttributeValue { S = "DynamoDB Thread 2" } } }, new Dictionary<string, AttributeValue>() { { "ForumName", new AttributeValue { S = "Amazon S3" } }, { "Subject", new AttributeValue { S = "Amazon S3 Thread 1" } } } } } } } }; var response = client.BatchGetItem(request); // Check the response. var result = response.BatchGetItemResult; var responses = result.Responses; // The attribute list in the response. var table1Results = responses[table1Name]; Console.WriteLine("Items in table {0}" + table1Name); foreach (var item1 in table1Results.Items) { PrintItem(item1); } var table2Results = responses[table2Name]; Console.WriteLine("Items in table {1}" + table2Name); foreach (var item2 in table2Results.Items) { PrintItem(item2); } // Any unprocessed keys? could happen if you exceed ProvisionedThroughput or some other error. Dictionary<string, KeysAndAttributes> unprocessedKeys = result.UnprocessedKeys; foreach (KeyValuePair<string, KeysAndAttributes> pair in unprocessedKeys) { Console.WriteLine(pair.Key, pair.Value); }

Angeben eines optionalen Parameters

Sie können mit dem BatchGetItemRequest-Objekt auch optionale Parameter angeben, wie im folgenden C#-Beispiel dargestellt. Im Beispiel werden zwei Elemente aus der Forum Tabelle abgerufen. Folgende optionale Parameter werden angegeben:

  • ProjectionExpression Parameter, um die abzurufenden Attribute anzugeben.

Beispiel
AmazonDynamoDBClient client = new AmazonDynamoDBClient(); string table1Name = "Forum"; var request = new BatchGetItemRequest { RequestItems = new Dictionary<string, KeysAndAttributes>() { { table1Name, new KeysAndAttributes { Keys = new List<Dictionary<string, AttributeValue>>() { new Dictionary<string, AttributeValue>() { { "Name", new AttributeValue { S = "DynamoDB" } } }, new Dictionary<string, AttributeValue>() { { "Name", new AttributeValue { S = "Amazon S3" } } } } }, // Optional - name of an attribute to retrieve. ProjectionExpression = "Title" } } }; var response = client.BatchGetItem(request);

Weitere Informationen finden Sie unter BatchGetItem.