6 분 소요

Amazon DynamoDB

Amazon DynamoDB는 완전 관리형 NoSQL 데이터베이스 서비스입니다. Amazon은 이 서비스의 모든 기반 데이터 인프라를 관리합니다. 리전에서 내결함성 아키텍처의 일부로 여러 시설에 중복으로 데이터를 저장합니다. DynamoDB를 사용하면 테이블과 항목을 생성할 수 있습니다. 테이블에 항목을 추가할 수 있습니다. 자동으로 데이터를 분할하며 테이블 스토리지를 제공하여 워크로드 요구 사항을 충족합니다.

Amazon DynamoDB 기술 이점

Amazon DynamoDB는 빠르고 확장성이 우수한 비관계형 데이터베이스 서비스입니다.

Amazon DynamoDB의 이점

  • 완전관리형

    데이터베이스 테이블을 생성하고 오토스케일링을 위한 목표 처리량을 설정하면 서비스가 자동으로 데이터베이스 관리 태스크를 수행합니다. 하드웨어나 소프트웨어 프로비저닝, 설정 및 구성, 소프트웨어 패치, 분산형 데이터베이스 클러스터 운영, 크리 조정에 따른 여러 인스턴스의 데이터 파이셔닝을 처리합니다. 또한 DynamoDB는 모든 테이블에 대해 시점 복구, 백업 및 복원을 제공합니다.

  • 대기 시간이 짧은 쿼리

    쿼리를 실행할 때 평균 서비스 측 대기시간은 일반적으로 10밀리초 미만입니다. 데이터 볼륨이 증가하고 애플리케이션 성능 요구가 늘어남에 따라 DynamoDB는 이러한 요구에 맞게 조정됩니다. 자동 파티셔닝 및 SSD 기술을 사용하여 처리량 요구 사항을 충복하고 규모와 관계없이 짧은 대기 시간을 제공합니다.

  • 세분화된 액세스 제어

    DynamoDB를 AWS Identity 및 Access Management(IAM)와 함께 사용하여 조직 내 사용자의 액세스를 세부적으 로 제어할 수 있습니다. 따라서 개별 사용자에게 고유한 보안 인증을 할당 하고 서비스 및 리소스에 대한 각 사용자의 액세스를 제어할 수 있습니다.

  • 유연성

    DynamoDB는 데이터를 JSON(JavaScript Object Notation) 문서로 저장, 쿼리 및 업데이트하는 것을 지원합니다. 이러한 지원으로 인해 반정 형 데이터를 저장하고 JSON 쿼리를 사용하여 이를 조작하기에 적합합니다.

또한 Amazon DynamoDB를 Amazon CloudWatch와 함께 사용하여 처리량과 대 기 시간 요청 통계를 확인할 수 있습니다.

Amazon DynamoDB 이해

Amazon DynamoDB 이해

  • 일부 Amazon DynamoDB 고객은 Amazon DynamoDB에 수십억 개의 항목을 포함하는 테이블을 보유하고 있습니다.
  • 새로운 형식의 항목은 스키마 마이그레이션을 수행할 필요 없이 동일한 테이블에 이전 항목과 나란히 저장할 수 있습니다.
  • 애플리케이션이 점점 더 많이 사용되고 사용자가 이 애플리케이션과 계속 상호 작용할 경우 애플리케이션의 요구에 따라 데이터베이스가 증가할 수 있습니다.

스토리지 확장 외에 DynamoDB는 테이블에 필요한 읽기 또는 쓰기 처리량도 프 로비저닝할 수 있습니다. 애플리케이션 사용자 수가 증가하면, 수동 프로비저닝 을 통해 증가된 수의 읽기/쓰기 요청을 처리할 수 있도록 DynamoDB 테이블의 크기를 조정할 수 있습니다. 또는 DynamoDB가 테이블의 로드를 모니터링하고 자동으로 프로비저닝된 처리량을 늘리거나 줄일 수 있도록 오토스케일링을 활 성화할 수 있습니다. 추가적인 주요 차별화 기능으로는 선택한 AWS 리전에 걸친 자동 복제를 지원하 는 전역 테이블, 저장 데이터의 암호화 및 항목 유지 시간(TTL)이 있습니다.

핵심 개념: 테이블, 항목 및 속성

Amazon DynamoDB는 NoSQL 데이터베이스 서비스입니다.

주요 개념

DynamoDB의 핵심 개념:

  • 테이블

    다른 데이터베이스 시스템과 유사하게 DynamoDB는 테이블에 데이터를 저장합니다.

    테이블 은 데이터의 모음입니다.

    ​ 예를 들어 친구, 가족 또는 기타 관심 있는 사 람에 대한 개인 연락처 정보를 저장하는 데 사 용할 수 있는 People이라는 테이블이 있을 수 있습니다.

  • 항목

    각 테이블에는 0개 이상의 항목이 있습니다.

    항목 은 전체 항목 중에서 고유하게 식별할 수 있는 속성의 그룹입니다.

    ​ 예를 들어 예시의 People 테이블에서 각 항목 은 사람을 나타냅니다.

  • 속성

    각 항목은 하나 이상의 속성으로 구성됩니다.

    속성 은 더 이상 나눌 필요가 없는 기본적인 데이터 요소입니다.

    ​ 예를 들어 People 테이블의 항목에는 PersonID, LastName, FirstName 등의 속성이 있을 수 있습니다.

Amazon DynamoDB 전역 테이블

image-20231029200151954

DynamoDB 전역 테이블 기능은 여러 리전 간에서 고가용성과 확장성을 제공합 니다.

전역 테이블은 단일 AWS 계정이 소유해야 하는 한 개 이상의 DynamoDB 테이블의 모음입니다. 모음의 테이블은 복제 테이블이라고도 합니다. 복제 테이 블(또는 복제본)은 전역 테이블의 일부로 기능하는 단일 DynamoDB 테이블입니다. 각 복제본에는 동일한 데이터 항목 집합이 저장됩니다. 전역 테이 블은 AWS 리전당 한 개의 복제 테이블만 가질 수 있습니다. 모든 복제본은 동일 한 테이블 이름과 동일한 기본 키 정의를 가집니다.

전역 테이블을 만들 때, 테이블을 제공하고자 하는 AWS 리전을 지정해야 합니 다. DynamoDB는 이러한 리전에 동일한 테이블을 만들고, 이 모든 테이블에 대 한 지속적인 데이터 변경을 전파하기 위해 필요한 모든 태스크를 수행합니다.

DynamoDB 전역 테이블은 전역적으로 분산된 사용자가 있는 대규모 애플리케 이션과 함께 잘 작동합니다. 이러한 환경에서 사용자는 자신과 근접한 복제본에 액세스하여 빠른 애플리케이션 성능을 기대할 수 있습니다. 또한, AWS 리전 중 하나를 임시로 사용하지 못하게 되더라도 사용자는 여전히 다른 리전에서 동일 한 데이터에 액세스할 수 있습니다.

핵심 개념: 파티션 키, 파티션 키 및 정렬 키

테이블 및 데이터

핵심 구성 요소

  • DynamoDB는 2가지 종류의 기본 키를 지원합니다.
    • 파티션 키
    • 파티션 및 정렬 키

키 이해

테이블을 생성할 때 테이블 이름과 더불어 테이블의 기본 키를 지정해야 합니다.

  • 파티션 키파티션 키라는 하나의 속성으로 구성된 단순 기본 키입니다.
  • 파티션 키와 정렬 키는 2개의 속성으로 구성된 복합 기본 키라고도 합니다.

기본 키는 테이블의 각 항목을 고유하게 식별하므로 두 항목이 동일한 키를 가질 수 없습니다.

음악 테이블 예시

다이어그램은 몇 가지 예시 항목과 속성 및 기본 키가 있는 Music이라는 테이블을 보여줍니다.

  • Music의 기본 키는 2개의 속성으로 구성됩니다 (Artist 및 SongTitle).

    • 테이블의 각 항목은 이러한 두 속성을 가져야 합니다.

    Music 테이블

    {
    	"Aritist": "No One You Know",
    	"SongTitle": "My Dog Spot",
    	"AlbumTitle": "Hey Now",
    	"Price": 1.98,
    	"Genre": "Country",
    	"CriticRating": 8.4
    }
    
  • Music 테이블은 스키마가 없으며, 이는 속성이나 데이터 유형을 사전에 정의할 필요가 없음을 의미합니다. 각 항목은 자체의 개별 속성을 가질 수 있습니다.

작동 방식

Amazon DynamoDB가 데이터를 분산하는 방식

데이터 분산 방식 이해

DynamoDB가 데이터를 저장하는 방법:

  • Amazon DynamoDB는 파티션에 데이터를 저장합니다. 파티션은 SSD(Solid State Drive)로 지원되는 테이블용 스토리지 할당으로, 한 AWS 리전 내의 여러 가용 영역에 자동으로 복제됩니다.

DynamoDB가 항목을 저장하고 검색하는 방법:

  • 테이블에 기본 키(파티션 키만)가 있는 경우, DynamoDB는 해당 파티션 키 값에 따라 각 항목을 저장하고 검색합니다.

DynamoDB가 테이블에 항목을 쓰는 방법:

  • DynamoDB는 내부 해시 함수에 대한 입력으로 파티 션 키의 값을 사용합니다. 해시 함수 출력 값에 따라 항목을 저장할 파티션이 결정됩니다.

DynamoDB가 테이블에서 항목을 읽는 방법:

  • 테이블에서 항목을 읽으려면 항목의 파티션 키 값을 지정해야 합니다. DynamoDB는 이 값을 해시 함수에 대한 입력으로 사용하여 항목을 찾을 수 있는 파티션 을 산출합니다.

Amazon DynamoDB: 작동 방식

image-20231029201258420

DynamoDB에서는 데이터가 테이블에 저장됩니다. 테이블에는 속성이 있는 항목이 포함되어 있습니다. 항목은 관계형 데이터베이스의 행 또는 튜플로, 속성 은 열로 간주할 수 있습니다.

DynamoDB는 데이터를 파티션에 저장하고 테이블의 항목을 파티션 키 값에 따 라 여러 파티션으로 나눕니다. 파티션은 테이블의 스토리지 할당입니다. SSD로 지원되며 한 AWS 리전의 여러 가용 영역에 걸쳐 자동으로 복제됩니다. DynamoDB는 파티션 관리를 처리합니다. 항목의 파티션 키를 해시 속성이라고 도 합니다.

정렬 키는 파티션 키 값이 동일한 모든 항목을 서로 물리적으로 가까이 저장하도록 정의할 수 있습니다. 정렬 키는 파티션의 정렬 키 값으로 항목의 순 서를 지정할 수 있습니다. 파티션 키를 기준으로 일대다 관계를 나타내며 정렬 키 속성에 대한 쿼리를 지원합니다.

테이블에는 테이블의 각 항목을 고유하게 식별하는 기본 키가 있습니다. 기본 키의 2가지 유형은 다음과 같습니다.

  • 파티션 기본 키
    • 기본 키는 단일 속성인 파티션 키로 구성됩니다. DynamoDB는 이 기본 키 속성에 순서가 지정되지 않은 인덱스를 생성합니 다. 테이블의 각 항목은 파티션 키 값에 따라 고유하게 식별됩니다.
  • 파티션 및 정렬 기본 키
    • 기본 키는 2가지 속성으로 구성됩니다. 첫 번째 속성은 파티션 키 속성이고, 두 번째 속성은 정렬 키 속성입니다. DynamoDB는 파티션 키 속성에 순서가 지정되지 않은 인덱스를, 정렬 키 속성에 순서가 지정된 인덱스를 생성합니다. 테이블의 각 항목은 파티션 키 값과 정렬 키 값의 조합으로 고유하게 식별됩니다.

파티셔닝의 개념

파티셔닝과 파티셔닝의 개념

image-20231029201459267

  • 데이터는 테이블에 저장됩니다.
  • 테이블 데이터는 기본 키를 기준으로 파티셔닝되고 인덱싱됩니다.
  • 쿼리는 키본 키를 사용하여 효과적으로 항목을 찾기 위해 테이블 파티셔닝을 사용합니다.

데이터가 증가함에 따라 테이블 데이터는 기본 키를 기준으로 파티셔닝되고 인 덱싱됩니다.

DynamoDB 테이블에서 데이터를 검색하는 방법은 2가지가 있습니다.

  1. 첫 번째 방법에서는 쿼리 작업이 기본 키를 사용하여 항목을 효과적으로 찾기 위해 테이블 파티셔닝을 활용합니다.
  2. 두 번째 방법은 스캔을 사용하며, 키가 아닌 속성의 조건을 매칭하여 테이블의 항목을 찾을 수 있습니다.
    • 두 번째 방법은 다른 속성을 기준으로 항목을 찾을 수 있는 유연성을 제공합니다.
    • 그러나 DynamoDB가 테이블의 모든 항목을 스캔하여 기준에 맞는 항목을 찾기 때문에 작업의 효율성이 떨어집니다.

파티셔닝

파티셔닝의 개념

image-20231029201718290

파티션은 SSD(Solid State Drive)로 지원되는 테이블용 스토리지 할당으로, 한 AWS 리전 내의 여러 가용 영역에 자동으로 복제됩니다.

학습 내용 확인

  1. 프로젝트를 신속하게 시작해야 할 때 비관계형(NoSQL) 데이터베이스가 좋은 선택인 이유는 무엇입니까?

    NoSQL 데이터베이스에는 유연한 스키마가 있어 데이터 엔지니어링이 필요 하지 않습니다. 개발자는 데이터 간 관계를 이해할 필요 없이 신속하고 간편 하게 데이터로 작업할 수 있습니다

  2. 데이터가 파티셔닝되는 위치를 담당하는 요소는 무엇입니까?

    데이터가 파티셔닝되는 위치를 담당하는 것은 기본 키입니다.

  3. Amazon DynamoDB 테이블에서 항목을 생성할 때 각 항목은 동일한 속성을 가져야 합니까?

    아니요. DynamoDB는 NoSQL 데이터베이스이기 때문에 개별 항목은 다른 항목과 다른 속성을 가질 수 있습니다.

  4. Amazon DynamoDB가 DynamoDB 테이블에서 데이터를 가져오는 방법은 몇 가지입니까?

    2가지입니다. full scan, index scan

핵심 사항

  • DynamoDB는 완전관리형 NoSQL 데이터베이스 서비스입니다.
  • DynamoDB는 모든 규모에서 10밀리초 미만의 일관된 대기 시간을 제공합니다.
  • DynamoDB에는 사실상 테이블 크기 및 처리량 제한이 없습니다.
  • 전역 테이블을 사용하면 리전 간에 데이터를 복제하고 업데이트 충돌을 해결해야 하는 문제를 없애줍니다.

업데이트:

댓글남기기