NoSQL 사용하여 애플리케이션 빌드 1

김규원·2025년 12월 13일

DB

목록 보기
18/22

용어 및 개념

테이블 (Table)

  • 데이터의 모음. DynamoDB가 이 데이터를 저장하는 구체적인 구조.
  • 제품 카탈로그를 저장하기 위해 books 테이블을 사용

항목 (Item)

  • DynamoDB 테이블의 단일 데이터 레코드. 관계형 데이터베이스의 행과 유사
  • 테이블의 각 항목은 제품 카탈로그의 책 한 권에 해당

속성 (Attribute)

  • 항목의 단일 데이터 요소로 관계형 데이터베이스의 열과 유사.
  • 제목, 작성자, 범주 와 같은 요소로 구성

기본키 (Primary Key)

  • DynamoDB 테이블의 단일 항목을 고유하게 식별하는 식별자
  • 테이블을 생성 할 때 기본 키의 이름과 유형을 지정해야 함
  • 기본 키는 테이블에 기록된 각 항목을 고유하게 식별
    단순 기본 키는 단일 속성으로 구성
    복합 기본 키는 두 개의 속성으로 구성
    예) 각 책의 고유 식별자로 제목 과 저자를 조합하여 사용

PartiQL

  • SQL 구문을 사용하여 DynamoDB 데이터 작업을 체계화할 수 있는 SQL 호환 쿼리 언어

NoSQL 사용하여 애플리케이션 빌드

준비

  • 활성 AWS 계정(루트 사용자)
  • Amazon DynamoDB
  • AWS CLI
  • AWS Cloud9
  • Python용 AWS SDK(Boto3)

1. pip install boto3를 통해 AWS Python SDK 설치

2. aws configure를 이용하여 새로운 자격 증명 정보를 설정하거나 업데이트

AWS Access Key ID [None]: <AWS Access Key 입력>
AWS Secret Access Key [None]: <AWS Secret Key 입력>
Default region name [None]: ap-northeast-2 # 서울
Default output format [None]: json

3. 서점 애플리케이션을 위한 테이블을 생성, 데이터 삽입/검색

  • 테이블에 Author 와 Title 의 복합 기본 키가 있는지 확인
  • create_table, TableName, keySchema 이용
  • ap-northeast-2 는 한국 region
• 제목(문자열): 책 의 제목
• 저자(문자열): 책 의 저자
• 카테고리(문자열): 역사, 전기, SF 등 책의 카테고리
• 형식(지도): 판매 가능한 다양한 형식(예: 하드커버, 페이퍼백, 오디오북)과
 재고 시스템에서 해당 항목 번호
import boto3
# boto3는AWS SDK for Python입니다.
client = boto3.client('dynamodb', region_name='ap-northeast-2') # 서울 리전
try:
 resp = client.create_table(
 TableName="Books",
 KeySchema=[
 {
 "AttributeName": "Author",
 "KeyType": "HASH" # Partition Key
 },
 {
 "AttributeName": "Title",
 "KeyType": "RANGE" # Sort Key
 }
 ],
 AttributeDefinitions=[
 {
 "AttributeName": "Author",
 "AttributeType": "S" # String
 },
 {
 "AttributeName": "Title",
 "AttributeType": "S" # String
 }
 ],
 ProvisionedThroughput={
 "ReadCapacityUnits": 1,
 "WriteCapacityUnits": 1
 }
 )
 print("Table created successfully!")
except Exception as e:
 print("Error creating table:")
 print(e)

4. Books 테이블에 항목 삽입(json 파일 이용 삽입)

  • partiqlbatch.json 파일로 만들기
  • INSERT INTO TABLE_NAME VALUE {KEY-VALUE}
[
 {
 "Statement": "INSERT INTO \"Books\" VALUE {'Author':'Antje Barth','Title':'Data Science on
AWS','Category':'Technology','Formats':{'Hardcover':'J4SUKVGU','Paperback':'D7YF4FCX'}}"
 },
 {
 "Statement": "INSERT INTO \"Books\" VALUE {'Author':'Julien Simon','Title':'Learn Amazon
SageMaker','Category':'Technology','Formats':{'Hardcover':'Q7QWE3U2','Paperback':'ZVZAYY
4F','Audiobook':'DJ9KS9NM'}}"
 },
 {
 "Statement": "INSERT INTO \"Books\" VALUE {'Author':'James Patterson','Title':'Along Came
a
Spider','Category':'Suspense','Formats':{'Hardcover':'C9NR6RJ7','Paperback':'37JVGDZG','Au
diobook':'6348WX3U'}}"
 },
 {
 "Statement": "INSERT INTO \"Books\" VALUE {'Author':'Dr. Seuss','Title':'Green Eggs and
Ham','Category':'Children','Formats':{'Hardcover':'GVJZQ7JK','Paperback':'A4TFUR98','Audiob
ook':'XWMGHW96'}}"
 },
 {
 "Statement": "INSERT INTO \"Books\" VALUE {'Author':'William
Shakespeare','Title':'Hamlet','Category':'Drama','Formats':{'Hardcover':'GVJZQ7JK','Paperbac
k':'A4TFUR98','Audiobook':'XWMGHW96'}}"
 }
]

5. aws configure list 를 활용해 region 확인

aws configure list

6. 책 테이블에서 항목 검색

  • Antje Barth가 쓴 책인 Data Science on AWS 라는 단일 항목을 검색
  • 그 결과를 터미널(CMD)에 출력
  • query_books.py 파일 이용
import boto3
dynamodb = boto3.client('dynamodb', region_name='ap-northeast-2')
resp = dynamodb.execute_statement(Statement='SELECT * FROM Books WHERE
Author = \'Antje Barth\' AND Title = \'Data Science on AWS\'')
print(resp['Items'])
  • SQL SELECT * FROM Books WHERE Author = 'Antje Barth' AND Title = 'Data Science on AWS' 과 동치

요약

  • DynamoDB CreateTable API를 사용하여 서점 애플리케이션에 대한 테이블 생성 , PartiQL을 사용하여 항목을 삽입/검색할 수 있다
  • AWS CLI로 aws configure 명령을 사용해 Access Key, Secret Key, region(ap-northeast-2), output format 등을 설정 (default)한다.
  • Python 스크립트에서 boto3를 임포트, client.create_table 메서드로 Books 테이블 AttributeDefinitions, KeySchema, BillingMode 지정해 호출한다.
  • 터미널에서 해당 스크립트를 실행한 뒤 AWS 콘솔의 DynamoDB 서울 리전(ap-northeast-2)에서 테이블 생성 여부를 확인한다
profile
행복한 하루 보내세요

0개의 댓글