BTC_톰캣 2023. 9. 15. 13:49

베하

비티시 보이즈 입니다!

 

오늘은 AWS의 관리형 NoSQL 데이터베이스 서비스인 DyanmoDB에 대해 알아 보겠습니다!

 

DynamoDB란?

AWS의 DyanmoDB 서비스는 빠르고 확장 가능한 완전 관리형 NoSQL 데이터베이스 서비스 입니다.
DyanmoDB의 특징은 다음과 같습니다.

- NoSQL 데이터베이스로서 스키마리스 형태의 데이터 모델을 사용하며, Json과 같은 유연한 데이터 형식을 지원합니다.

- SSD 스토리지를 사용하여 읽기 및 쓰기 속도가 매우 빠름

- Auto-Scaling 기능이 탑재되어 있어 필요에 따라 용량과 처리량을 조정할 수 있습니다

- 높은 가용성을 보장하며 특정시점으로 백업 가능합니다.

- 다운타임 또는 성능 저하 없이 테이블의 처리 능력을 확장 또는 축소할 수 있습니다.

- AWS Management Console을 사용하여 리소스 사용률 및 성능 지표를 모니터링 할 수있습니다.

- IAM 권한을 이용하여 데이터 접근을 관리 할 수 있습니다.

  (특정 테이블, 특정 데이터만 접근 가능하게 해주는 IAM 역할)

- Global Table을 설정하면 어느가용영역이든 어느 리전에서든 접근 가능 할 수 있게 설계할 수 있습니다.

 

이러한 특징을 가진 DynamoDB는 대용량의 트래픽에대해 데이터를 처리해야하는 서비스와 실시간 데이터를 사용할 때 많이 이용하게 됩니다.

 

DyanmoDB의 구성요소

DynamoDB의 구성요소는 다음과 같습니다.

- 테이블 : 데이터의 집합, 다른 DB시스템들과 마찬가지로 DynamoDB또한 데이터를 테이블에 저장합니다. 

  테이블의 각 항목에는 항목을 테이블의 다른 모든 항목과 구별해 주는 고유 식별자인 기본 키가 있습니다.

  기본키는 하나의 속성으로 구성 될 수도 있고, 여러개의 속성으로 구성할 수 있습니다.

- 항목 : 행, 레코드, 튜플과 유사하며 DyanmoDB 에서는 테이블에 저장할 수 있는 항목의 수에 제한이 없습니다.

- 속성 : 필드, 열과 유사하며 각 항목은 하나 이상의 속성으로 구성됩니다.

 

 

People #테이블
#항목 A
{
    "PersonID": 101,     #속성 1     #항목을 구별해주는 기본 키
    "LastName": "Smith", #속성 2     
    "FirstName": "Fred", #속성 3
    "Phone": "555-4321" #속성 4
}
#항목 B
{
    "PersonID": 102,
    "LastName": "Jones",
    "FirstName": "Mary",
    "Address": {                       #DyanmoDB는 스키마리스로서 데이터 형식을 미리 정의할 필요가 없음
                "Street": "123 Main",
                "City": "Anytown",
                "State": "OH",
                "ZIPCode": 12345
    }
}
#항목 C
{
    "PersonID": 103,
    "LastName": "Stephens",
    "FirstName": "Howard",
    "Address": {
                "Street": "123 Main",
                "City": "London",                                    
                "PostalCode": "ER3 5K8"
    },
    "FavoriteColor": "Blue"
}

 

그리고 DynamoDB의 기본키와 보조인덱스에 대해 알아보겠습니다.

기본키

DynamoDB에 테이블을 생성할 때는 테이블 이름과 테이블의 기본 키를 지정해야 합니다.

DynamoDB는 두 가지의 기본 키를 지원합니다.

 

파티션 키

- 파티션 키로 알려진 하나의 속성으로 구성되는 단순 기본키

- DynamoDB는 내부 해시 함수에 대한 입력으로 파티션 키 값을 사용합니다. 해시 함수 출력에 따라 항목을 저장할 파티션이 결정 됩니다. / 파티션이란 DynamoDB 내부의 물리적 스토리지

- 파티션 키(단순 기본키)로만 구성되어 있는 테이블에서는 어떤 두 개의 테이블 항목도 동일한 파티션 키 값을 가질 수 없습니다.

 

파티션 키 및 정렬  키

- 복합 기본 키로 지칭 되는 이 형식의 키는 두 개의 속성으로 구성됩니다. 첫 번째 속성은 파티션 키, 두 번째 속성은 정렬 키 입니다.

- 이렇게 복합 기본키를 사용하는 경우 여러 항목이 동일한 티션 키 값을 가질 수 있습니다. 하지만 아이템 정렬 키 값은 달라야 합니다.

- 복합 기본 키를 사용하면 보다 유연하게 데이터를 쿼리할 수 있습니다.

아래와 같은 Music 테이블의 경우 복합키를 사용하여 Artist의 파티션 키를 사용해서 같은 Artist의 노래를 모두 찾을 수 있습니다.

 

Music

{
    "Artist": "No One You Know",
    "SongTitle": "My Dog Spot",
    "AlbumTitle": "Hey Now",
    "Price": 1.98,
    "Genre": "Country",
    "CriticRating": 8.4
}

{
    "Artist": "No One You Know",
    "SongTitle": "Somewhere Down The Road",
    "AlbumTitle": "Somewhat Famous",
    "Genre": "Country",
    "CriticRating": 8.4,
    "Year": 1984
}

{
    "Artist": "The Acme Band",
    "SongTitle": "Still in Love",
    "AlbumTitle": "The Buck Starts Here",
    "Price": 2.47,
    "Genre": "Rock",
    "PromotionInfo": {
        "RadioStationsPlaying": {
            "KHCR",
            "KQBX",
            "WTNR",
            "WJJH"
        },
        "TourDates": {
            "Seattle": "20150622",
            "Cleveland": "20150630"
        },
        "Rotation": "Heavy"
    }
}

{
    "Artist": "The Acme Band",
    "SongTitle": "Look Out, World",
    "AlbumTitle": "The Buck Starts Here",
    "Price": 0.99,
    "Genre": "Rock"
}

 

 

여기까지 DynamoDB에 대해 알아 보았습니다!

다음글에서는 DynamoDB 보조인덱스, DyanmoDB Streams등에 대해 더 알아보겠습니다~