DynamoDB 개요 - AWS 규범적 지침

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

DynamoDB 개요

Amazon DynamoDB는 NoSQL 키-값 및 문서 데이터베이스로 원활한 확장성과 함께 빠르고 예측 가능한 성능을 제공합니다. 완벽하게 관리되는 다중 지역, 다중 활성 및 내구성이 뛰어난 데이터베이스입니다. (DynamoDB의 글로벌 테이블 기능은 한AWS 리전의 수정 사항을 선택한 다른 모든 리전과 자동으로 동기화하여 멀티 액티브 지원을 제공합니다.) DynamoDB에는 내장된 보안 기능, 백업 및 복원 옵션, 인터넷 규모 애플리케이션을 위한 인메모리 캐싱이 있습니다.

스키마가 없는 NoSQL 데이터베이스의 특성은 데이터베이스 (읽기 스키마) 변경을 프로덕션 환경으로 푸시하는 데 필요한 시간과 프로세스를 줄여 빠른 애플리케이션 개발 (RAD) 을 가능하게 합니다. DynamoDB와 같은 NoSQL 데이터베이스는 고성능 읽기/쓰기 작업을 위해 구축되었습니다.

특징 및 이점

DynamoDB는 다음과 같은 기능 및 이점을 제공합니다.

  • 관리할 서버 불필요 — DynamoDB는 완전 관리형 NoSQL 데이터베이스 서비스이므로 서버 유지 관리 오버헤드가 발생하지 않습니다.

  • 스키마 없음 — DynamoDB는 신속한 애플리케이션 개발 및 배포를 지원합니다.

  • 대규모 성능 — DynamoDB는 원활한 확장성과 함께 빠르고 예측 가능한 성능을 제공합니다.

  • ACID 지원 — DynamoDB는 원자성, 일관성, 격리 및 내구성 (ACID) 트랜잭션을 지원하여 데이터 정확성을 유지하는 데 도움이 됩니다.

  • 뛰어난 가용성 및 내구성 — 데이터는 솔리드 스테이트 디스크 (SSD) 에 저장되고AWS 리전의 여러 가용 영역에 걸쳐 자동 복제되므로 기본적으로 높은 가용성과 데이터 내구성을 제공합니다.

  • 자동 조정 — DynamoDB는AWS Application Auto Scaling 서비스를 사용하여 트래픽 패턴에 따라 프로비저닝된 처리 용량을 동적으로 조정합니다.

  • 유연한 요금 옵션 — DynamoDB는 특정 결제 옵션이 포함된 두 가지 용량 모드 (온디맨드 용량 모드와 프로비저닝된 용량 모드) 를 제공합니다.

  • Point-in-time 복구 — 복구를 사용하여 point-in-time 연속 백업을 활성화하여 실수로 인한 쓰기 또는 삭제 작업으로부터 테이블을 보호하고 지난 35일 동안의 특정 시점으로 테이블을 복원할 수 있습니다.

  • TTL (TTL) — 지정된 기간이 지나면 DynamoDB 테이블에서 항목을 자동으로 삭제할 수 있습니다.

  • 글로벌 테이블 — 자체 복제 솔루션을 구축하지 않고도 여러AWS 리전에 여러 복제본을 배포할 수 있습니다.

  • 글로벌 보조 인덱스 — 테이블 고유의 파티션 및 정렬 키와 다른 파티션 및 정렬 키를 사용하여 DynamoDB 테이블을 쿼리할 수 있습니다.

  • DAX — DynamoDB 가속기 (DAX) 캐싱 서비스는 읽기 작업에 1밀리초 미만의 응답 시간을 제공합니다.

  • DynamoDB Streams Simple — 이 기능은 시간 순서에 따라 항목 수준 수정을 로그에 제공하여 DynamoDB 테이블의 변경 사항을 실시간으로 추적해 알릴 수 있도록 지원합니다.

이러한 이점에 대한 자세한 내용은AWS 웹 사이트의 Amazon DynamoDB 기능을 참조하십시오. 다음 섹션에서는 RDBMS에서 DynamoDB로 마이그레이션하여 데이터베이스 워크로드를 현대화하는 것과 관련된 몇 가지 기능에 대해 설명합니다.

파티션 키

DynamoDB는 스키마가 없으므로 테이블의 모든 속성을 정의할 필요는 없습니다. 파티션 키 속성은 필수이며 정렬 키는 선택 사항입니다. 나머지 속성은 임의적이며 항목마다 다를 수 있습니다. 자주 액세스하는 항목이 같은 파티션에 있지 않도록 카디널리티가 높은 파티션 키를 선택하는 것이 좋습니다. 이렇게 하면 데이터 액세스 불균형 및 핫 파티션을 방지하는 데 도움이 됩니다. 자세한 내용은 DynamoDB 설명서에서 효과적으로 파티션 키를 설계해 사용하는 모범 사례를 참조하세요.

인덱스

인덱스를 사용하면 대체 쿼리 패턴에 액세스할 수 있으며 쿼리 속도를 높일 수 있습니다. 관계형 데이터베이스를 사용하든 DynamoDB를 사용하든 관계없이 인덱스를 신중하게 생성해야 합니다. 테이블에서 쓰기 작업이 발생할 때마다 해당 테이블의 모든 인덱스를 업데이트해야 합니다.

글로벌 보조 인덱스는 기본 테이블의 속성 중 일부를 포함하지만 테이블 기본 키와 다른 기본 키를 기준으로 구성됩니다. DynamoDB에서 글로벌 보조 인덱스는 기본적으로 스파스 인덱스입니다. 즉, 정렬 키는 선택 사항이며 모든 테이블 항목에 나타나지는 않습니다. 이 기능을 활용하려면 필요한 속성만 저장하고 프로젝션하는 글로벌 보조 인덱스를 만들 수 있습니다. DynamoDB 테이블에는 최대 20개의 글로벌 보조 인덱스를 포함할 수 있습니다. 이 기능에 대한 자세한 내용은 DynamoDB 설명서에서 DynamoDB의 전역 보조 인덱스 사용을 참조하세요.

TTL(Time To Live)

DynamoDB 테이블에 TTL (TTL) 속성을 설정하여 항목이 더 이상 필요하지 않은 시점을 지정할 수 있습니다. 지정된 타임스탬프 직후 DynamoDB는 추가 용량 단위를 소비하지 않고 테이블에서 항목을 삭제합니다. 이 기능에 대한 자세한 내용은 DynamoDB 설명서에서 DynamoDB Time to Live 를 사용하여 항목 만료를 참조하십시오.

가격 책정 모델

DynamoDB는 프로비저닝 용량과 온디맨드 용량이라는 두 가지 요금 모델 중에서 선택할 수 있습니다. 가격 책정 모델은 예상 워크로드에 따라 선택할 수 있습니다.

가격 책정 모델 워크로드 유형 비용 읽기/쓰기 처리량
프로비저닝된 용량 예측 가능 작음

초당 읽기/쓰기 연산 수는 읽기 용량 단위 (RCU) 및 쓰기 용량 단위 (WCU) 를 기준으로 지정합니다. 예시:

  • 최대 4KB 크기 항목의 경우 RCU 1은 초당 최종적으로 일관된 읽기 2 를 수행할 수 있습니다.

  • 최대 1KB 크기의 항목에 대해 1 WCU는 초당 최종적으로 일관된 읽기 2 를 수행할 수 있습니다.

자동 확장을 활성화하여 트래픽 변화에 따라 용량을 조정할 수 있습니다.

온디맨드 용량 동적 높음

처리량 요구 사항은 지정하지 않습니다. DynamoDB는 워크로드를 자동으로 수용합니다.

읽기 요청 단위 및 쓰기 요청 단위 측면에서 애플리케이션이 테이블에서 수행하는 읽기 및 쓰기에 대해 요금이 부과됩니다. 예시:

  • 8KB 항목에는 최종적으로 일관된 읽기를 위해서는 읽기 요청 단위 1개가 필요하고 비트랜잭션 쓰기 작업을 위해서는 쓰기 요청 단위 8개가 필요합니다.

이 두 모델에 대한 자세한 내용은 DynamoDB 설명서의 읽기/쓰기 용량 모드를 참조하십시오.

트랜잭션

DynamoDB는 단일AWS 계정 및AWS 리전의 하나 이상의 테이블에서 원자성, 일관성, 격리 및 내구성 (ACID) 트랜잭션을 지원합니다.

테이블 내부 및 테이블 간의 여러 항목에 대한 변경 사항을 관리하려면 DynamoDB 트랜잭션TransactWriteItemsTransactGetItems API를 사용할 수 있습니다.

  • TransactWriteItems는 하나 이상의PutItemUpdateItem, 및DeleteItem 작업이 포함된 쓰기 세트를 포함하는 일괄 작업입니다. TransactWriteItems업데이트하기 전에 충족해야 하는 필수 조건을 선택적으로 확인할 수 있습니다. 이러한 조건에는 쓰기 세트의 항목과 동일한 항목 또는 다른 항목이 포함될 수 있습니다. 조건이 충족되지 않으면 거래가 거부됩니다.

  • TransactGetItems하나 이상의GetItem 작업이 포함된 읽기 세트가 포함된 일괄 작업입니다. 활성 쓰기 트랜잭션의 일부인 항목에 대해TransactGetItems 요청을 실행하면 읽기 트랜잭션이 취소됩니다. 이전에 커밋된 값을 가져오려면 표준 읽기 작업을 사용할 수 있습니다.

이러한 API에 대한 자세한 내용은 DynamoDB 설명서에서 Amazon DynamoDB 트랜잭션: 작동 방식을 참조하십시오.

제한 사항

DynamoDB 트랜잭션 API 작업의 제약 조건은 다음과 같습니다.

  • 트랜잭션은 고유 항목을 100개 이상 업데이트할 수 없습니다.

  • 트랜잭션은 4MB를 초과하는 데이터를 포함할 수 없습니다.

  • 트랜잭션에서 동일한 테이블의 동일한 항목에 대해 두 작업을 동시에 수행할 수 없습니다. 예를 들어, 한 트랜잭션에서 동일한 항목에 대해ConditionCheckUpdate 작업을 모두 실행할 수 없습니다.

  • 하나의 트랜잭션을 여러 AWS 계정 또는 리전의 테이블에서 작동할 수 없습니다.

  • 트랜잭션 작업은 쓰기 작업이 원래 수행된AWS 지역 내에서만 ACID 보장을 제공합니다. 전역 테이블에서는 트랜잭션이 리전 간에 지원되지 않습니다.

  • 객체 지속성 모델은 트랜잭션을 지원하지 않습니다. 트랜잭션 기능을 사용하려면 DynamoDB 하위 수준 API를 사용하여 데이터베이스와 테이블에 액세스해야 합니다.

대형 구성 요소

DynamoDB의 크기 제한은 각 항목에 400KB를 초과할 수 없습니다. 이 제한에는 속성 이름 (UTF-8 인코딩 시 이진 길이) 과 속성 값 (이진 길이) 이 모두 포함됩니다. 속성 이름은 크기 제한에 포함됩니다. 예를 들어 두 개의 속성이 있는 항목을 예로 들어 보겠습니다. 하나는 값이 “IN”인 “국가 코드”라는 속성이고 다른 하나는 값이 “country-phone-prefix91"이고 다른 속성은 “" 입니다. 해당 항목의 총 크기는 36바이트입니다.

해결 방법

항목이 여러 특성 및 속성 또는 많은 양의 데이터와 연결되어 있는 경우 크기가 400KB를 초과할 수 있습니다. 이 경우 직렬화된 항목을 Amazon S3 Simple Storage Service (Amazon S3) 에 JSON 형식으로 저장하고 Amazon S3 위치를 항목의 속성 (S3Location) 으로 저장할 수도 있습니다. 해당 항목에 대한 읽기 및 쓰기 작업은 S3 객체를 가져오고 JSON 문자열을 업데이트합니다. 기본 키, 정렬 키, 로컬 인덱스 및 글로벌 보조 인덱스에서 사용하는 모든S3Location 속성은 속성과 함께 테이블에 저장해야 합니다. 이를 위해서는S3Location 속성을 확인하고 Amazon S3에서 전체 항목 데이터를 가져오기 위한 애플리케이션 (데이터 액세스 계층) 의 추가 로직이 필요합니다.

백업 및 복원

Backup 및 복원 지원은 모든 데이터베이스에서 일반적으로 기대되는 기능입니다. DynamoDB는 기본적으로 동일한 계정 내에서 백업 및 복원 작업을 지원하지만 다른 옵션이나 프로세스를 사용하여 여러 계정에서 테이블 복사를 수행할 수 있습니다. 이러한 프로세스는 읽기/쓰기 용량 단위를 소비하지 않습니다. 자세한 내용은AWS 규범 지침 웹 사이트의 Amazon DynamoDB용 교차 계정 전체 테이블 복사 옵션 가이드를 참조하십시오.

제한 사항

DynamoDB는 현재 를 AWS Backup통한 교차 계정 백업 및 복원을 지원하지만 해당 계정은 동일한 조직에 속해 있어야 합니다. 다음 솔루션 중 하나를 채택하여 이 제한을 해결할 수 있습니다.

언어 및 SDK 지원

AWSSDK는.NET, Java, Node.js, Python, PHP 및 Ruby에 대한AWS 서비스 및 지원에 단순화된 프로그래밍 인터페이스를 제공합니다. JavaScript

AWSSDK를 사용하여 DynamoDB 테이블에 액세스하기 위해 객체 지속성 모델 (고수준 인터페이스), 문서 인터페이스 및 하위 수준 인터페이스라는 세 가지 패턴 중에서 선택할 수 있습니다. 자세한 내용은 가이드 후반부의 액세스 패턴을 참조하세요.