AWS - 5. Database

코지클래식·2022년 7월 27일
0

UDEMY 강의
를 듣고 남기는 AWS에 대한 짤막한 개요.

개요

개념1. 데이터베이스란?

  • 데이터를 파일로 하드 디스크(ROM)이 아닌, 메모리(RAM)에 저장하는데에는 용량에 한계가 있다. 이렇게 물리적으로 데이터를 저장할 때, 데이터를 데이터베이스를 사용하면 '데이터베이스형태'로 저장할 수 있다.
  • 데이터베이스를 사용하면 데이터 사이에 관계를 구축할 수 있으며, 인덱스/쿼리를 사용할 수 있다.
  • 데이터베이스는, 각각의 목적에 따라 서로 다른 개요/모양/특징을 가질 수 있다.

2. RDS (관계형 데이터베이스)

  • 사람들이 가장 흔하게 사용하는 데이터베이스 형태 (MYSQL 등)
  • 하나의 테이블과 다른 테이블을 ID를 기준으로 이어줌
  • 쿼리/검색을 위해 SQL 언어를 사용할 수 있음

3. NoSQL Database

  • NoSQL = non-SQL ⇒ 관계형 데이터베이스가 아님
  • NoSQL은 관계형 데이터베이스로 구축할 수 없는, 유연한 스키마를 사용할 때 사용함
  • 장점 :
    • 유연성 : 데이터 모델을 쉽게 변경할 수 있음
    • 확장성(Scalalbility) : 분산 클러스터를 사용하며 확장할 수 있게 디자인되어있음
    • 고성능(High-performance) : 특정 데이터 모델에 최적화됨
    • 고함수(Highly functional) : 데이터 모델에 타입이 최적화됨.
  • 예시 : Key-value, document, 그래프, in-memory, 검색 엔진

NoSQL예시 1 : JSON

  • MongoDB에서 비슷한 형태로 사용

4. 왜 굳이 DB서버를 별도로 운용하는가?

  • 많은 데이터베이스 기술은, 서버에서 수동으로 동작시킬 수 있지만, 개발자가 수많은 백업,패치, 가용성,에러수정,스케일링.. 등등을 해야함 -> 라이브러리/프레임워크를 사용하는 이유


## 2. RDS

종류

  • Postges
  • MySQL
  • MariaDB
  • Oracle
  • Microsoft SQL Server
  • Aurora (AWS 데이터베이스)

RDS vs EC2 DB

  • RDS는 관리서비스이다 :
    1. 데이터 저장, OS 패치 자동화
    2. 특정 타임스탬프에 의한 지속적인 백업/복원
    3. 모니터용 대시보드 제공
    4. read(get) 성능 향상을 위해 복사본을 Read 함
    5. Multi Availability-Zone setup for DR (재앙 회복 Disaster Recovery)
    6. 운영체제(windows) 업그레이드 유지
    7. 확장 가능성 (Scaling capability) (수직/수평)
    8. EBS에 의해 저장됨 (Stroage backd by EBS)

AWS Aurora

  • Aurora는 아마존의 독점 기술임
  • PostgreSQL과 MYSQL은 모두 Aurora DB로 지원된다.
  • Aurora는 “AWS 클라우드 최적화" 되어있다. 이는, RDS에 있는 MYSQL보다 5배의 퍼포먼스를, RDS에 있는 Postgres보다 3배의 퍼포먼스를 보여준다.
  • Aurora는 RDS보다 더 비용이 많이 든다. (20% 더) - 하지만 더 효과적이다.
  • free tier 없음


3. ElastiCache

소개

  • Redis등의 캐시서버 서비스
  • RDS가 관계형 데이터베이스를 관리하는 것과 동일한 방법
  • ElastiChache는 Redis/Memcached를 관리한다.
  • Caches는 인-메모리 데이터베이스이다. (낮은 지연율, 높은 성능)
  • 데이터베이스의 집중적인 부하를 감소시키는 데에 도움을 준다.
  • AWS는 OS 유지/패치/최적화/설치/모니터링/에러회복/백업을 도와준다

추가설명 - Redis와 Memcached

출처

공통점: 인-메모리 key-value 저장소. NoSQL 데이터베이스라고도 볼 수 있다.

Memcached :

  • 상대적으로 작고 정적인 데이터를 캐싱하는 경우
  • 여러 코어/스레드가 있는 멀티 스레드의 경우
  • 메모리 관리가 redis만큼 정교하지는 않음
  • 간단한 사용
  • 쉽게 확장할 수 있지만, 해싱 사용 여부에 따라 캐시된 데이터의 일부/전부를 잃는다.

Redis

  • 문자열, 해시, 목록, 세트, 비트맵등 복잡한 데이터 유형이 필요한 경우
  • 키 저장소에 “속성(type)”을 원할 경우
  • 인 메모리 데이터를 정렬하거나 순위를 지정해야 하는 경우
  • 백업/복원 기능이 필요한 경우
  • 여러 데이터베이스를 지원해야 하는 경우
  • 서버에 대한 이벤트를 클라이언트에 알리기 위해 게시/구독 기능이 필요한 경우



기타 AWS의 DB 서비스

1. DynamoDB

데이터 타입: key/value

  1. NoSQL 데이터베이스다. → RDS 아님
  2. 빠르고 지속적인 성능
  3. 10ms 이내의 지연율 → 낮은 지연율 제공

2. Redshift

RedShift는 PostgreSQl을 베이스로 한다.

  1. 그러나 OLTP (OnLine Transaction Processing)에 사용되지는 않는다.
    대신, OLAP (Online Analytical Processing)에 사용된다.
  2. 데이터타입 : column/row 형태 (Columnar)

3. EMR

  1. EMR 뜻 : “Elastic Map Reduce”
  2. EMR은 Hadoop cluster(BigData)를 만드는걸 돕는다.
    → Haddop Cluster : 대용량의 데이터를 분석하고 다룬다. (오픈소스 기술)
  3. 이 clusters는, 수백개의 EC2 인스턴스로 만들어질 수 있다.
  4. Apache Spark, HBase, Presto, FLink... 등을 지원한다.

4. Athena

  1. Serverless 서비스
  2. 쿼리 서비스
  3. S3 객체를 분석함: CSV, JSON, ORC, Avro, Parquet 지원
  4. 표준 SQL언어 사용

5. QuickSight

  1. Serverless 서비스
  2. 머신러닝 기반의 Business intelligence 서비스임
  3. 상호작용할 수 있는 대시보드를 생성해줌

6. Document DB

  1. NoSQL서비스 : Aurora가 AWS버전의 MySQL, PostgreSQL이라면, Document DB는 AWS버전의 MongoDB이다.

7. Neptune

  1. Graph 데이터베이스

8. QLD

  1. Fully Managed(AWS에서 전적으로 관리)
  2. Serverless
  3. QLDB = “Quantam Ledger DataBase”
    -> ledger = 금융 트랜잭션을 관리하는책.
  4. 시간에 걸쳐 개발자의 프로그램에 발생한 모든 변화의 기록을 review 하는데에 사용된다.
  5. 불변의 시스템 : 어떠한 접근도 삭제나 수정될수 없으며, 암호학적으로 확인 가능함.
  6. Amazon Managed Blockchanin과의 차이점 : 중앙통제에서 벗어난 요소가 없다.

9. Managed Blockchain

  1. 여러 집단이 트랜잭션을 수행할 수 있도록 도와준다.
  2. 이 트랜잭션에는 중앙의 권한이나, 신뢰가 필요하지 않다.
  3. 프레임워크 이더리움 // Hyperledger Fabric 과 경쟁한다.



결론

  • 여러 종류의 DB서비스가 많은데, 그때그때 필요한걸 찾아서 알고 쓰자.
profile
코지베어

0개의 댓글