TryDaxHelper.java - 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.

TryDaxHelper.java

Die TryDaxHelper.java-Datei enthält Dienstprogrammmethoden.

Die getDynamoDBClient- und getDaxClient-Methoden stellen Amazon-DynamoDB- und DynamoDB-Accelerator-(DAX)-Clients bereit. Für Operationen der Steuerebene (CreateTable, DeleteTable) und Schreiboperationen verwendet das Programm den DynamoDB-Client. Wenn Sie einen DAX-Cluster-Endpunkt angeben, erstellt das Hauptprogramm einen DAX-Client für das Durchführen von Schreiboperationen (GetItem, Query, Scan).

Die anderen TryDaxHelper-Methoden (createTable, writeData, deleteTable) dienen dem Einrichten und Entfernen der DynamoDB-Tabelle und der enthaltenen Daten.

Sie können das Programm auf verschiedene Arten ändern.

  • Verwenden Sie verschiedene bereitgestellte Durchsatzeinstellungen für die Tabelle.

  • Ändern Sie die Größe jedes geschriebenen Elements (siehe stringSize-Variablen in der writeData-Methode).

  • Ändern Sie die Anzahl der GetItem-, Query- und Scan-Tests und deren Parameter.

  • Kommentieren Sie die Zeilen, die helper.CreateTable und helper.DeleteTable beinhalten (wenn Sie die Tabelle nicht bei jeder Nutzung des Programms erstellen und löschen möchten).

Anmerkung

Um dieses Programm auszuführen, können Sie Maven so einrichten, dass es den Client für das DAX-SDK SDK for Java und die AWS SDK for Java AS-Abhängigkeiten verwendet. Weitere Informationen finden Sie unter Verwenden eines Clients als Apache Maven-Abhängigkeit.

Oder Sie können sowohl den DAX-Java-Client als auch den herunterladen und AWS SDK for Java in Ihren Klassenpfad aufnehmen. Unter Java und DAX finden Sie ein Beispiel für die Einrichtung Ihrer CLASSPATH-Variablen.

import com.amazon.dax.client.dynamodbv2.AmazonDaxClientBuilder; import com.amazonaws.services.dynamodbv2.AmazonDynamoDB; import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientBuilder; 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.model.AttributeDefinition; import com.amazonaws.services.dynamodbv2.model.KeySchemaElement; import com.amazonaws.services.dynamodbv2.model.KeyType; import com.amazonaws.services.dynamodbv2.model.ProvisionedThroughput; import com.amazonaws.services.dynamodbv2.model.ScalarAttributeType; import com.amazonaws.util.EC2MetadataUtils; public class TryDaxHelper { private static final String region = EC2MetadataUtils.getEC2InstanceRegion(); DynamoDB getDynamoDBClient() { System.out.println("Creating a DynamoDB client"); AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard() .withRegion(region) .build(); return new DynamoDB(client); } DynamoDB getDaxClient(String daxEndpoint) { System.out.println("Creating a DAX client with cluster endpoint " + daxEndpoint); AmazonDaxClientBuilder daxClientBuilder = AmazonDaxClientBuilder.standard(); daxClientBuilder.withRegion(region).withEndpointConfiguration(daxEndpoint); AmazonDynamoDB client = daxClientBuilder.build(); return new DynamoDB(client); } void createTable(String tableName, DynamoDB client) { Table table = client.getTable(tableName); try { System.out.println("Attempting to create table; please wait..."); table = client.createTable(tableName, Arrays.asList( new KeySchemaElement("pk", KeyType.HASH), // Partition key new KeySchemaElement("sk", KeyType.RANGE)), // Sort key Arrays.asList( new AttributeDefinition("pk", ScalarAttributeType.N), new AttributeDefinition("sk", ScalarAttributeType.N)), new ProvisionedThroughput(10L, 10L)); table.waitForActive(); System.out.println("Successfully created table. Table status: " + table.getDescription().getTableStatus()); } catch (Exception e) { System.err.println("Unable to create table: "); e.printStackTrace(); } } void writeData(String tableName, DynamoDB client, int pkmax, int skmax) { Table table = client.getTable(tableName); System.out.println("Writing data to the table..."); int stringSize = 1000; StringBuilder sb = new StringBuilder(stringSize); for (int i = 0; i < stringSize; i++) { sb.append('X'); } String someData = sb.toString(); try { for (Integer ipk = 1; ipk <= pkmax; ipk++) { System.out.println(("Writing " + skmax + " items for partition key: " + ipk)); for (Integer isk = 1; isk <= skmax; isk++) { table.putItem(new Item() .withPrimaryKey("pk", ipk, "sk", isk) .withString("someData", someData)); } } } catch (Exception e) { System.err.println("Unable to write item:"); e.printStackTrace(); } } void deleteTable(String tableName, DynamoDB client) { Table table = client.getTable(tableName); try { System.out.println("\nAttempting to delete table; please wait..."); table.delete(); table.waitForDelete(); System.out.println("Successfully deleted table."); } catch (Exception e) { System.err.println("Unable to delete table: "); e.printStackTrace(); } } }