본 포스팅은 유튜브를 참고하여 작성한 포스트입니다.
https://www.youtube.com/watch?v=mRBpWLssAZQ
AWS란?
Amazon Web Services의 약자로, 아마존닷컴에서 운영하는 클라우드 컴퓨팅 플랫폼
*클라우드 컴퓨팅
IT 리소스를 인터넷을 통해 온디맨드로 제공하고 사용한 만큼만 비용을 지불함
물리적 데이터 센터를 소유하고 유지할 필요 없이, AWS와 같은 클라우드 공급자로부터 필요에 따라 데이터베이스와 같은 기술 서비스에 액세스할 수 있음
*온디맨드
각종 서비스가 네트워크를 통해 수요자가 원하는 형태로 즉각 제공되는 경제 시스템
AWS에서 제공하는 데이터베이스의 종류
- 관계형
- 키-값
- 문서
- 인메모리
- 그래프
- 타임시리즈
- 원장(Ledger)
- 검색
관계형 데이터베이스
- 데이터의 관계에 집중.
- 사전에 정의된 관계가 있을 때 사용
- 미리 지정된 형식과 타입의 데이터만 저장 가능
- 테이블의 형식으로 데이터를 관리
- 행과 열을 기반으로 한 여러 테이블을 통해 데이터를 정의
- 고유의 키로 각 데이터를 식별
- 트랜젝션 지원
- 원하는 동작이 정확히 수행 or 완전히 실패 둘 중 하나로 유지
- 어중간한 상태(일부만 반영되거나, 실패했으나 데이터 변경이 되거나)는 없다
- 사례: 일반적인 어플리케이션
관계형 - OLTP(Online Transactional Processing)
주로 데이터의 트렌젝션을 다루는 데이터베이스
- 예: 12345라는 id를 가진 유저의 이름, 나이를 조회 or 값 수정
- 주로 관계형 데이터베이스에서 처리
- 관계형 데베에서 '행'에 초점
- AWS 서비스: Amazon RDS
관계형 - OLAP(Online Analytical Processing)
데이터를 종합적으로 보고 통계를 산출하는데 특화된 데이터베이스
- 예: 1월 한달동안 서울에서 가장 많이 팔린 인형 종류 조회
- 주로 데이터 웨어하우스에서 처리
- 관계형 데베에서 '열'에 초점
- AWS 서비스: Amazon RedShift
추가적으로, 관계형 DB를 처음부터 사용 및 클라우드를 위한 설계 반영
- AWS 서비스: Amazon Aurora
키-값 데이터베이스
- 데이터를 단순히 키-값으로 정의
- 키를 고유한 식별자로 사용하는 키-값 쌍의 집합으로 데이터를 저장
- 키-값 데이터베이스는 파티셔닝이 가능하고, 다른 유형의 데베로는 불가능한 범위까지 수평 확장 가능
- 키를 사용해서만 쿼리 가능
- 사용 사례
- 세션 저장: 유저의 로그인 이후 통신 중 인증에 사용되는 세션 저장
- 장바구니: 매우 많은 양의 데이터 및 상태 변경 처리 가능
- AWS 서비스: Amazon DynamoDB
문서 데이터베이스
- 데이터를 JSON 혹은 유사 형식의 문서로 데이터를 저장 및 쿼리하는 데이터베이스
- 각 어플리케이션에서 사용하는 모델 형식을 그대로 사용 가능(예: JavaScript -> JSON)
- 계층적인 구조로 문서 저장 가능
- 사용 사례
- 컨텐츠 관리: 비디오 및 블로그 포스팅 등의 관리 및 추적
- 카탈로그: 제품의 카탈로그 저장
- AWS 서비스: Amazon DocumentDB(MongoDB 호환)
그래프 데이터베이스
- 데이터보다 데이터 간 관계가 더 중심인 데이터베이스
- 각 데이터 주체 간 관계와 연결을 분석하는데 최적화
- 사용 사례
- 소셜 네트워크: 각 사람간의 팔로우 관계 등을 정의
- 이상 탐지: 구매자가 평소에 구매하지 않는 물품의 구매 등에 대한 감지 혹은 패턴 파악
- AWS 서비스: Amazon Neptune
인-메모리 데이터베이스
- 메모리를 사용한 데이터베이스
- SSD 혹은 하드디스크에 저장하는 것이 아닌, 메모리에 저장하기 때문에 매우 빠른 읽기/쓰기
- 하드디스크/SSD에 비해서는 내구성이 떨어짐
- 사용 사례
- 실시간 경매: 매우 빠른 IO 필요
- 캐싱: 자주 요청받는 메인 DB의 쿼리를 임시로 저장하여 빠른 속도로 유저에게 제공
- AWS 서비스
- Amazon Elasticache(캐싱 기능으로 활용)
- Amazon MemoryDB for Redis(내구성을 확보한 인메모리 서비스로 메인 DB 자체로 사용)
검색 데이터베이스
- 데이터의 검색에 특화된 데이터베이스
- 인덱싱과 카테고리 기능에 특화
- 원하는 데이터를 빠르게 찾는 것이 목표
- 주로 저장을 위한 데이터베이스 이외에 특별한 목적으로 사용
- 사용 사례
- 컨텐츠 검색: 로그 검색, 색인 등
- 로그 분석: 방대한 로그에서 원하는 조건에 맞는 로그 검색 혹은 시각화
- AWS 서비스: Amazon Elasticsearch Service
원장(Ledger) 데이터베이스
- 데이터의 신뢰성 및 투명성이 중요한 데이터베이스
- 장부
- 데이터의 정확한 변경 내역 및 무결성 확보가 중요한 기능
- 블록체인 네트워크 및 암호화를 통해 무결성 확보
- 사용 사례
- 금융 거래 기록: 변경되면 안되는 매우 중요한 이벤트 기록 및 감사
- AWS 서비스: Amazon QLDB(Quantum Ledger Database)
타임시리즈 데이터베이스
- 많은 이벤트를 시간단위로 저장하기 위한 데이터베이스
- 수만~수십만건의 이벤트 데이터를 시간에 따라 정렬하고 특정 시점의 이벤트를 쿼리
- 많은 IO가 발생
- 사용 사례
- IOT 기기의 이벤트 관리: 많은 숫자의 IOT 기기의 이벤트 기록 및 분석
- 분석 어플리케이션: 게임같은 이벤트가 많이 발생하는 어플리케이션의 분석 데이터의 캐싱 및 시각화
- AWS 서비스: Amazon Timestream
이렇게나 많은 데이터베이스 종류가 있는지 몰랐다..!! 각 상황에 맞추어 다양한 데이터베이스 종류로 대응을 유연하게 할 수 있을 것 같다.
내가 만드려고 하는 앱은 관계형 or 키-값 or 문서 데이터베이스로 해야할 것 같다.
하지만 3개 중에서 못고르겠어~~
'Database' 카테고리의 다른 글
[Spring JPA] DB 방언이란? (0) | 2024.08.23 |
---|---|
[MySQL] 붙여넣기 안 됨 [mac/맥북] (0) | 2024.07.08 |
E-R 다이어그램 그리기 (0) | 2024.07.06 |