Amazone DynamoDB

김명래·2023년 5월 2일
0

DynamoDB란 ?

DynamoDB란 NoSQL DB로써 지연 시간이 짧고 확장성이 강한 DataBase이다. 또한, 서버나 클러스터를 따로 관리할 필요가 없다고한다.

DynamoDB 개념

1. Tabel 
2. Item
	- DynamoDB의 단일 데이터 레코드이며, 관계형 데이터베이스의 row와 비슷하다. 
3. Attribute 
	- item의 단일 데이터 요소, 즉 관계형 데이터베이스의 column과 비슷하다.
4. primary key
	- primary key는 DynamoDB 테이블의 단일 Item에 대한 고유 식별자이다. ( 단일 key와 복수 key 개념이 존재한다.)
5. PartiQL
	- SQL 구문을 사용하여 DynamoDB데이터 작업을 코드화할 수 있는 SQL 호환 쿼리이다.
    
    
    

DynamoDB 생성하기. 이전에 준비사항

AWS CLI Install

curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
sudo installer -pkg AWSCLIV2.pkg -target /

설치를 완료했다면 AWS IAM 계정을 생성하여
Access Key와 Secret Access Key를 받은 뒤

aws configure

명령어를 consolse에 입력한 뒤 위에서 받은 key를 넣어주고
region과 ouput format을 지정한다(region : us-east-1, format : json)

Python boto3 install(pythod code로 Table 생성을 위함.)

pip install boto3==1.6.19

해당 작업을 완료한 뒤

import boto3

# boto3 is the AWS SDK library for Python.
# We can use the low-level client to make API calls to DynamoDB.
client = boto3.client('dynamodb', region_name='us-east-1')

try:
    resp = client.create_table(
    TableName="Books",
    # Declare your Primary Key in the KeySchema argument
    KeySchema=[
    {
    "AttributeName": "Author",
    "KeyType": "HASH"
    },
    {
    "AttributeName": "Title",
    "KeyType": "RANGE"
    }
    ],
    # Any attributes used in KeySchema or Indexes must be declared in AttributeDefinitions
    AttributeDefinitions=[
    {
    "AttributeName": "Author",
    "AttributeType": "S"
    },
    {
    "AttributeName": "Title",
    "AttributeType": "S"
    }
    ],
    # ProvisionedThroughput controls the amount of data you can read or write to DynamoDB per second.
    # You can control read and write capacity independently.
    ProvisionedThroughput={
    "ReadCapacityUnits": 1,
    "WriteCapacityUnits": 1
    }
    )
    print("Table created successfully!")
except Exception as e:
    print("Error creating table:")
    print(e)

를 실행해주면 성공적으로 table이 생성된것을 확인할 수 있다.

이후 json file을 하나 생성해준다.

[
    {
        "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': 'ZVZAYY4F', 'Audiobook': 'DJ9KS9NM' } }"
    },
    {
        "Statement": "INSERT INTO Books value {'Author': 'James Patterson', 'Title': 'Along Came a Spider','Category': 'Suspense', 'Formats': { 'Hardcover': 'C9NR6RJ7','Paperback': '37JVGDZG', 'Audiobook': '6348WX3U' } }"
    },
    {
        "Statement": "INSERT INTO Books value {'Author': 'Dr. Seuss', 'Title': 'Green Eggs and Ham','Category': 'Children', 'Formats': { 'Hardcover': 'GVJZQ7JK','Paperback': 'A4TFUR98', 'Audiobook': 'XWMGHW96' } }"
    },
    {
        "Statement": "INSERT INTO Books value {'Author': 'William Shakespeare', 'Title': 'Hamlet', 'Category': 'Drama', 'Formats': { 'Hardcover': 'GVJZQ7JK','Paperback': 'A4TFUR98', 'Audiobook': 'XWMGHW96' } }"
    }
]

해당 파일이 생성완료되면

aws dynamodb batch-execute-statement --statements file://partiqlbatch.json

명령어를 통해 json data를 db에 insert한다.

이후 python code

import boto3

dynamodb = boto3.client('dynamodb', region_name='us-east-1')

resp = dynamodb.execute_statement(
    Statement="SELECT * FROM Books WHERE Author = 'Antje Barth' AND Title = 'Data Science on AWS'"
)

print(resp['Items'])

을 실행하면 조회해오는것을 알 수 있다.

profile
독자보다 필자를 위해 포스팅합니다

0개의 댓글