datasource/DyanmoDB

[DynamoDB] DynamoDB에서 사용하는 용어 정리

사바라다 2025. 2. 13. 00:34
반응형

개요

안녕하세요 ! 이전시간에는 RDB와의 비교를 통해서 DynamoDB가 가지는 특이점들을 알아보았습니다. 오늘 포스팅에서는 DynamoDB 사용의 기본으로 돌아가서 용어들과 마지막으로 DynamoDB의 비용을 계산하는 방법에 대해서 알아보도록 하겠습니다.

Table 용어 정리

먼저 테이블에 대해서 알아보도록 하겠습니다. 테이블은 DynamoDB에서 데이터가 저장되는 전체적은 구조를 나타냅니다. DynamoDB는 Table을 데이터 저장 공간의 기본으로합니다. 테이블에 들어가는 정보를 실제 표로 나타내면 아래와 같습니다. 이어서 각 용어에 대해서 알아보도록 하겠습니다.

Table

  • 데이터를 저장하는 기본 단위입니다.
  • 관계형 데이터베이스(RDBMS)의 테이블과 유사합니다.
  • 관계형 데이터베이스와 다른점은 DynamoDB는 스키마리스(Schema-less) 구조이며 PK와 SK, 그리고 Index Key를 제외하고는 별도로 Table을 만들 때 선언하지 않습니다.
    • 단, DynamoDB는 스키마리스하지만 이는 DynamoDB를 사용함에 있어서 스키마리스하게 사용한다는 의미는 아닙니다. Application 레벨에서 스키마를 관리해야합니다.
  • 테이블은 Primary Key(기본 키) 를 기준으로 데이터를 저장하고 검색합니다.

Item

  • DynamoDB 테이블에 저장되는 개별 레코드입니다.
  • RDBMS의 "행(Row)"과 유사합니다.
  • DynamoDB는 스키마리스하기 때문에 각 Item은 서로 다른 Attribute를 가질 수 있습니다.

Attribute

  • Item(항목) 내에서 Primary Key를 제외한 개별 데이터 필드입니다.
  • RDBMS의 "컬럼(Column)"과 유사합니다.
  • DynamoDB는 스키마리스이므로 각 Item마다 Attribute가 다를 수 있습니다.

Primary Key

  • 각 Item(항목)을 고유하게 식별하는 키입니다.
  • Primary Key는 두 가지 유형이 있습니다.
    • Partition Key (단일 키)
    • Partition Key + Sort Key (복합 키)
  • 복합키로 사용하지 않으면 Partition Key 하나에 1개의 Item 만을 가질 수 있습니다.

Item Collection

  • 같은 Partition Key를 가진 Item들의 집합입니다.
  • Sort Key를 사용하는 경우에만 Item Collection이 2건 이상이됩니다. 왜냐하면 Sort Key가 없다면 1건만 데이터가 Partition Key 마다 생성되기 때문입니다.
  • Item Collection은 Query를 통한 다건 검색의 기준이됩니다.

Key와 Index 용어 정리

Partition Key

  • DynamoDB에서 데이터를 저장하고 검색하는 주요 키값입니다.
  • 테이블을 수평적으로 분산하기 위해 Partition Key 값에 따라 데이터를 각 파티션에 분배합니다.
  • Partition Key가 동일하면 같은 파티션에 저장됩니다.

Sort Key

  • Partition Key와 함께 사용되는 보조 키입니다.
  • Partition Key가 동일한 경우, Sort Key를 기준으로 데이터를 정렬하여 저장합니다.
  • 같은 Partition Key에 Sort Key는 중복이 되지 않습니다.
  • 즉, 복합 키(Composite Key) 를 구성하는 경우 사용됨.
  • 예시 (Primary Key = Partition Key + Sort Key)

Local Secondary Index

  • 기존 테이블의 Partition Key를 유지하면서, Sort Key를 변경하여 조회할 수 있는 보조 인덱스입니다.
  • 같은 Partition Key를 공유하면서 다른 Sort Key로 검색이 가능합니다.
  • 테이블 생성 시 미리 정의해야 하며, 나중에 추가할 수 없습니다.
  • 기본 테이블과 같은 파티션에 저장되므로, 쓰기 성능이 영향을 받습니다.
  • Eventually Consistency와 Strong Consistency 모두 가능합니다.
  • LSI는 기본 테이블과 같은 파티션을 공유하므로, Partition Key별 10GB 제한이 적용됩니다.

Global Secondary Index

  • 기존 테이블의 Primary Key와 상관없이 완전히 새로운 Partition Key와 Sort Key를 정의할 수 있는 보조 인덱스입니다.
  • 테이블 생성 후에도 언제든 추가할 수 있습니다.
  • 기본 테이블과 다른 파티션에 저장되므로, 성능 영향을 적게 받습니다.
  • 데이터는 비동기적으로 업데이트되므로, 일시적으로 최신 데이터가 반영되지 않을 수도 있습니다.
  • 기본 테이블과 다르게, GSI에는 선택한 Attribute만 저장이 가능합니다. (전체 데이터를 복제할 필요 없음)
  • Eventually Consistency만 가능합니다.

접근하는 방법 Query, Scan 차이

Scan

  • 테이블의 모든 항목을 조회하여 조건에 맞는 데이터를 필터링합니다.
  • 인덱스를 사용하지 않으며, 테이블 전체를 검색합니다. (Full Table Scan 발생)
  • 비효율적이며, 비용이 많이 들고 느립니다.
  • 테이블 크기가 클수록 성능이 저하됩니다.
  • 마이그레이션 등 에 사용됩니다.

Query

  • Primary Key (Partition Key) 또는 보조 인덱스(LSI, GSI)를 기반으로 특정 데이터를 검색하는 방법입니다.
  • 정확한 Partition Key 값을 제공해야합니다. (Sort Key는 선택적으로 사용 가능)
  • 빠르고 비용이 저렴합니다. (최소한의 데이터만 읽음)
  • Primary Key로 필요한 데이터만 조회 가능합니다. (필터링이 효과적)

마무리

오늘은 이렇게 DynamoDB에서 사용하는 용어에 대해서 전반적으로 정리해보았습니다.

다음시간에는 다이나모디비를 사용할 때 비용을 계산하는 방법을 알아보도록 하겠습니다.

감사합니다.

참조

[1] The DynamoDB Book by Alex DeBrie

 

반응형