DynamoDB란 NoSQL DB로써 지연 시간이 짧고 확장성이 강한 DataBase이다. 또한, 서버나 클러스터를 따로 관리할 필요가 없다고한다.
1. Tabel
2. Item
- DynamoDB의 단일 데이터 레코드이며, 관계형 데이터베이스의 row와 비슷하다.
3. Attribute
- item의 단일 데이터 요소, 즉 관계형 데이터베이스의 column과 비슷하다.
4. primary key
- primary key는 DynamoDB 테이블의 단일 Item에 대한 고유 식별자이다. ( 단일 key와 복수 key 개념이 존재한다.)
5. PartiQL
- SQL 구문을 사용하여 DynamoDB데이터 작업을 코드화할 수 있는 SQL 호환 쿼리이다.
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)
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'])
을 실행하면 조회해오는것을 알 수 있다.