DynamoDB 개념
- Item (항목): DynamoDB 테이블의 각 행(Row)을 나타내는 데이터 레코드
- Attribute (속성): 각 항목(Item) 내에 포함된 개별 데이터 필드, 열(Column)이라고 생각하면 편함
{
"UserID": "12345",
"Name": "Alice",
"Age": 30,
"Address": "123 Main St"
}
전체가 **item**,
각 "UserID", "Name", "Age", "Address"가 **attribute**
삭제 비용이 발생하는 이유
DynamoDB에서 Item이나 Attribute를 삭제하는 작업도 쓰기 요청으로 처리되며, 삭제 작업을 수행할 때마다 데이터 양에 따라 **WCU(Write capacity units)**이 사용되고, 삭제할 항목을 조회하거나 특정 조건으로 삭제하려면 읽기 요청에 **RCU(Read capacity units)**도 추가로 소모될 수 있다.
즉, 항목(Item)이나 속성(Attribute)을 삭제할 때 삭제할 데이터를 찾기 위한 RCU(Read capacity units), 삭제를 위한 **WCU(Write capacity units)**가 필요하다
TTL(Time to Live) 활용
TTL이란?
- TTL(Time to Live)은 항목이 특정 시간이 지나면 자동으로 삭제되도록 설정하는 기능이며, TTL 속성에 Unix 타임스탬프 값을 지정하면, 해당 시간이 지나면 DynamoDB가 해당 항목을 백그라운드에서 삭제한다.
TTL의 장점
- 비용 소모 없음: TTL로 삭제된 항목은 별도의 쓰기 요청 없이 백그라운드 프로세스로 자동 삭제되기 때문에 추가적인 WCU나 RCU가 소모되지 않음
- 자동 관리: 설정한 시간에 따라 자동으로 항목이 삭제되므로 편리
- 효율적인 데이터 관리: 주기적으로 만료되는 데이터를 효율적으로 관리할 수 있으며, 수동 삭제 및 타 Batch Job으로 소모되는 리소스를 절약 가능
TTL 사용
- DynamoDB 탐색 창에서 Tables를 선택한 다음 수정하려는 테이블을 선택
- 테이블 세부 정보 페이지의 Additional settings에서 Time To Live (TTL) 설정에 대해 Turn on
- Turn on Time to Live 페이지에서 TTL attribute name에 TTL이 관리될 attribute 이름을 입력한다.
- TTL 시간을 업데이트할 때는 대소문자 구분하여 attribute 이름을 정확히 일치시켜 Unix 타임스탬프 값을 설정한다.
- DynamoDB에서 TTL을 활성화 후, 설정한 시간이 지나면 해당 항목이 자동으로 삭제된다.
💡 TTL 항목은 즉시 삭제되지 않을 수 있고, 백그라운드 작업으로 처리되기 때문에 몇 시간 정도의 지연이 있을 수 있다.
설정이 완료되었다면 입력 한 이름의 TTL Attribute가 추가된다.
{
"UserID": "12345",
"Name": "Alice",
"Age": 30,
"Address": "123 Main St",
**"hamsterTTL": 1737033600**
}
TTL 사용 시 주의사항
- 즉시 삭제가 필요할 때는 부적합: TTL은 즉각적으로 항목을 삭제하지 않기 때문에, 특정 시점에 바로 삭제되기 어려울 수 있음, 며칠 걸릴 수 있다고 함
- Item단위로 관리: TTL은 Item에 적용되기에 Attribute만 제거하기는 어려움
- 데이터 일관성 문제: 삭제 시점에서 실시간 데이터 일관성이 중요하다면 TTL로 인한 지연 삭제가 문제가 될 수 있으므로, 사용 시 유의
💡 자주 안 쓰는 Item은 Storage를 Standard-IA로 변경해도 비용을 절감할 수 있겠다.
삼성 클라우드의 Amazon DynamoDB 비용 최적화 여정 | Amazon Web Services
'CSP (Cloud Service Provider) > AWS' 카테고리의 다른 글
CloudFront Request Header Null 값 (0) | 2024.10.24 |
---|---|
API Gateway 개별 Cache 삭제 방법 (0) | 2024.08.13 |
API Token Bucket (2) | 2024.07.22 |
AWS - Database Data 이관/전송하기 (DMS) (0) | 2024.06.28 |
[AWS] Lambda Connection Handler (0) | 2024.06.17 |
댓글