S3 및 DynamoDB 읽기 속도 조사(lambda)

개시하다


S3와 DynamoDB는 모두 작은 텍스트를 저장할 때 사용할 수 있는 무료 테두리를 가지고 있다.
저는 S3만 이용했지만 다이나모DB는 우수한 지연성 때문에 AWS의 최선의 실천에 자주 등장했습니다.
도대체 얼마나 빨라요?
신경 쓰여서 조사해 봤어요.

결론


S3 읽기 평균 시간 0.14초
DynamoDB 읽기 평균 시간 0.03초
그래서 S3의 4배 정도 빨라요.

환경, 조건, 코드 등


측정된 시간 2021/11/101:00~21:05 JST
lambda 기본값(메모리 128MB)

DynamoDB 설정


용량 모드 구성
자동 읽기 용량 해제
구성된 읽기 용량 유닛5
자동 쓰기 용량 해제
구성된 쓰기 용량 유닛5
책상 안의 물건
client_id
NewValue2
s
z
용량 유닛 5를 읽는 경우 한 번에 20KB를 읽을 수 있습니다.
만약 이 작은 탁자라면, 나는 한 번 읽는 시간을 측정할 수 있을 것이다.

DynamoDB 읽기 코드


4
import time
import boto3
from boto3.dynamodb.conditions import Key, Attr

dynamodb = boto3.resource('dynamodb')
def lambda_handler(event, context):
    # 開始時間
    start_time = time.time()
    
    table_name = "device_properties"
    partition_key = {"client_id": "s"}
    dynamotable = dynamodb.Table(table_name)
    res = dynamotable.get_item(Key=partition_key)
    item = res["Item"]
    
    # 終了時間
    end_time = time.time()
    print("経過時間")
    print(end_time-start_time)
    
    return item
10회 측정한 결과
0.1777
0.0192
0.0045
0.0135
0.0114
0.0059
0.0182
0.0094
0.0169
0.0045

S3 설정


슬롯 닫기
암호화 해제
도쿄 리존
객체 크기 1KB

S3 읽기 코드


4
import boto3
import time

BUCKET_NAME = 'test43245'
OBJECT_KEY_NAME = 's.txt'

s3 = boto3.resource('s3')

def lambda_handler(event, context):
    # 開始時間
    start_time = time.time()
    
    bucket = s3.Bucket(BUCKET_NAME)
    obj = bucket.Object(OBJECT_KEY_NAME)
    response = obj.get()    
    body = response['Body'].read()
    
    # 終了時間
    end_time = time.time()
    print("経過時間")
    print(end_time-start_time)
    
    return body
10회 측정한 결과
0.2805
0.1945
0.2005
0.1903
0.0369
0.1984
0.0323
0.0319
0.1843
0.0235

끝말


최소 사이즈를 얻으려고 했어요.이 조건이면 DynamoDB가 상당히 빠른 것 같아요.
나는 이 화환을 활용하고 싶다.
다이나모DB를 사용해 본 적이 없어 좋은 경험이었다.
참조 링크
https://recipe.kc-cloud.jp/archives/10420
https://dev.classmethod.jp/articles/get-s3-object-with-python-in-lambda/

좋은 웹페이지 즐겨찾기