https://console.aws.amazon.com/dynamodb

NoSQL 서버입니다. 이미 AWS Aurora 서버도 쓰고 있지만 대량의 데이터 처리를 위해 사용하기로 했습니다. 결론부터 말하자면 온디맨드 설정 후 테스트로 10,000개의 데이터(개당 64바이트)를 동시에 보냈더니 8초 정도 걸렸고 모든 데이터가 문제없이 입력되었습니다.

다이나모(DynamoDB)는 테이블을 생성해서 데이터(모델)를 처리합니다. 처음에 만들 때 고려해야 하는게 하나 있는데요. 파티션 키(Hash Key)와 정렬 키(Range Key)입니다.

  • 파티션 키: RDBMS의 Primary Key와 유사. 파티션 키만 지정할 경우 이미 저장된 파티션 키와 동일한 값 저장 불가.
  • 정렬 키: RDBMS의 Unique Constraint 설정과 유사. 정렬 키를 지정할 경우 이미 저장된 파티션 키와 정렬 키가 모두 동일한 값 저장 불가. 둘 중 하나씩은 동일한 값 추가 가능.

예를 들어, 각 아이템의 pk와 순서가 있는 테이블을 만든다면..

동일한 item_pk가 입력 가능하고, order는 0이나 1부터 오름차순으로 순서대로 입력 가능합니다. 결국 둘을 조합하면 고유합니다. (Unique Constraint)

테이블 생성 후 프로젝트 성격에 따라 아래와 같이 ‘용량’을 수정할 필요가 있습니다. 기본은 아래와 같이 ‘할당됨’ 인데요. 데이터 흐름량에 따라 읽기/쓰기 용량을 정할 수 있습니다. 참고로 아래와 같이 기본 5를 설정한 다음 10,000개의 요청을 한꺼번에 보내면 1,500개 정도만 처리됩니다.

저희 서비스(Colorfil, 컬러필)는 상당히 많은 요청을 처리할 것이므로 온디맨드로 변경했습니다. 처리되는 시간이 좀 걸립니다. 처음에 말한 것처럼 온디맨드 설정 후 테스트로 10,000개의 데이터(개당 64바이트)를 동시에 보냈더니 8초 정도 걸렸고 모든 데이터가 문제없이 입력되었습니다.