[AWS] DynamoDB란?

01. NO-SQL 이란?

SQL(Structured Query language)?

  • 구조화 된 질의 언어.
  • 관계형 데이터 베이스(RDBMS)에서 데이터 조회, 저장, 수정, 삭제 한다.
  • DB에 정해진 구조(Schema)에 따라 테이블에 저장 한다.
  • 테이블간 관계가 있으며 이관계를 이용하여 중복 없이 데이터를 다룰 수 있다.
  • 대다수의 회사, 은행, 보험, 증권사, 공공기관에서 사용 한다.
  • Oracle, MySQL, PostgreSQL

NO-SQL(Non-RelationalSQL)

  • SQL과 반대라 생각하면 된다.
  • 비관계형 데이터 베이스 시스템에서 데이터 조회, 저장, 수정, 삭제 한다.
  • 정형화 되지 않은 구조를 사용 한다.
  • 대규모 대용량 동시 서비스가 필요한 Instargram, faceBook 등에서 사용 한다.
  • MongoDB, DynamoDB

가족을 관리하는 업무 요건이 추가로 발생한 경우 어떻게 처리 해야할까?

SQL

  • 가족 관리 Table 추가 생성 필요 하다.
  • SQL 새로 작성 필요 하다.

NO-SQL

  • 입력시 필드만 추가 하면 된다.
  • 조회 방법에는 변화가 없다.

 

 

02. DynamoDB 소개

Amazon DynaomDB홈페이지 공식 자료

작동 방식
  • 모든 규모에서 고성능 애플리케이션을 실행하도록 설계된 완전관리형의 서버리스 키-값  NoSQL 데이터베이스입니다.
  • 보안, 지속적인 백업, 자동화된 다중 리전 복제, 인 메모리 캐시 및 내보내기 도구를 제공합니다.
기능
  • 키 값과 문서 데이터 모델을 지원하는 NoSQL 데이터베이스의 일종입니다.
  • 우선 작은 규모에서 시작했다가 전역으로 확장하여 초당 페타바이트 단위의 데이터와 수천만 건의 읽기 및 쓰기 요청을 지원합니다.
  • 기존 관계형 데이터베이스에서는 역부족인 인터넷 규모의 고성능 애플리케이션을 실행할 수 있도록 설계되었습니다.
규모에 따른 성능
  • 키-값 및 문서 데이터 모델 : 키-값과 문서 데이터 모델을 모두 지원.
  • Accelerator를 사용하여 지연 시간을 마이크로 초 수준으로 최소화 : DynamoDB Accelerator(DAX) 메모리 캐시 지원하여 빠른 읽기.
서버리스
  • 온디맨드와 프로비저닝의 용량 모드를 제공하여 비용 절약 가능 합니다.
엔터프라이즈에 사용 가능
  • ACID(Atomicity, Consistency, Isolation, Durablility) 트랜잭션 지원 합니다.
  • 저장 중 암호화 지원 합니다.
  • 특정 시점으로 복구 가능 합니다. (Point-In-Time Recovery)
  • 온디맨드 백업 및 복원 가능 합니다.

 

 

03. 구축하기

Amazon 홈페이지 DynamoDB 검색 및 테이블 생성

 

 

04. 사용방법

DyaDB_TechDay_DBA Table에 Insert 하기

DyaDB_TechDay_DBA Table에 Insert 하기

DyaDB_TechDay_DBA Table 조회 방법

 

 

05. 검색성능

저장 구조

Table
LSI(Local Secondary Index)
LSI 특징
  • Partition Key는 고정이며 Sort Key만 수정 가능하다.
  • 최초 Table 생성시 같이 생성 하여야 한다.
  • Table과 같은 영역에 저장 된다.
  • 1개만 생성 가능하다.
GSI (Global Secondary Index)
GSI 특징
  • Partition Key가 Table Partition Key에 종속적이지 않음.
  • Table과 다른 영역에 저장 된다.
  • Table 생성 후에도 생성 가능하다.
  • 1개 이상 생성 가능하다.

검색 종류별 SCAN 방식

스캔(FULL SCAN) 방식
쿼리(HASH KEY SCAN) 방식
저장 구조

INDEX 생성에 따른 검색방법 및 효율

기본 Primary Key만생성시(사원번호(Partition Key)+ 사원명(Sort Key))
검색방법 스캔(FULL SCAN)
FULL SCAN 방식이 선택된 이유
  • 조건절에 Primary Key(Partition Key)가 없다.
  • 다른 GSI 확인시 사원명 또는 입사일이 선두로 나오는 Attribute(Column) 가 없다.
  • 사용할 수 있는 INDEX가 없어 스캔 방식으로 검색.
효율성
  • 사원명 Attribute는 분포도가 아주 좋을 것으로 판단됨.
  • 분포도 좋은 Attribute에 INDEX가 없어 해당 Item 을 바로 찾을 길이 없어 Table 전체를 다 읽어야 하는 비효율이 존재함
  GSI 생성시 (사원명(Partition Key)+ 입사일(Sort Key)ADD 부서명)
검색방법 스캔(INDEX SCAN)
INDEX SCAN 방식이 선택된 이유
  • 조건절에 사원명 + 입사일 Attribute가 동등조건에 있다.
  • 사원명은 Partition Key로 동등조건 조회 시 Partition 위치를 알 수 있다.
  • 입사일은 Sort Key로 사원명이 1개 Item 이상일 경우 입사일까지 사용함으로 더 검색범위를 줄일 수 있다.
효율성
  • 사원명 + 입사일 조건으로 아주 소량만 검색하고 조회를 마칠 수 있어 효율적이다.

 

 

06. PartQL

Amazon DynamoDB용 SQL 호환 쿼리 언어
  • Amazon DynamoDB에서는 SQL 호환 쿼리 언어 입니다.
  • Amazon DynamoDB에서 데이터를 선택, 삽입, 업데이트, 삭제할 수 있습니다.
  • PartiQL 사용하면 DynamoDB 테이블과 쉽게 상호 작용하고 AWS Management Console, NoSQL Workbench, AWS Command Line Interface 및 PartiQL용 DynamoDB API를 사용하여 임시 쿼리를 실행할 수 있습니다.
PartiQL 이란?
  • PartiQL은 구조화 데이터, 반구조화 데이터 및 중첩 데이터를 포함하는 여러 데이터 스토어에서 SQL 호환 쿼리 액세스를 제공합니다.
  • Amazon 내에서 널리 사용되며 현재 DynamoDB를 비롯한 여러 AWS 서비스의 일부로 제공됩니다.

DML Syntax

SELECT
SELECT expression  [, ...]
FROM table[.index]
[ WHERE condition ] [ [ORDER BY key [DESC|ASC] , ...]
UPDATE
UPDATE  table 
[SET | REMOVE]  path  [=  data] […]
WHERE condition [RETURNING returnvalues]
  ::= [ALL OLD | MODIFIED OLD | ALL NEW | MODIFIED NEW] *
DELETE
DELETE FROM table
WHERE condition [RETURNING returnvalues]
  ::= ALL OLD *
INSERT
INSERT INTO table VALUE item

DML 활용