티스토리 뷰
Amazon DynamoDB
- Amazon DynamoDB는 종합 관리형 NoSQL 데이터베이스 서비스
- 규모에 관계없이 데이터를 저장 및 검색하고, 어떠한 요청 트래픽이라도 처리할 수 있는 데이터베이스 테이블을 생성할 수 있다.
- 성능 저하 없이 테이블의 처리 능력을 자동으로 확장 및 축소(Auto Scaling)할 수 있다.
- 온디맨드 백업을 지원하여 최근 35일 내에 특정 시점으로 테이블을 복원할 수 있다.
DynamoDB의 구성요소
-
테이블/항목/속성, 기본 키, 보조 인덱스, 스트림
1. 테이블, 항목, 속성
- 테이블 : 다른 데이터 베이스들과 마찬가지로 테이블은 데이터의 집합이다.
(DynamoDB에서 테이블은 항목들의 집합)
- 항목 : 속성들의 집합. 각 테이블에는 0개 이상의 항목이 들어간다.
- 속성 : 최소한의 데이터 요소. 기존 데이터베이스의 필드 또는 컬럼과 같다.
ex) People 테이블의 하나의 항목과 속성들
{
"ID" : 103, // 기본키
"LastName" : "Stepen",
"FirstNAme" : "Howard",
"Address" : {
"Street" : "123 Main",
"City: "London",
"PostalCode" : "ER3 5K8"
},
"FavoriteColor" : "Blue",
}
- 각 항목에는 기본키가 있다. 여기서는 ID가 기본키 이다.
- 기본키를 제외하면 People테이블에는 별도의 스키마가 없다. 이는 항목 내부의 속성이나 데이터 형식을 정할 필요가 없음을 의미하고 속성들은 얼마든지 늘어날 수 있다.
- 대부분의 속성은 스칼라로서, 하나의 값만 가질 수 있다.
- 일부 항목은 내포 속성을 가질 수 있다.(Address)
2. 기본 키
- 테이블에는 항상 기본키가 존재해야 한다. 각 기본키는 고유하며 중복된 항목이 존재할 수 없다.
- DynamoDB에는 두 가지 기본키가 있다.
1. 파티션 키 : 하나의 속성으로 구성되는 단순 기본 키
2. 파티션 키 및 정렬 키 : 복합 기본키로 두 개의 속성으로 구성된다. 첫 번째 속성은 파티션 키이고 두 번째 속성이 정렬 키가 된다.
두 개의 항목이 동일한 파티션 키를 가질 수 있으나 정렬키 값은 달라야 한다.
3. 보조 인덱스
- 테이블에서 하나 이상의 보조 인덱스를 생성할 수 있다.
- 기본키에 대한 쿼리 및 대체키를 사용하여 데이터에 대한 쿼리를 실행할 수 있다.
- 보조 인덱스를 생성한 후에는 인덱스로 데이터를 읽을 수 있다.
- DynamoDB에는 두 가지 종류의 인덱스가 있다.
1. Global Secondary Index : 파티션 키 및 정렬 키가 테이블의 파티션 키 및 정렬 키와 다를 수 있는 인덱스
2. 로컬 보조 인덱스 : 테이블의 파티션 키와 동일하지만 정렬 키는 다른 인덱스
ex) Music 테이블과 GenreAlbumTitle이라는 새 인덱스 (파티션 키 : Genre, 정렬 키 : AlbumTitle)
-> Music 테이블에서 Artist(파티션 키) 또는 ArtistArtist와SongTitle(파티션 키 및 정렬 키)을 기준으로 데이터 항목에 대한 쿼리가 가능하다.
만약, Genre 및 AlbumTitle로도 데이터를 쿼리 하고 싶다면?
Genre 및 AlbumTitle에 대해 인덱스를 생성한 후 인덱스를 쿼리 하면 된다.
{
"Aritist" : "No One You Know", // Music Table 파티션 키
"SongTitle" : "My Dog Spot", // Music Table 정렬 키
"AlbumTitle" : "Hey Now",
"Price" : "1.98,
"Genre" : "Country"
}
{
"Genre" : "Country", // 새로운 인덱스의 파티션 키
"AlbumTitle" : "Hey Now", // 새로운 인덱스의 정렬 키
"Artist" : "No One You Know",
"SongTitle" : My Dog Spot"
},
- 모든 인덱스는 테이블에 속해있는데 이를 기본 테이블이라고 한다. (여기서는 Music Table)
- 기본 테이블의 항목을 추가, 업데이트, 삭제하면 그 테이블에 속하는 인덱스의 해당 항목을 자동으로 추가, 업데이트, 삭제한다.
4. 스트림
- 스트림은 DynamoDB 테이블의 데이터 수정 이벤트를 선택하는 선택적 기능이다.
- 각 이벤트는 스트림 레코드에 의해 나타나고, 스트림을 설정하면 다음 이벤트마다 스트림 레코드를 기록한다.
1. 항목이 추가된 경우 : 스트림이 해당 속성을 모두 포함하여 전체 항목의 이미지 캡처
2. 항목이 업데이트된 경우 : 항목에서 수정된 속성의 사전, 사후 이미지 캡처
3. 항목이 삭제된 경우 : 항목이 삭제되기 전 전체 항목 이미지 캡처
ex) 사용 케이스 예시
DynamoDB와 AWS Lambda를 사용하여 관심 있는 이벤트가 스트림에 표시될 때 코드를 실행할 수 있다.
-> 테이블에 항목이 추가되었을 때 람다 함수에서 특정 함수를 실행한다.
참고 : https://docs.aws.amazon.com/ko_kr/amazondynamodb/latest/developerguide/Introduction.html
'do > DynamoDB' 카테고리의 다른 글
DynamoDB #2 (0) | 2020.08.11 |
---|