AWS - DynamoDB

greenTea·2024년 2월 21일
0
post-thumbnail

AWS 다이나모DB란 무엇인가?

AWS 다이나모DB는 Amazon Web Services (AWS)에서 제공하는 완전 관리형 NoSQL 키-값 데이터베이스 서비스입니다. 빠른 성능, 탄력적인 확장성, 쉬운 관리를 제공하며, 다양한 규모의 애플리케이션에 적합합니다.

특징

  • 완전 관리형: 서버 프로비저닝, 데이터베이스 관리, 백업 및 복구 등을 AWS가 처리하므로 사용자는 애플리케이션 개발에 집중할 수 있습니다.
  • 빠른 성능: 밀리초 단위의 지연 시간으로 데이터를 읽고 쓸 수 있습니다.
  • 탄력적인 확장성: 트래픽 증가에 따라 테이블 용량을 쉽게 확장할 수 있습니다.
  • 높은 가용성: 99.999% 이상의 가용성을 제공합니다.

DynamoDB 테이블 생성

  • 1. AWS Management Console에 로그인한 후, 'DynamoDB'를 검색하여 해당 서비스 페이지로 이동합니다. 이후 "테이블 생성" 버튼을 클릭합니다.

  • 2. 이제 테이블 세부 정보를 설정해야 합니다. "테이블 이름"과 "파티션 키"를 입력하고, 필요에 따라 "정렬 키"를 추가합니다. 여기서 파티션 키는 테이블의 각 항목을 고유하게 식별하는 역할을 합니다.(pk라고 생각하면 편합니다.) 정렬 키는 말 그대로 해당 속성을 이용해서 정렬을 진행할 수 있게 해주는 속성입니다.

    키의 경우 문자열, 불린, 숫자 등을 지원하기에 원하시는 타입을 선택하시면 됩니다.

  • 3. 읽기/ 쓰기 용량의 경우 테이블에 관한 성능을 설정하는 곳 입니다. 용량이 클 수록 더 많은 데이터를 처리할 수 있습니다.

    프로비저닝의 경우 원하는 만큼 성능을 미리 설정하는 것이고 온디맨드로 하게 되면 aws가 알아서 조절을 해 줍니다. 무료로 이용하기 위해 저는 auto scaling을 끄고 용량을 각각 1로 설정하였습니다.

  • 4. 마지막으로 인덱스 설정입니다. 인덱스를 설정하게 되면 더 빠르게 데이터를 쿼리를 할 수 있습니다.

    AWS DynamoDB에서는 두 종류의 보조 인덱스를 사용하여 데이터에 더 빠르게 액세스할 수 있습니다. 각각 Global Secondary Index(GSI)와 Local Secondary Index(LSI)라고 불립니다.

  1. Global Secondary Index (GSI)

    GSI는 DynamoDB 테이블의 기본 키와 다른 속성을 기본 키로 사용하는 인덱스입니다. GSI는 테이블의 기본 키 구조를 변경하지 않고도 다양한 쿼리 패턴을 지원합니다.

    GSI는 'global'이라는 이름에서 알 수 있듯이, 전체 테이블에 걸쳐 데이터를 쿼리합니다. 이는 GSI가 테이블의 모든 데이터를 복제하여 별도로 유지하기 때문입니다. 따라서 GSI를 사용하면 테이블의 어떤 항목이든 쿼리할 수 있지만, 이로 인해 추가적인 저장 공간이 필요하게 되며 설정시에 쓰기,읽기 용량을 따로 설정해주어야 합니다.

  1. Local Secondary Index (LSI)

    LSI는 테이블의 기본 키와 동일한 파티션 키를 사용하지만, 다른 정렬 키를 사용하는 인덱스입니다. LSI는 특정 파티션 키 값에 대한 데이터를 더욱 세밀하게 쿼리하는 데 사용됩니다.

    LSI는 'local'이라는 이름에서 알 수 있듯이, 동일한 파티션 키를 가진 항목 내에서만 쿼리를 수행합니다. 이로 인해 LSI는 GSI보다 제한적인 쿼리 옵션을 제공하지만, 저장 공간의 추가 사용 없이 효과적인 쿼리 성능을 제공합니다. 그러나 LSI의 경우에는 테이블 생성하는 경우에만 설정할 수 있으며 개수에도 제한이 있습니다.

    때문에 dynamoDB의 경우 테이블 생성 때부터 정확한 설계를 해야 나중에 문제가 생기지 않습니다.(강의를 보면 강사님이 매우 강조하는 부분 중 하나이기도 합니다.)

생성 완료

생성을 완료하게 되면 위와 같이 활성상태가 됩니다.

데이터 넣기

기본 데이터 넣기

    1. 기본 화면에서 표 항목 탐색을 누르게 되면 테이블에 대해서 쿼리를 할 수 있는 창이 뜨게 됩니다. 해당 화면에서 항목 생성을 하게 되면 데이터를 넣을 수 있는 창이 뜨게 됩니다.

적절한 파티션 키와 정렬 키를 넣고 항목을 생성하면 데이터가 들어가게 됩니다.

이 때 파티션 키는 중복이 되면 안 되며 만약 위 member_id,sort_num 속성 외에도 다른 속성 값이 필요하다면 새 속성 추가로 넣을 수 있습니다.

    1. 데이터를 넣고 쿼리 화면으로 다시 간 후에 필터를 거치지 않고 실행을 누르면 테이블에 들어가 있는 모든 데이터가 나오게 됩니다.

이때 스캔과 쿼리가 있는데 스캔은 모든 테이블을 훑어보면서 찾는 방식으로 다이나오 DB 특성상 쓴 만큼 비용을 지불해야 하기에 스캔은 지양해야합니다.

대신 쿼리를 사용한다면 더욱 효율적으로 데이터를 가져올 수 있습니다.

항목 추가 생성

  1. 항목 생성 창에서 새 속성 추가를 통해 원하는 속성을 추가해주고 넣어줍니다.
  1. 데이터를 스캔해보면 기존에 없던 속성들이 생긴 것을 확인 할 수 있습니다.

인덱스 생성

  1. 글로벌 보조 인덱스를 생성을 누르게 되면 새로운 파티션 키와 정렬 키를 선택할 수 있습니다.

기타

  1. 이벤트가 발생한 경우 다른 aws 서비스와 연동하여 작업을 할 수 있습니다.

DynamoDB 스트림을 이용한다면 DynamoDB에서 삭제,삽입등의 이벤트가 발생한 경우에 aws lambda와 연결하여 특정 이벤트를 처리하도록 할 수 있습니다.

  1. TTL을 설정할 수 있습니다. timestamp속성을 만든 후 이를 지정해주면 해당 timestamp에 도달한 경우에 자동으로 삭제를 하도록 할 수 있습니다.

참고자료

【한글자막】 AWS Certified Developer Associate 시험 합격을 위한 모든 것!

profile
greenTea입니다.

0개의 댓글