TryDaxHelper.java - Amazon DynamoDB

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

TryDaxHelper.java

Il file TryDaxHelper.java contiene i metodi di utilità.

I getDaxClient metodi getDynamoDBClient and forniscono client Amazon DynamoDB e DynamoDB Accelerator (). DAX Per le operazioni del piano di controllo (CreateTable, DeleteTable) e le operazioni di scrittura, il programma usa il client DynamoDB. Se si specifica un endpoint DAX del cluster, il programma principale crea un DAX client per eseguire operazioni di lettura (,,). GetItem Query Scan

Gli altri metodi TryDaxHelper (createTable, writeData, deleteTable) sono per la configurazione e la distruzione della tabella DynamoDB e dei relativi dati.

Puoi modificare il programma in diversi modi:

  • Utilizza per la tabella diverse impostazioni del throughput assegnato.

  • Modifica la dimensione di ogni item scritto (vedi la variabile stringSize nel metodo writeData).

  • Modifica il numero dei test GetItem, Query e Scan e i relativi parametri.

  • Imposta come commento le righe contenenti helper.CreateTable e helper.DeleteTable (se non vuoi creare ed eliminare la tabella ogni volta che esegui il programma).

Nota

Per eseguire questo programma, puoi configurare Maven in modo che utilizzi il client per le dipendenze DAX SDK per Java e as. AWS SDK for Java Per ulteriori informazioni, consulta Utilizzo del client come una dipendenza Apache Maven.

In alternativa, puoi scaricare e includere sia il client DAX Java che il AWS SDK for Java nel tuo classpath. Consulta Java e DAX per un esempio dell'impostazione della variabile CLASSPATH.

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(); } } }