DynamoDB
DynamoDB 사용법
이 문서에서는 AWS DynamoDB 사용법에 대해 설명한다.
AWS에서 DynamoDB를 사용하면 과금을 해야하니 로컬 환경에 설치한 DynamoDB 기준으로 설명하였다.
조회API를 구현하면서 겪은 경험을 바탕으로 작성되어 찾고자하는 내용이 없을 수 있다.
공식 레퍼런스 문서를 참고하는게 도움이 될 것이다.
마지막으로 프로그램은 Spring boot 2.1.4 기준이다.
AWS DynamoDB 공식 레퍼런스문서:
https://docs.aws.amazon.com/ko_kr/amazondynamodb/latest/developerguide/Introduction.html
테이블 생성
조회기능 구현 조건
- 정렬이 필요하다.
- 데이터가 많아도 조회 속도가 일정해야한다.
조회 방법
DynamoDB에는 조회방법이 SCAN방식과 Query방식 2가지가 있다.
스캔방식으로 조회 할 때 Spring-data와 pageable을 사용하여 연동이 가능하다.
중요한 점은 필터는 가능하지만 정렬은 불가능
하다...
그러므로 스캔으로 조회로 구현하지 않는다..
쿼리방식으로 조회 할 때 파티션키를 기본인자로 받는다.
정렬은 Sort Key기준으로만 가능하다.
다른속성 값을 기준으로 정렬을 하고싶다면, LSI를 추가하여 사용하면 된다고 한다. (사용은 안해봤다.ㅎㅎ)
DynamoDB - Spring-boot 연동
연동에 필요한 config 파일, properties 파일을 작성한다.
■ DynamoDBConfig.java
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDB;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient;
import com.amazonaws.services.dynamodbv2.document.DynamoDB;
import com.amazonaws.services.dynamodbv2.document.Table;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class DynamoDBConfig {
@Value("${aws.dynamodb.endpoint}")
private String endpoint;
@Value("${aws.dynamodb.accesskey}")
private String accesskey;
@Value("${aws.dynamodb.secretkey}")
private String secretkey;
@Bean
public Table dynamodbTable() {
DynamoDB dd = new DynamoDB(amazonDynamoDB());
Table table = dd.getTable("Eth-txs");
return table;
}
private AWSCredentials amazonAWSCredentials() {
return new BasicAWSCredentials(accesskey, secretkey);
}
private AmazonDynamoDB amazonDynamoDB() {
AmazonDynamoDB dynamoDB = new AmazonDynamoDBClient(amazonAWSCredentials());
dynamoDB.setEndpoint(endpoint);
return dynamoDB;
}
}
■ application.properties
aws.dynamodb.endpoint=http://localhost:8000/
aws.dynamodb.accesskey=access123
aws.dynamodb.secretkey=secret123