1. DynamoDB란?
AWS에서 제공하는 서버리스 기반 완전 관리형 NoSQL 데이터베이스 서비스
1.1. DynamoDB 특징
- NoSQL 데이터베이스
- 서버리스 기반
- 서버관리 없이 데이터베이스 운영 가능
- 요청한 만큼만 비용 지불
- Auto-Scaling 기능
- 자동으로 조정 가능
- Key - Value로 구성
- 테이블의 속성을 미리 정의해둘 필요가 없고, 유연하게 데이터 처리 가능
1.2 NoSQL 데이터베이스란?
일반적인 DB와 달리 테이블 생성시 스키마 생성 필요 없다.
NoSQL은 관계 정의가 없기 때문에 JOIN 기능을 사용할 수 없다.
Key-Value 방식, Document 방식 등 여러 DB가 있다. Amazon DynamoDB는 Key-Value 방식으로 각 레코드는 Key-Value를 가진다.
2. DynamoDB - Primary Keys (PK)
특정 데이터를 선택하기 위해서 일반 DB처럼 PK를 이용해서 데이터를 관리
파티션 키 (Partition Key)
- 고유 특징을 가진 기본키
- 물리적인 공간 (실제 데이터가 들어가는 공간) 지정
- 파티션키 사용시 동일한 두개의 데이터가 같은 위치에 저장될 수 없음
- 주소를 알고 있어 데이터를 빠르게 가져올 수 있음
- 파티션 키는 일치하는 값만 가져올 수 있고 =,>,<등과 같은 연산자를 사용하는 범위지정은 불가능
- '정렬 키'와 함께 복합 키로도 사용 가능
정렬 키(Sort Key)
- 정렬 키는 파티션 안에서 레코드들을 정렬할 때 사용
- Number, Binary, String 타입 지원
- 범위지정하여 검색도 가능
- 정렬 키의 값이 똑같더라도 파티션 키가 다르기 때문에 정렬 키만을 기준으로 쿼리할 수 없다 -> 보조인덱스 사용
복합 키 (Composite Key)
- 파티션 키(Partition Key) + 정렬 키(Sort Key)
예시: 사용자 활동 기록 저장
상황: 사용자의 특정 날짜별 활동 로그를 저장하는 경우
- 파티션 키: 사용자ID
- 정렬 키: 활동 날짜(Timestamp)
같은 사용자 ID를 가진 활동 기록들이 하나의 파티션에 저장되고, 해당 사용자의 활동이 날짜순으로 정렬
예를 들어, 사용자 user123의 활동이 아래와 같이 저장됨
사용자ID (Partition Key) | 활동 날짜 (Sort Key) | 활동 내용 |
user123 | 2024-01-01 10:00:00 | 게시물 작성 |
user123 | 2024-01-02 14:30:00 | 댓글 작성 |
user123 | 2024-01-02 16:45:00 | 좋아요 표시 |
3. 데이터 접근 관리
- AWS IAM으로 관리할 수 있다!
테이블 생성과 접근 권한 부여
특정 테이블만, 특정 데이터만 접근 가능하게 하는 특별한 IAM 역할 존재
4. 인덱스(Index) 개요
DynamoDB에서 인덱스는 효율적인 데이터 조회를 가능하게 하는 구조
큰 테이블에서 특정 기준으로 데이터를 조회할 수 있으며, 두 가지 주요 인덱스 유형이 있다.
- Local Secondary Index (LSI): 테이블 생성 시에만 정의 가능
- Global Secondary Index (GSI): 테이블 생성 후에도 추가 및 수정 가능
4.1. Local Secondary Index (LSI)
LSI는 테이블 생성 시 파티션 키는 동일하게 유지하지만, 정렬 키를 변경하여 조회 성능을 최적화할 수 있다.
- 특징:
- 테이블 생성 시에만 정의할 수 있어, 생성 후 변경이 불가능
- 파티션 키는 기본 키와 같음
- 정렬 키를 변경해 특정 기준으로 데이터 정렬이 가능
- 정렬 키는 속성 (Number, String, Binary)로 구성
- 예시: 고객 구매 내역을 조회할 때, 고객 ID는 같지만 날짜별로 데이터를 정렬할 수 있다.
파티션 키 (고객 ID) 정렬 키 (구매 날짜) 구매 품목 customer123 2024-01-01 노트북 customer123 2024-01-10 책 customer123 2024-01-20 키보드
4.2 Global Secondary Index (GSI)
GSI는 파티션 키와 정렬 키 모두를 새로 정의할 수 있어 유연성이 높고, 테이블 생성 후에도 추가 및 수정이 가능
- 특징:
- 테이블이 생성된 후에도 인덱스를 추가하거나 수정할 수 있다.
- 다른 파티션 키와 정렬 키를 설정할 수 있어 다양한 조회 조건을 지원한다.
- 정렬 키는 생략 가능하다.
- 예시: 구매물품의 카테고리와 브랜드별로 조회하고자 할 때 GSI를 사용할 수 있다.
- 예를 들어, 구매물품 카테고리를 파티션 키로, 구매 날짜를 정렬 키로 지정
파티션 키 (카테고리) 정렬 키 (구매 날짜) 브랜드 구매 품목 전자제품 2024-01-05 삼성 태블릿 전자제품 2024-01-15 LG 노트북 도서 2024-01-20 한빛 프로그래밍 책
5. Query
Query는 Primary Key를 이용해 데이터를 검색하는 방식으로, 빠르고 효율적
- 특징:
- 기본적으로 Primary Key를 통해 특정 데이터를 찾는다.
- ProjectionExpression 파라미터를 사용해 반환할 컬럼을 제한할 수 있다.
- 예시: 특정 거래 ID로 거래 내역을 조회할 때 사용합니다.
거래ID 가격 거래 시간 AAA 2500 2024-02-01 15:00:00 BBB 3000 2024-02-02 16:30:00
6. Scan
Scan은 테이블 전체 데이터를 탐색하는 방식으로, 쿼리 조건이 없어 모든 데이터를 검색한다.
- 특징:
- Primary Key가 아닌 다른 컬럼도 사용할 수 있다.
- 테이블 전체를 탐색하기 때문에 대량의 데이터가 있는 경우 성능이 떨어질 수 있다.
- ProjectionExpression 파라미터를 사용하여 필요한 컬럼만 선택할 수 있다.
- 예시: 모든 거래 내역을 조회해야 할 때 사용합니다.
가격 거래ID 거래 시간 2500 AAA 2024-02-01 15:00:00 3000 BBB 2024-02-02 16:30:00
7. Query vs Scan
Query가 Scan보다 훨씬 효율적이다.
기능 | Query | Scan |
사용 목적 | 특정 Primary Key 조회 | 테이블 전체 데이터 조회 |
효율성 | 높음 (빠른 데이터 검색) | 낮음 (모든 데이터 탐색) |
주요 활용 | 특정 고객의 거래 내역 조회 | 전체 주문 내역 확인 |
선택적 데이터 | ProjectionExpression으로 일부 컬럼 선택 | ProjectionExpression으로 일부 컬럼 선택 |
참고강의
https://www.inflearn.com/course/aws-%EC%9E%85%EB%AC%B8
'백엔드 공부일지 > AWS 공부일지' 카테고리의 다른 글
[AWS] VPC / Subnet / Routing Table / Internet Gateway (1) | 2024.11.11 |
---|---|
[AWS] DynamoDB: DAX & Stream (4) | 2024.11.05 |
[AWS] S3 사용 용례 & 암호화 (1) | 2024.10.06 |
[AWS] S3와 S3 스토리지 종류 (0) | 2024.10.06 |
[AWS] RDS 읽기 전용 복제본 & AZ 가용영역 (1) | 2024.09.29 |