How to update table in dynamoDB using Java – DynamoDB Tutorial
5 years ago Lalit Bhagtani 0
In this tutorial, we will learn about how to update a table in dynamoDB using java language.
DynamoDB
Amazon DynamoDB is a fully managed NoSQL database services offered by Amazon as part of its Amazon Web Service (AWS) portfolio. It provides fast and predictable performance with seamless scalability. DynamoDB is a key-value datastore, where each item (row) in a table is a key-value pair.
Project Setup
Create a simple maven project in your favorite IDE and add below mentioned dependency in your pom.xml file.
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>1.11.524</version>
</dependency>
For latest version of aws library, check this page.
Table Schema
In this example, we will update a JOB table, this table stores information about the job posted by the company on the job portal. Schema of this table is as follows:-
- Existing Attributes:
- CountryName ( Partition Key ) : It represents name of the country for which job is posted. It is stored as String data type ( ScalarAttributeType S ).
- JobId (Sort Key) : It represents unique id of the posted job. It is of Number datatype ( ScalarAttributeType N ).
- New Attributes:
- CompanyName : It represents name of the company by which job is posted. It is of String datatype ( ScalarAttributeType S ).
- JobTitle : As the name suggest, it represents tile of the job. It is of String datatype ( ScalarAttributeType S ).
- JobDescription : It represents details job description. It is of String datatype ( ScalarAttributeType S ).
DynamoDB Connection
Create an object of AmazonDynamoDB ( com.amazonaws.services.dynamodbv2.AmazonDynamoDB ) class for sending a client request to dynamoDB. To get instance of this class, we will use AmazonDynamoDBClientBuilder builder class. It requires three important parameters :-
- Region :- It is a region where dynamoDB table will be stored.
- ACCESS_KEY :- It is a access key for using dynamoDB. You can generate this key, using aws management console.
- SECRET_KEY :- It is a secret key of above mentioned access key.
Here is a code example :-
AmazonDynamoDB dynamoDB = AmazonDynamoDBClientBuilder.standard()
.withRegion(Regions.AP_SOUTH_1)
.withCredentials(new AWSStaticCredentialsProvider
(new BasicAWSCredentials("ACCESS_KEY","SECRET_KEY")))
.build();
Update Table
Steps to create and send UpdateTableRequest to dynamoDB are as follows:-
- Instantiate UpdateTableRequest object, this object will be used to send the client request to dynamoDB.
- Set name of the table which we like to update. In our case JOB.
- Create a list of AttributeDefinition objects to add new attributes in the table, It will define attribute names and their datatypes.
- Set Provisioned Throughput to update throughput of the table.
- Invoke the updateTable method on AmazonDynamoDB object by passing UpdateTableRequest object as an argument.
Example
import java.util.Arrays; import java.util.List; import com.amazonaws.AmazonServiceException; import com.amazonaws.auth.AWSStaticCredentialsProvider; import com.amazonaws.auth.BasicAWSCredentials; import com.amazonaws.regions.Regions; import com.amazonaws.services.dynamodbv2.AmazonDynamoDB; import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientBuilder; import com.amazonaws.services.dynamodbv2.model.AttributeDefinition; import com.amazonaws.services.dynamodbv2.model.ProvisionedThroughput; import com.amazonaws.services.dynamodbv2.model.ScalarAttributeType; import com.amazonaws.services.dynamodbv2.model.UpdateTableRequest; import com.amazonaws.services.dynamodbv2.model.UpdateTableResult; public class UpdateTable { public static void main(String[] args) { /* Create DynamoDB Client Object */ AmazonDynamoDB dynamoDB = AmazonDynamoDBClientBuilder .standard() .withRegion(Regions.AP_SOUTH_1) .withCredentials(new AWSStaticCredentialsProvider( new BasicAWSCredentials("ACCESS_KEY","SECRET_KEY"))) .build(); /* Create an Object of UpdateTableRequest */ UpdateTableRequest request = new UpdateTableRequest(); /* Setting Table Name */ request.setTableName("JOB"); /* Create & Set a list of AttributeDefinition */ List<AttributeDefinition> attributeDefinitions = Arrays.asList( new AttributeDefinition[] { new AttributeDefinition("CompanyName", ScalarAttributeType.S) }); request.setAttributeDefinitions(attributeDefinitions); /* Setting Provisioned Throughput */ request.setProvisionedThroughput(new ProvisionedThroughput(new Long(5), new Long(5))); try { /* Send Update Table Request */ UpdateTableResult result = dynamoDB.updateTable(request); System.out.println("Status : " + result.getSdkHttpMetadata().getHttpStatusCode()); System.out.println("Table Name : " + result.getTableDescription().getTableName()); /* Creating and Sending request using Fluent API, Adding JobTitle Attribute */ UpdateTableResult resultFluent = dynamoDB.updateTable((new UpdateTableRequest()).withTableName("JOB") .withAttributeDefinitions(new AttributeDefinition("JobTitle", ScalarAttributeType.S), new AttributeDefinition("JobDescription", ScalarAttributeType.S)) .withProvisionedThroughput(new ProvisionedThroughput(new Long(1), new Long(1)))); System.out.println("Status : " + resultFluent.getSdkHttpMetadata().getHttpStatusCode()); System.out.println("Table Name : " + resultFluent.getTableDescription().getTableName()); } catch (AmazonServiceException e) { System.out.println(e.getErrorMessage()); } } }
References :-
That’s all for how to update a table in dynamoDB using java language. If you liked it, please share your thoughts in comments section and share it with others too.