david's daily developer note

[BE] Introduction to DynamoDB 본문

[Develop] Web/Back-end

[BE] Introduction to DynamoDB

mouse-david 2022. 6. 23. 20:03
728x90

DynamoDB는 AWS에서 서비스하는 NoSQL DB이다.
https://aws.amazon.com/ko/nosql/

 

NoSQL이란? | 비관계형 데이터베이스, 유연한 스키마 데이터 모델 | AWS

수십 년간, 애플리케이션 개발을 위해 가장 많이 사용된 데이터 모델은 Oracle, DB2, SQL Server, MySQL, PostgreSQL과 같은 관계형 데이터베이스에서 사용하는 관계형 데이터 모델이었습니다. 2000년대 중반

aws.amazon.com

NoSQL은 높은 유연성/확장성/쿼리 기반의 설계에 따라서 고성능 쿼리가 가능하다는 장점과 대용량 데이터 모델 처리에 강점이 있다. 그래도 RDB가 안정적이어서 더 많이 쓰이긴한다. 사실 일부 로그나, 대규모 인스턴스 데이터를 다루는데 주로 쓰고 일반적인 서비스에서는 RDB를 더 많이 사용했던 것 같다. 

RDB는 수평 확장에 용의하여 복잡한 비니지스 관계가 존재하는 서비스에서 더욱 유리하며, 단순히 적재와 분석을 위한 응용 분야에서는 Vertical Scaling에 장점이 있는 NoSQL이 유리할 수 있다.

NoSQL은 문서 형태의 저장이 가능하여 데이터 활용에 더욱 유연하다는 장점도 있다.

NoSQL은 단순 키&값 조합이기 때문에, 쿼리 위주로 테이블을 구성한다. 또한, 파티션 키 개념이 존재하여 워크로드를 분산할 수 있다. 샤딩(Sharding)은 RDS에도 있는 개념인데, 워크로드에 따라서 테이블을 분산 저장하는 방식이다.

https://techblog.woowahan.com/2687/

 

DB분산처리를 위한 sharding | 우아한형제들 기술블로그

{{item.name}} 소개 저희는 신사업부문에서 Thiiing(띠잉)서비스를 만들고 있는 송재욱/전병두입니다. 이번에는 두 명이 함께 기술블로그를 작성했습니다. 🙂 서비스 오픈전에 아름다운 J곡선 그래프

techblog.woowahan.com

NoSQL에서는 접미사를 사용하여 파티셔닝할 수 있다. RDS에서 샤딩은 DB 복잡도를 올리게 되는데, (테이블이 막 늘어남) NoSQL에서는 지정된 접미사를 활용하는 것으로 (약속된 키만 잘 만들면 됨으로) 상대적으로 단순하게 파티셔닝을 구현할 수 있다. 그러나 모든 항목을 쿼리하는 상황에서는 RDS보다 비효율적입니다.

NoSQL에서는 보조 인덱스(GSI : Global Secondary Index)를 활용할 수 있다. 쿼리 설계에서 고려하지 못한 (RDS의 JOIN과 같이) 조합형 쿼리가 필요한 경우에는 보조인덱스를 두어서, 쿼리를 단순하게 할 수 있다. 하지만, 내부적으로는 가상의 테이블이 생기는 개념이라서 과도한 사용은 불필요하다.

Reference : 

  1. Amazon DynamoDB SDK를 활용 JSON CRUD
    https://aws.amazon.com/ko/blogs/aws/dynamodb-update-json-and-more/
  2. Amazon DynamoDB SDK를 활용 CRUD standard
    예제: CRUD 작업 - Amazon DynamoDB
  3. DynamoDBMapper 활용한 객체 맵핑
    DynamoDB에 사용되는 Java 주석 - Amazon DynamoDB
  4. DynamoDb -> Entity -> Service -> DTO 구조 개발
    Entity & DynamoDb Value 와 동일한 JSon 형태 반환 DTO
  5. DynamoDb ORM
    https://woowabros.github.io/study/2019/06/05/spring-data-dynamodb-1.html

 

728x90