TryDaxHelper.java
TryDaxHelper.java
ファイルにはユーティリティメソッドが含まれています。
getDynamoDBClient
および getDaxClient
メソッドは、Amazon DynamoDB および Amazon DynamoDB Accelerator (DAX) クライアントを提供します。コントロールプレーンオペレーション (CreateTable
、DeleteTable
) および書き込みオペレーションでは、プログラムは DynamoDB クライアントを使用します。DAX クラスターエンドポイントを指定すると、メインプログラムは読み込みオペレーション (GetItem
、Query
、Scan
) 用に DAX クライアントを作成します。
他の TryDaxHelper
メソッド (createTable
、writeData
、deleteTable
) は、DynamoDB テーブルとそのデータのセットアップおよび解体用です。
さまざまな方法でプログラムを変更できます。
-
テーブルで別のプロビジョニングされたスループット設定を使用する。
-
書き込まれた各項目のサイズを変更する (
writeData
メソッドのstringSize
変数を参照してください)。 -
GetItem
、Query
、およびScan
テストの数とそのパラメータを変更する。 -
helper.CreateTable
およびhelper.DeleteTable
を含むラインをコメントアウトする (プログラムを実行するたびにテーブルを作成および削除しない場合)。
注記
このプログラムを実行するには、DAX SDK for Java のクライアント、および AWS SDK for Java を依存関係として使用するように Maven を設定できます。詳細については、「クライアントを Apache Maven 依存関係として使用する」を参照してください。
または、DAX Java クライアントと AWS SDK for Java の両方をダウンロードして、クラスパスに含めることもできます。CLASSPATH
変数の設定例については、「Java および DAX」を参照してください。
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(); } } }