2016-05-25 1 views
1

Est-il possible pour mon application (java) de vérifier le débit fourni par DynamoDB pour les lectures/écritures? Pour des raisons de stabilité, il serait utile que je puisse obtenir ces numéros par programmeEst-il possible de vérifier quel est le débit provisionné pour DynamoDB?

Je suis conscient que si j'obtiens un ProvisionedThroughputExceededException alors j'ai dépassé ma limite, mais est-ce qu'il y a un moyen de savoir quelles sont mes limites de lecture/écriture avant qui se passe?

J'ai également trouvé des documents faisant référence à describing limits mais cela ne semble pas correspondre à tout ce que je peux utiliser dans le code

C'est la première fois que je l'ai utilisé DynamoDB donc si cela est fondamentalement une mauvaise pratique Dites s'il vous plaît!

Vive

+2

En gros tout ce que vous trouverez dans la référence générique api a un équivalent dans le java-sdk: http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/dynamodbv2/ AmazonDynamoDBClient.html # describeLimits% 28com.amazonaws.services.dynamodbv2.model.DescribeLimitsRequest% 29 (c'est plus ou moins un simple wrapper autour de l'API http) – zapl

Répondre

1

Aws-java-sdk vous permet de le faire. Similaire à http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/JavaDocumentAPIWorkingWithTables.html vous pouvez le faire soit

AmazonDynamoDB dynamoClient = new AmazonDynamoDBClient(); 
    DescribeTableResult result = dynamoClient.describeTable("MyTable"); 
    Long readCapacityUnits = result.getTable() 
      .getProvisionedThroughput().getReadCapacityUnits(); 

ou

AmazonDynamoDB dynamoClient = new AmazonDynamoDBClient(); 
    DynamoDB dynamoDB = new DynamoDB(dynamoClient); 
    Table table = dynamoDB.getTable("MyTable"); 
    Long readCapacityUnits = table.describe() 
      .getProvisionedThroughput().getReadCapacityUnits(); 

DynamoDb est une enveloppe de niveau supérieur, ce qui a parfois des API plus simples, AmazonDynamoDBClient est une mise en œuvre plutôt directement des API HTTP.

Pour en savoir plus sur autoscaling DynamoDB voir

How to auto scale Amazon DynamoDB throughput?

1

Vous voulez utiliser le AWS SDK for Java, comme ceci:

AmazonDynamoDBClient client = new AmazonDynamoDBClient(); 
client.describeTable("tableName").getTable().getProvisionedThroughput(); 
0

Voici la AWS commande CLI pour obtenir le débit provisionné pour une table.

aws dynamodb describe-table --table-name <table name>