티스토리 뷰

do/DynamoDB

Dynamo DB #1

dooo.park 2020. 8. 6. 18:24

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
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함