티스토리 뷰

Database/DynamoDB

DynamoDB - DynamoDB API

소농배 2022. 12. 21. 20:55

 DynamoDB 를 사용하기에서는, Application 에서 몇가지 간단한 API 를 사용해야한다. 아래는 Category 로 구분된 API 의 요약들이다.

Topics

  • Control Plane
  • Data Plane
  • DynamoDB Streams
  • Transactions

Control Plane

  Control Plane 명령은 DynamoDB 테이블을 생성하고 관리한다. 또한, Control Plane 은 Index, Stream 과 같이 테이블에 의존적인 것들을 다룰 수 있게 해준다. 

  • CreateTable - 새로운 테이블을 생성한다. 필요하다면, 한개 이상의 Secondary Index 를 생성할 수 있고 DynamoDB Stream 을 활성화 할 수 있다.
  • DescribeTable - Primay Key, Schema, 처리량 설정, Index 정보와 같은 테이블 정보를 반환한다.
  • ListTable - 모든 테이블 이름을 반환한다.
  • UpdateTable - 테이블 설정을 수정하거나, 테이블의 Index 를 생성/수정 혹은 DynamoDB Stream 설정을 수정한다.
  • DeleteTable - 테이블과 그와 관련된 모든 것들을 DynamoDB 에서 삭제한다.

Data Plane

 Data Plane 명령은 Table 의 데이터을 생성/수정/삭제/읽기 (CRUD) 를 수행할 수 있으며 Secondary Index 에서 데이터를 읽어올 수 있다.

 

 PartiQL ( DynamoDB 를 위한 MySQL 과 호환되는 쿼리 언어 ) 를 이용하여 Data Plane 을 수행할 수 있다. 혹은, DynamoDB classic CRUD API 를 사용할 수도 있다.

 

PartiQL

  • ExecuteStatement - 복수개의 아이템을 테이블로부터 읽어온다. 단일 아이템에 대해서 쓰거나 수정할 수 있다. 쓰거나 수정할때는 Primary Key 로 아이템을 특정해야한다.
  • BatchExecuteStatement - 복수개의 아이템을 쓰거나 수정할때 사용한다. 복수개의 아이템을 쓰거나 읽을때 한번에 네트워크 통신으로 수행하기 때문에 ExecuteStatement 보다 효율적이다.

Classic APIs

 Creation Data

  • PutItem - 단일 아이템을 테이블에 쓴다. Primary key 를 지정해야하지만 다른 Attribute 는 필수가 아니다.
  • BatchWriteItem - 25까지의 아이템을 테이블에 쓴다. 여러개의 아이템을 테이블에 쓸때 단일 네티워크 통신으로 처리되기 때문에 PutItem 보다 효율적이다. 한개 이상의 아이템을 제거할때도 BatchWriteItem 을 사용할 수 있다.

Reading Data

  • GetItem - 테이블에서 하나의 아이템을 불러온다. 불러오고자하는 아이템의 Primary key 를 지정해야한다. 전체 아이템을 불러올 수도 있고 필요한 Attribute 만 불러올 수도 있다. 
  • BatchGetItem - 100개 까지의 아이템을 테이블로부터 불러온다. 단일 네트워크 통신을 사용하기 때문에 GetItem 보다 효율적이다.
  • Query - 특정 Partiton Key 를 가지고 있는 모든 아이템을 불러온다. Partition Key 를 지정해야한다. 전체 아이템을 불러올 수 있고 Attribute 의 일부만 불러올 수도 있다. 필요하다면, Sort Key 를 적용하여 같은 Partition Key 를 가진 것중에 일부만 불러올 수 있다. 테이블에 Parition Key 와 Sort key 둘 다 있는 경우에 이 명령을 수행할 수 있다. 또한, Index 에 Partion Key 와 Sort Key 가 있다면 마찬가지로 이 명령을 사용할 수 있다.
  • Scan - 테이블 또는 인덱스에 있는 모든 아이템을 불러온다. 아이템 전부를 불러올 수 있고 일부 Attribute 를 불러올 수 있다. 특정 조건으로 필터링하여 필요한 Item 만 불러올 수 있고 나머지는 제거할 수 있다.

Updating Data

  • UpdateItem - 아이템에서 한개 이상의 Attribute 를 수정한다. 수정하고 싶은 Item 은 Primary key 로 특정해야한다. 새로운 Attribute 를 추가/수정 할 수 있으며 존재하는 Attribute 를 제거할 수 있다. 조건적으로 업데이트가 가능하여 유저가 정의한 조건이 충족되었을때만 업데이트가 수행되도록 할 수 있다. 필요하다면, Atomic Counter 를 구현하여 다른 쓰기 요청과 겹치지 않고 숫자를 늘리거나 줄일 수 있다.

Deleting Data

  • DeleteItem - 테이블에서 단일 Item 을 제거한다. 제거하고자 하는 Item 을 Primary Key 로 지정해야한다.
  • BatchWriteItem - 25개 까지의 아이템들을 삭제할 수 있다. 여러개의 아이템을 테이블에 제거할때 단일 네티워크 통신으로 처리되기 때문에 DeleteItem 보다 효율적이다. 한개 이상의 아이템을 제거할때도 BatchWriteItem 을 사용할 수 있다.

DynamoDB Streams

 DynamoDB Stream 명령은 테이블에 Stream 을 활성화하거나 비활성화 할 수 있고 Stream 에 포함된 데이터 수정 기록에 접근할 수 있도록 한다.

  • ListStreams - 모든 Stream 을 반환하거나, 특정 테이블의 Stream 을 반환한다.
  • DescribeStreams - ARN 과 같은 Stream 정보를 반환하고 Application 이 처음으로 읽기 시작한 Stream record 위치를 반환한다.
  • GetShardIterator - Application 이 Stream 에서 데이터를 읽어오는데 사용하는 자료구조인 Shard Iterator 를 반환한다.
  • GetRecords - 주어진 Shard Iterator 에서 한개 이상의 Stream Record 를 불러온다.

Transactions

 Transaction 은 원자적,일관성,격리,내구성 (ACID) 를 제공하여 Application 이 데이터 정합성을 쉽게 유지할 수 있도록 한다.

 

 PartiQL ( DynamoDB 를 위한 MySQL 과 호환되는 쿼리 언어 ) 를 이용하여 transaction 명령을 실행할 수 있고 DynamoDB Classic CRUD API 를 사용할 수도 있다.

PartiQL

  • ExecuteTransaction - 여러 테이블에 걸쳐 실행되는 CRUD 명령들을 모두 성공하거나 모두 실패하도록 하는 명령

Classic APIs

  • TransactWriteItems - Put, Update, Delete 를 지원하며 여러 테이블에 걸쳐 실행되는 CRUD 명령들을 모두 성공하거나 모두 실패하도록 하는 명령
  • TransactGetItems - 한개 이상의 테이블에서 여러 Item 을 불러올 수 있도록 하는 명령

 

 

출처 : https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.API.html

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함