DynamoDB - Elemente abrufen
Zum Abrufen eines Elements in DynamoDB müssen Sie GetItem verwenden und den Tabellennamen und den Elementprimärschlüssel angeben. Stellen Sie sicher, dass Sie einen vollständigen Primärschlüssel einfügen, anstatt einen Teil wegzulassen.
Lassen Sie beispielsweise den Sortierschlüssel eines zusammengesetzten Schlüssels weg.
Das Verhalten von GetItem entspricht drei Standardeinstellungen:
- Es wird als eventuell konsistenter Lesevorgang ausgeführt.
- Es bietet alle Attribute.
- Der Verbrauch der Kapazitätseinheiten wird nicht detailliert angegeben.
Mit diesen Parametern können Sie das Standardverhalten von GetItem überschreiben.
Artikel abrufen
DynamoDB stellt die Zuverlässigkeit sicher, indem mehrere Kopien von Elementen auf mehreren Servern verwaltet werden. Bei jedem erfolgreichen Schreibvorgang werden diese Kopien erstellt, die Ausführung nimmt jedoch viel Zeit in Anspruch. was bedeutet schließlich konsistent. Dies bedeutet, dass Sie nach dem Schreiben eines Elements nicht sofort einen Leseversuch unternehmen können.
Sie können das standardmäßig konsistente Lesen von GetItem ändern. Die Kosten für aktuellere Daten bleiben jedoch der Verbrauch von mehr Kapazitätseinheiten. speziell doppelt so viel. Hinweis DynamoDB erreicht normalerweise die Konsistenz über jede Kopie innerhalb einer Sekunde.
Sie können die GUI-Konsole, Java oder ein anderes Tool verwenden, um diese Aufgabe auszuführen.
Abrufen von Elementen mit Java
Für die Verwendung von Java beim Abrufen von Elementen müssen eine DynamoDB-Klasseninstanz und eine Tabellenklasseninstanz erstellt und die getItem-Methode der Tabelleninstanz aufgerufen werden. Geben Sie dann den Primärschlüssel des Elements an.
Sie können das folgende Beispiel überprüfen:
DynamoDB dynamoDB = new DynamoDB(new AmazonDynamoDBClient(
new ProfileCredentialsProvider()));
Table table = dynamoDB.getTable("ProductList");
Item item = table.getItem("IDnum", 109);
In einigen Fällen müssen Sie die Parameter für diesen Vorgang angeben.
Das folgende Beispiel verwendet .withProjectionExpression und GetItemSpec für Abrufspezifikationen -
GetItemSpec spec = new GetItemSpec()
.withPrimaryKey("IDnum", 122)
.withProjectionExpression("IDnum, EmployeeName, Department")
.withConsistentRead(true);
Item item = table.getItem(spec);
System.out.println(item.toJSONPretty());
Sie können auch das folgende größere Beispiel zum besseren Verständnis überprüfen.
Note- Im folgenden Beispiel wird möglicherweise eine zuvor erstellte Datenquelle angenommen. Besorgen Sie sich vor dem Ausführen unterstützende Bibliotheken und erstellen Sie die erforderlichen Datenquellen (Tabellen mit den erforderlichen Merkmalen oder andere Quellen, auf die verwiesen wird).
In diesem Beispiel werden auch Eclipse IDE, eine AWS-Anmeldeinformationsdatei und das AWS Toolkit in einem Eclipse AWS Java-Projekt verwendet.
package com.amazonaws.codesamples.document;
import java.io.IOException
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient;
import com.amazonaws.services.dynamodbv2.document.DeleteItemOutcome;
import com.amazonaws.services.dynamodbv2.document.DynamoDB;
import com.amazonaws.services.dynamodbv2.document.Item;
import com.amazonaws.services.dynamodbv2.document.Table;
import com.amazonaws.services.dynamodbv2.document.UpdateItemOutcome;
import com.amazonaws.services.dynamodbv2.document.spec.DeleteItemSpec;
import com.amazonaws.services.dynamodbv2.document.spec.UpdateItemSpec;
import com.amazonaws.services.dynamodbv2.document.utils.NameMap;
import com.amazonaws.services.dynamodbv2.document.utils.ValueMap;
import com.amazonaws.services.dynamodbv2.model.ReturnValue;
public class GetItemOpSample {
static DynamoDB dynamoDB = new DynamoDB(new AmazonDynamoDBClient(
new ProfileCredentialsProvider()));
static String tblName = "ProductList";
public static void main(String[] args) throws IOException {
createItems();
retrieveItem();
// Execute updates
updateMultipleAttributes();
updateAddNewAttribute();
updateExistingAttributeConditionally();
// Item deletion
deleteItem();
}
private static void createItems() {
Table table = dynamoDB.getTable(tblName);
try {
Item item = new Item()
.withPrimaryKey("ID", 303)
.withString("Nomenclature", "Polymer Blaster 4000")
.withStringSet( "Manufacturers",
new HashSet<String>(Arrays.asList("XYZ Inc.", "LMNOP Inc.")))
.withNumber("Price", 50000)
.withBoolean("InProduction", true)
.withString("Category", "Laser Cutter");
table.putItem(item);
item = new Item()
.withPrimaryKey("ID", 313)
.withString("Nomenclature", "Agitatatron 2000")
.withStringSet( "Manufacturers",
new HashSet<String>(Arrays.asList("XYZ Inc,", "CDE Inc.")))
.withNumber("Price", 40000)
.withBoolean("InProduction", true)
.withString("Category", "Agitator");
table.putItem(item);
} catch (Exception e) {
System.err.println("Cannot create items.");
System.err.println(e.getMessage());
}
}
private static void retrieveItem() {
Table table = dynamoDB.getTable(tableName);
try {
Item item = table.getItem("ID", 303, "ID, Nomenclature, Manufacturers", null);
System.out.println("Displaying retrieved items...");
System.out.println(item.toJSONPretty());
} catch (Exception e) {
System.err.println("Cannot retrieve items.");
System.err.println(e.getMessage());
}
}
}