베하
비티시 보이즈 입니다!
오늘은 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등에 대해 더 알아보겠습니다~
'CSP (Cloud Service Provider) > AWS' 카테고리의 다른 글
[AWS] AWS DMS - LOB 모드 (0) | 2023.09.15 |
---|---|
[AWS] CloudWatch Metric Stream (0) | 2023.09.15 |
VPC Flow Logs (0) | 2023.09.14 |
[AWS] Amazon linux2 + gnuboard5(1) (0) | 2023.09.13 |
[AWS] 로드밸런서 Connection Draining (0) | 2023.09.13 |
댓글