DynamoDB에 대해서 알아보자 - 2

DynamoDB그래서 이 녀석이 다른 nosql DB 프로그램에 비해 무엇이 장점이고 무엇이 한계야? 그리고 이거 비싸냐!?

Imagem de capa

주의

이 블로그의 내용은 대단히 주관적인 내용이 가득합니다. 그리고 양질의 글을 읽었지만 똥글이 나오는건 제 미숙함 때문입니다. 그럼에도 불구하고 피드백 많이 주신다면 자세히 조사하여 반영하도록 하겠습니다. 또한.. 가능한 링크로 올려놓은 자료들은 반드시 열어보시기 바랍니다. 분명 도움이 될 것입니다. (- -)(_ _)

이 글을 읽기전에

글을 읽는 대상인 독자님들은 RDBMS의 서비스를 경험해보았다는것을 기본 전제로 합니다. 또한, mongoDB를 약간이나마 경험해보았다면 더 없이 좋습니다. 하지만, 그렇다 하더라도 자세하게 설명하도록 노력해보겠습니다. 이해가 안되는 부분이 있다면 언제든지 지적해주세요!

DynamoDB pros and cons

pros 장점

  1. full-managed 환경(하드웨어의 할당, 설정, 구성 // 데이터의 백업, 복제, 패치 // DynamoDB의 클러스터링 조정 들에 대해서 자동셋팅 및 클릭으로 해결가능)
  2. AWS 제품군과 연동하여 사용하기 용이하다
  3. 모든 데이터는 SSD에 저장됨(기본 입출력속도가 빠름)
  4. 무엇을 하던간에 DynamoDB에서 downtime이 존재하지않는다.(지속적인 서비스 가능)
  5. HTTP 비연결형 통신으로 데이터를 가져온다. connection pool관리가 필요없다.
  6. 네트워크의 속도는 AWS Infra자원을 이용하며 접근에 대한 비용은 AWS에서 부담한다. (물론… 자원입출력의 양은 서비스 이용자가… 부담)
  7. 파티션관리는 백그라운드에서 이루어지며, 사용자는 이를 직접 관리할 필요는 없다. (다만 DynamoDB에서 파티션관리하는 가이드에 맞춘 index셋팅이 중요)

cons 단점

  1. 프로그래밍적으로 서드파티를 통해 이득을 보는 부분은 생각보다 없다. (dynamodb에 대한 라이브러리가 많지않음. typescript가 있는것만으로 감사하다)
  2. 메이저한 ORM Library가 없어 실무에 사용하기 대단히 애매하다.
  3. 솔직히 참고할만한 자료가 Google검색결과에 많진 않다. AWS 공식 github organization, AWS document 수 많은… pdf들…
  4. 그나마 참고할만한 AWS DynamoDB pdf에 약간의 오역이 있다… (또는 이해하기 힘든 구문..)
  5. MySQL Workbench, Toad for Oracle, oracle SQL developer, RoboMongo같은 DB workbench툴이 없다. 있어도.. Web Console GUI가 있는데… 말 그대로 불.편 하다

RDBMS와 AWS DynamoDB의 차이

DynamoDB의 요금계산(읽기 및 쓰기 처리량)

읽기 용량 유닛 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는 필요합니다.)