쿠키 기본 설정 선택

당사는 사이트와 서비스를 제공하는 데 필요한 필수 쿠키 및 유사한 도구를 사용합니다. 고객이 사이트를 어떻게 사용하는지 파악하고 개선할 수 있도록 성능 쿠키를 사용해 익명의 통계를 수집합니다. 필수 쿠키는 비활성화할 수 없지만 '사용자 지정' 또는 ‘거부’를 클릭하여 성능 쿠키를 거부할 수 있습니다.

사용자가 동의하는 경우 AWS와 승인된 제3자도 쿠키를 사용하여 유용한 사이트 기능을 제공하고, 사용자의 기본 설정을 기억하고, 관련 광고를 비롯한 관련 콘텐츠를 표시합니다. 필수가 아닌 모든 쿠키를 수락하거나 거부하려면 ‘수락’ 또는 ‘거부’를 클릭하세요. 더 자세한 내용을 선택하려면 ‘사용자 정의’를 클릭하세요.

TryDax.java

포커스 모드
TryDax.java - Amazon DynamoDB
import java.util.Map; import software.amazon.awssdk.services.dynamodb.DynamoDbAsyncClient; import software.amazon.awssdk.services.dynamodb.model.AttributeDefinition; import software.amazon.awssdk.services.dynamodb.model.AttributeValue; import software.amazon.awssdk.services.dynamodb.model.BillingMode; import software.amazon.awssdk.services.dynamodb.model.CreateTableRequest; import software.amazon.awssdk.services.dynamodb.model.DeleteTableRequest; import software.amazon.awssdk.services.dynamodb.model.DescribeTableRequest; import software.amazon.awssdk.services.dynamodb.model.GetItemRequest; import software.amazon.awssdk.services.dynamodb.model.KeySchemaElement; import software.amazon.awssdk.services.dynamodb.model.KeyType; import software.amazon.awssdk.services.dynamodb.model.PutItemRequest; import software.amazon.awssdk.services.dynamodb.model.QueryRequest; import software.amazon.awssdk.services.dynamodb.model.ScalarAttributeType; import software.amazon.dax.ClusterDaxAsyncClient; import software.amazon.dax.Configuration; public class TryDax { public static void main(String[] args) throws Exception { DynamoDbAsyncClient ddbClient = DynamoDbAsyncClient.builder() .build(); DynamoDbAsyncClient daxClient = null; if (args.length >= 1) { daxClient = ClusterDaxAsyncClient.builder() .overrideConfiguration(Configuration.builder() .url(args[0]) // e.g. dax://my-cluster.l6fzcv.dax-clusters.us-east-1.amazonaws.com .build()) .build(); } String tableName = "TryDaxTable"; System.out.println("Creating table..."); createTable(tableName, ddbClient); System.out.println("Populating table..."); writeData(tableName, ddbClient, 100, 10); DynamoDbAsyncClient testClient = null; if (daxClient != null) { testClient = daxClient; } else { testClient = ddbClient; } System.out.println("Running GetItem and Query tests..."); System.out.println("First iteration of each test will result in cache misses"); System.out.println("Next iterations are cache hits\n"); // GetItem getItemTest(tableName, testClient, 100, 10, 5); // Query queryTest(tableName, testClient, 100, 2, 9, 5); System.out.println("Deleting table..."); deleteTable(tableName, ddbClient); } private static void createTable(String tableName, DynamoDbAsyncClient client) { try { System.out.println("Attempting to create table; please wait..."); client.createTable(CreateTableRequest.builder() .tableName(tableName) .keySchema(KeySchemaElement.builder() .keyType(KeyType.HASH) .attributeName("pk") .build(), KeySchemaElement.builder() .keyType(KeyType.RANGE) .attributeName("sk") .build()) .attributeDefinitions(AttributeDefinition.builder() .attributeName("pk") .attributeType(ScalarAttributeType.N) .build(), AttributeDefinition.builder() .attributeName("sk") .attributeType(ScalarAttributeType.N) .build()) .billingMode(BillingMode.PAY_PER_REQUEST) .build()).get(); client.waiter().waitUntilTableExists(DescribeTableRequest.builder() .tableName(tableName) .build()).get(); System.out.println("Successfully created table."); } catch (Exception e) { System.err.println("Unable to create table: "); e.printStackTrace(); } } private static void deleteTable(String tableName, DynamoDbAsyncClient client) { try { System.out.println("\nAttempting to delete table; please wait..."); client.deleteTable(DeleteTableRequest.builder() .tableName(tableName) .build()).get(); client.waiter().waitUntilTableNotExists(DescribeTableRequest.builder() .tableName(tableName) .build()).get(); System.out.println("Successfully deleted table."); } catch (Exception e) { System.err.println("Unable to delete table: "); e.printStackTrace(); } } private static void writeData(String tableName, DynamoDbAsyncClient client, int pkmax, int skmax) { 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 (int ipk = 1; ipk <= pkmax; ipk++) { System.out.println(("Writing " + skmax + " items for partition key: " + ipk)); for (int isk = 1; isk <= skmax; isk++) { client.putItem(PutItemRequest.builder() .tableName(tableName) .item(Map.of("pk", attr(ipk), "sk", attr(isk), "someData", attr(someData))) .build()).get(); } } } catch (Exception e) { System.err.println("Unable to write item:"); e.printStackTrace(); } } private static AttributeValue attr(int n) { return AttributeValue.builder().n(String.valueOf(n)).build(); } private static AttributeValue attr(String s) { return AttributeValue.builder().s(s).build(); } private static void getItemTest(String tableName, DynamoDbAsyncClient client, int pk, int sk, int iterations) { long startTime, endTime; System.out.println("GetItem test - partition key 1-" + pk + " and sort keys 1-" + sk); for (int i = 0; i < iterations; i++) { startTime = System.nanoTime(); try { for (int ipk = 1; ipk <= pk; ipk++) { for (int isk = 1; isk <= sk; isk++) { client.getItem(GetItemRequest.builder() .tableName(tableName) .key(Map.of("pk", attr(ipk), "sk", attr(isk))) .build()).get(); } } } catch (Exception e) { System.err.println("Unable to get item:"); e.printStackTrace(); } endTime = System.nanoTime(); printTime(startTime, endTime, pk * sk); } } private static void queryTest(String tableName, DynamoDbAsyncClient client, int pk, int sk1, int sk2, int iterations) { long startTime, endTime; System.out.println("Query test - partition key 1-" + pk + " and sort keys between " + sk1 + " and " + sk2); for (int i = 0; i < iterations; i++) { startTime = System.nanoTime(); for (int ipk = 1; ipk <= pk; ipk++) { try { // Pagination API for Query. client.queryPaginator(QueryRequest.builder() .tableName(tableName) .keyConditionExpression("pk = :pkval and sk between :skval1 and :skval2") .expressionAttributeValues(Map.of(":pkval", attr(ipk), ":skval1", attr(sk1), ":skval2", attr(sk2))) .build()).items().subscribe((item) -> { }).get(); } catch (Exception e) { System.err.println("Unable to query table:"); e.printStackTrace(); } } endTime = System.nanoTime(); printTime(startTime, endTime, pk); } } private static void printTime(long startTime, long endTime, int iterations) { System.out.format("\tTotal time: %.3f ms - ", (endTime - startTime) / (1000000.0)); System.out.format("Avg time: %.3f ms\n", (endTime - startTime) / (iterations * 1000000.0)); } }
프라이버시사이트 이용 약관쿠키 기본 설정
© 2025, Amazon Web Services, Inc. 또는 계열사. All rights reserved.