티스토리 뷰
Node.js로 DynamoDB 시작하기[1] -linux에 Local DynamoDB 설치
저번 글에서는 linux 환경에 local DynamoDB를 설치하였다.
이번 글에서는 node.js로 aws sdk를 이용하여 저번 글에서 설치한 local DynamoDB를 제어해보려고 한다.
#SetUp
npm init
npm install aws-sdk
#CreateTable.js
설치가 끝났다면 현재 디렉토리에 CreateTable.js라는 파일 생성하여 아래와 같이 작성해준다.
우리는 dynamodb를 tokyo region에서 생성했기 때문에 4번째 줄의 region에 tokyo region인 "ap-northeast-1"을 기입해준다. 만약 타 리전의 dynamodb 를 설치하였다면 region을 다르게 기입해주어야 한다.
26번 줄을 보면 AWS SDK에서 지원하는 createTable 함수를 사용하기 위하여 파라미터가 필요한데 이는 10번 라인부터 정의되어 있다.
파라미터가 의미하는 건 생성하려는 dynamodb table에 대한 정보인데 TableName에는 생성하려는 테이블 이름을 적어주면 된다.
이제 아래에 KeySchema를 적게 되는데 그 전에 간단하게 DynamoDB의 키에 대해 설명하겠다.
#DynamoDB KEY
DynamoDB는 1개 혹은 2개의 key를 가질 수 있다.
Nosql의 특징 때문에 DynamoDB는 table에 item을 삽입할 때 item 안에 사전에 정의되지 않은 Attribute를 사용할 수 있다.
단 각 item들은 미리 Table이 Key로 정의한 1개 혹은 2개의 Attribute를 가져야만 한다.
[1개의 KEY를 가지는 경우 (해쉬키)]
이 경우에 Key가 되는 Attribute는 무조건 HASH 타입이 된다.
이 경우에는 해쉬키를 기준으로 데이터를 분산시켜 저장하여 데이터 모델을 단순화하고, 정렬을 하지 않고 저장하게 된다.
즉 해쉬키는 일치 방식의 검색만 지원한다. 즉 키 AttributeName이 Student이고 해당 값이 "jason"인 것을 검색한다면 정확히 Student가 jason인 아이템들만 반환하게 된다.
또 한 Hash Key는 중복이 없는 고유 값을 가져야 만 한다.
[2개의 KEY를 가지는 경우(해쉬키+범위키)]
위에서 처럼 해쉬키만을 사용하는 경우에는 해쉬키가 동일 할 경우 table에 item을 저장할 수 없다.
해쉬키와 범위키를 동시에 사용하는 경우에는 해쉬키+범위키가 고유 값을 가지면 되므로 위와 같은 문제가 해소된다.
또 범위키(Range type Key)를 이용하여 Hash Key만 사용할 때와는 달리 일치,부등호,포함 등의 범위를 지정할 수 있는 검색을 할 수 있게 된다.
즉 해쉬키는 partition key 역할을 범위키는 sort key 역할을 하게 된다.
다시 아까의 소스코드로 넘어가서 이제 보면 name은 해쉬키 age는 범위키로 2개의 KEY를 가지는 Table을 생성하려 함을 알 수 있다.
16번째 라인을 보면 키가 되는 Attribute의 Type에 대해 정의한다.
이 때 AttributeType에는 S,N,B 오로지 세 속성만 올 수 있으며 S-문자열 형식의 속성, N-숫자 형식의 속성, B-이진 형식의 속성 을 의미한다.
21,22번째 줄의 Read,Write CapacityUnits은 DynamoDB가 ThrottlingException을 반환하기 전에 초당 사용되는 최대 읽기,쓰기 수이다.
자 이제 우리가 생성하려는 테이블은 University라는 이름을 가지며 두개의 Attribute를 Key로 가지며 HASH키는 name이며 String 타입, RANGE키는 age며 Number 타입임을 알 수 있다.
#테이블 생성
자 이제 터미널을 열고 해당 스크립트를 작동시켜보자.
#node CreateTable.js
Table이 생성되었다는 log와 함께 우리가 생성한 테이블의 정보가 출력된다.
이제 저번 글에서 입력하였던 커멘드를 이용하여 테이블 목록을 조회해보자.
#aws dynamodb list-tables --endpoint-url [DynamoDB Endpoint URL]
University 테이블이 생성 된 걸 확인할 수 있다.
'서버 관련 > JS' 카테고리의 다른 글
Node.js로 DynamoDB 시작하기[2] -AWS SDK를 이용하여 dynamodb Table 생성 (0) | 2020.05.11 |
---|---|
Node.js로 DynamoDB 시작하기[1] -linux에 Local DynamoDB 설치 (0) | 2020.05.11 |
Express와 Apollo server를 이용한 GraphQL API 만들기 (0) | 2020.04.18 |
[Express.js/Node.js] Express framework를 이용한 REST API 서버 만들기 (0) | 2020.04.07 |
[JavaScript] 콜백(Callback)함수와 비동기 처리 (4) | 2020.04.02 |
- TAG
- aws sdk, crud, dynamodb, dynamodb key, node.js
- Total
- 315,369
- Today
- 36
- Yesterday
- 199
- 세그먼트 트리
- 이분 탐색
- 다이나믹 프로그래밍
- 힙
- 그리디 알고리즘
- LCP array
- 플로이드 워셜
- MST
- lazy propagation
- KMP
- SCC
- Suffix Array
- 분할 정복
- 라인 스위핑
- disjoint-set
- 트리
- 이분 매칭
- 디닉
- 네트워크 플로우
- 다익스트라
- MCMF
- partial sum
- brute force
- 위상 정렬
- 에라토스테네스의 체
- lca
- BFS
- 좌표 압축
- dfs
- 수학