3 min to read
DynamoDB에 대해서 알아보자 - 2
DynamoDB그래서 이 녀석이 다른 nosql DB 프로그램에 비해 무엇이 장점이고 무엇이 한계야? 그리고 이거 비싸냐!?
주의
이 블로그의 내용은 대단히 주관적인 내용이 가득합니다.
그리고 양질의 글
을 읽었지만 똥글
이 나오는건 제 미숙함 때문입니다.
그럼에도 불구하고 피드백 많이 주신다면 자세히 조사하여 반영하도록 하겠습니다.
또한.. 가능한 링크로 올려놓은 자료들은 반드시 열어보시기 바랍니다. 분명 도움이 될 것입니다.
(- -)(_ _)
이 글을 읽기전에
글을 읽는 대상인 독자님들은 RDBMS의 서비스를 경험해보았다는것을 기본 전제로 합니다. 또한, mongoDB를 약간이나마 경험해보았다면 더 없이 좋습니다. 하지만, 그렇다 하더라도 자세하게 설명하도록 노력해보겠습니다. 이해가 안되는 부분이 있다면 언제든지 지적해주세요!
DynamoDB pros and cons
pros 장점
- full-managed 환경(하드웨어의 할당, 설정, 구성 // 데이터의 백업, 복제, 패치 // DynamoDB의 클러스터링 조정 들에 대해서 자동셋팅 및 클릭으로 해결가능)
- AWS 제품군과 연동하여 사용하기 용이하다
- 모든 데이터는 SSD에 저장됨(기본 입출력속도가 빠름)
- 무엇을 하던간에 DynamoDB에서 downtime이 존재하지않는다.(지속적인 서비스 가능)
- HTTP 비연결형 통신으로 데이터를 가져온다. connection pool관리가 필요없다.
- 네트워크의 속도는 AWS Infra자원을 이용하며 접근에 대한 비용은 AWS에서 부담한다. (물론… 자원입출력의 양은 서비스 이용자가… 부담)
- 파티션관리는 백그라운드에서 이루어지며, 사용자는 이를 직접 관리할 필요는 없다. (다만 DynamoDB에서 파티션관리하는 가이드에 맞춘 index셋팅이 중요)
cons 단점
- 프로그래밍적으로 서드파티를 통해 이득을 보는 부분은 생각보다 없다. (dynamodb에 대한 라이브러리가 많지않음. typescript가 있는것만으로 감사하다)
- 메이저한 ORM Library가 없어 실무에 사용하기 대단히 애매하다.
- 솔직히 참고할만한 자료가 Google검색결과에 많진 않다. AWS 공식 github organization, AWS document 수 많은… pdf들…
- 그나마 참고할만한 AWS DynamoDB pdf에 약간의 오역이 있다… (또는 이해하기 힘든 구문..)
- MySQL Workbench, Toad for Oracle, oracle SQL developer, RoboMongo같은 DB workbench툴이 없다. 있어도.. Web Console GUI가 있는데… 말 그대로 불.편 하다
RDBMS와 AWS DynamoDB의 차이
DynamoDB의 요금계산(읽기 및 쓰기 처리량)
- 메인 참고자료 AWS 공식 document
- 읽기/쓰기 용량 유닛, 리전별 요금표(https://aws.amazon.com/ko/dynamodb/pricing/)
읽기 용량 유닛 1
읽기 용량 단위 1개는 크기 4 KB 이하의 항목에서 1초당 강력한 일관된 읽기 1회 또는 1초당 최종적 일관된 읽기 1회를 나타냅니다.
ex) 읽기 용량 단위 10개로 할당된 테이블이 있다. 이렇게 하면 크기 4 KB 이하의 항목에 대해 1초당 강력한 일관된 읽기(strongly consistent read) 10회 또는 1초당 최종적 일관된 읽기(eventually consistent query) 20회를 수행할 수 있습니다.
쓰기 용량 유닛 1
쓰기 용량 단위 1개는 크기 1 KB 이하인 항목을 1초당 1회 쓴다는 의미입니다.
ex) 쓰기 용량 단위 10개로 할당된 테이블이 있다. 이렇게 하면 크기 1 KB 이하의 항목에 대해 1초당 쓰기 10회를 수행할 수 있습니다. 쓰기 항목 크기는 다음 1 KB 배수로 반올림됩니다. 예를 들어 500바이트의 항목을 쓰려면 1 KB 항목을 쓸 때와 동일한 처리량이 소비됩니다. 1.5KB는 2KB로 처리된다.
쓰기 용량은 읽기 용량과 다르게 strongly consistent read, eventually consistent query가 없다. 트랜젝션처럼 구현하려면 조건문을 이용한 insert(put)을 이용하여서 구현한다.참고자료
DynamoDB의 제한사항 및 제약사항
이 부분에 대해서는 간단한 게시판 예제를 만들면서 한번 더 언급하겠습니다. 우선은 훑고 넘어만 가 줍시다.
후기
full-managed에 메리트를 별로 못 느끼고 AWS를 적극활용하지 않는 곳이라면 굳이?(그러고 보니 PostgreSQL 재밌어 보이던데 ORM지원도 짱짱하고)
DynamoDB! 좀 더 노오오오력 하죠! 좀 더 노오오오력 하죠! 좀 더 노오오오력 하죠! 좀 더 노오오오력 하죠! 좀 더 노오오오력 하죠! 좀 더 노오오오력 하죠! 좀 더 노오오오력 하죠! 좀 더 노오오오력 하죠! 좀 더 노오오오력 하죠! 좀 더 노오오오력 하죠! 좀 더 노오오오력 하죠! 좀 더 노오오오력 하죠! 좀 더 노오오오력 하죠! 좀 더 노오오오력 하죠! 좀 더 노오오오력 하죠! 좀 더 노오오오력 하죠! 좀 더 노오오오력 하죠! 좀 더 노오오오력 하죠! 좀 더 노오오오력 하죠! 좀 더 노오오오력 하죠!
다음 포스트에서는 DynamoDB로 간단한 테이블을 만들어 보고 CRUD를 돌려보는 예제를 만들어 보겠습니다. :) (다음 예제는 AWS 계정 없이 진행할 수 있습니다. 하지만 dynamodb를 local환경에서 구성해서 예제를 만들것이기 때문에 docker & docker-compose는 필요합니다.)
- docker에 대해서 궁금하다면? Docker에 대해서 알아보자 - 이론편
- docker와 docker-compose를 설치하고 싶다면? docker install - window & docker-compose install
Comments