데이터베이스

데이터베이스

전통적인 데이터베이스

  • RDBMS

  • 오라클, MySQL 등

  • OLTP(Online Transaction Processing)

  • 주로 다수의 사용자나 애플리케이션이 동시에 빠르게 데이터를 조회하고, 삽입, 업데이트, 삭제할 수 있도록 설계된 데이터베이스 환경

  • But 점점 다양해지는 데이터베이스 요구사항이 필요하게됨

    • 분석용, 검색용, 타임시리즈, 키밸류 접근, 그래프 데이터 등

    • 빠른 읽기, 대용량 분석, 로깅 키/밸류 조합의 단순한 쿼리, 복잡한 쿼리 및 트랜잭션, 풍부한 검색 기능 등

  • 하나의 RDBMS로 처리하기에는 그렇게 좋은 선택이 아닐 수 있음

  • 여전히 RDBMS는 근간임, 용도에 따라 특화된 다른 데이터베이스를 추가로 구축하는건 어떨까? -> 클라우드 DB

목적에 맞는 데이터베이스

클라우드 시대에 접어들면서 목적에 맞는 데이터베이스가 폭발적으로 성장하게됨

  • 클라우드 플랫폼이 가지고 있는 방대한 인프라, 관리형으로 제공하는 데이터베이스

  • 많은 사용자들이 클라우드로 이동하면서 데이터베이스에 다양한 선택지가 있다는걸 체감하게됨

일반적인 OLTP성 관계형 DB가 필요할 때 -> RDS/Aurora

분석용 (OLAP) DB가 필요할 때 -> RedShift

Key-Value 형태의 가벼운 DB가 필요할 때 -> DynamoDB

  • 용량 제한이 없는 확장형 Serverless DB

  • schemaless NoSQL

  • key/value store

  • 10 밀리초 미만의 응답시간

  • 서버리스 아키텍처에서 주료 사용됨

  • Gateway(클라이언트 요구사항) -> SQS(큐잉) -> Lambda(로직처리) -> DynamoDB(저장)

캐시가 필요할 때 -> Elasticache

  • in-memory 기반 cache 시스템

  • Redis / Memcached

  • read 워크로드가 과중한 경우 latency와 처리용량을 향상

  • 뒷단에 실제 영구적으로 데이터를 저장하는 RDS 같은 DB의 부하를 줄여주는 중간 레이어 역할

  • stateful 구성에서 세션 DB로 활용

검색엔진이 필요할 때 -> Elasticsearch (...or OpenSearch)

  • Apache Lucene 기반의 분산형 데이터베이스

  • 검색 및 로그용으로 많이 쓰임 (ELK 스택)

  • kibana 내장으로 BI를 함께 제공

    • Elasticsearch의 데이터를 시각화하고 대시보드를 구성할 수 있는 도구

  • REST API 호출을 통한 인덱스와 도큐먼트를 조회/등록/변경/삭제

ELK 스택은 로그 관리, 데이터 검색, 분석, 시각화를 위한 오픈 소스 소프트웨어 도구들의 조합

  • Elasticsearch + Logstash + Kibana

  • Logstash -> 로그 라우터 역할, 데이터 수집 및 처리 파이프라인 도구로, 다양한 소스로부터 데이터를 수집한 후 이를 변환하여 Elasticsearch에 전달

Last updated