데이터베이스 선택하기

Future·2023년 11월 2일
1
post-thumbnail

intro..

유튜브에서 우연히 코딩애플님의 개발시 데이터베이스 선택 가이드 영상을 보고 흥미를 느껴 한번 조금 더 알아보고 정리해보는 시간을 가졌다.

key-value database

  • key를 고유한 식별자로 key-vlaue 쌍의 집합으로 데이터를 저장한다.
  • 저장과 조회에 최적화된 데이터베이스이다.
  • key와 value에 모든 데이터 타입을 허용하기 때문에 개발 시 검증 로직이 중요하다.

Redis

  • 대표적인 key-value database
  • 메모리(RAM)에 데이터를 저장한다. 입출력이 잦은 동작에 사용된다.

언제 사용?

  • 캐싱 : 보통 메인으로 관계형 데이터베이스를 놓고, 자주 사용하는 데이터를 복사해 레디스에 저장해두고 해당 데이터 접근을 레디스에서 하도록 한다.
  • pub/sub : 채팅, 푸시 알림 등에 사용된다.
  • 영상 스트리밍 : 영상의 메타 데이터(제목, 설명 등) 관리, 실시간 이벤트(댓글, 좋아요) 관리 등에 이용된다.
  • 로그인 기록 저장 : 단순한 로그인 기록같은 데이터 저장에 이용된다.

RDB (관계형 데이터베이스)

  • 테이블 형태로 데이터를 저장한다.
  • 트랜잭션이 있어 동작 중 실패 발생 시 데이터가 롤백된다. 따라서 입출력 속도보다 데이터의 정확도, 무결성이 중요할 때 사용한다.

mysql

  • 대표적인 RDB
  • 디스크에 데이터를 저장한다.
  • 그러면 mysql은 메모리에 데이터를 저장 안하는가? 0-> 아니다. 대표적으로 쓰기 버퍼는 데이터베이스에 새로운 데이터를 추가하거나 업데이트할 때, 해당 변경 사항을 먼저 메모리 버퍼에 저장한 다음 주기적으로 디스크에 쓰는 방식으로 데이터베이스에 데이터를 기록한다. 이렇게 함으로써 디스크 접근을 최소화할 수 있다.

언제 사용?

  • 주로 서비스의 메인 데이터베이스로 설정하여 사용한다.
  • 입출력 속도보다 데이터의 정확도, 무결성이 중요할 때 사용한다.

Graph database

  • 그래프 이론을 데이터베이스 디자인에 적용시킨 데이터베이스이다.
  • 노드에 데이터를 저장하고 노드 사이의 관계를 저장할 수 있다.

Neo4j

  • 대표적인 Graph database
  • Cypher 쿼리 언어를 사용해 데이터를 조작한다.
  • 트랜잭션을 지원하여 데이터의 일관성을 유지하고 안전하게 보관한다.

언제 사용?

  • 자료 간에 관계, 방향을 중점적으로 저장할 때 사용한다.
  • 비행기 노선, sns follow, foller, 감염병 감염 맵, 추천 서비스

Document database

  • key-value 형태이다.
  • 비정형 데이터를 저장할 때 사용한다.
  • 폴더 내부에 문서를 json형태로 저장한다.
  • RDB의 여러개 테이블을 조인한 데이터를 하나의 document로 저장할 수 있다.

mongoDB

  • 대표적인 Document database
  • 다른 유형의 문서를 저장할 때 유용하다.

언제 사용?

  • 블로그 게시판 글 같은 비정형 데이터 저장에 사용된다.
  • 데이터 구조가 자주 변경되거나 다양한 종류의 데이터를 저장해야 하는 경우 사용한다.
  • 인덱싱 및 전문 검색(Full-Text Search)을 지원하여 데이터를 빠르게 검색할 수 있으므로 입출력이 많은 sns, 실시간 채팅 등에 사용한다.
  • 대용량 데이터를 저장하는 요구사항에 수평적 확장이 일어날 가능성이 높은 경우 사용한다.

Column-family database

  • 한 row 안에 column들의 집합을 데이터로 저장한다.
  • row key를 이용해 column들에 접근한다.

Apache Cassandra

  • 대표적인 Column-family database이다.
  • 데이터를 여러 노드에 분산 저장하며, 클러스터를 구성하여 데이터를 안정적으로 관리한다. 따라서, 새로운 노드의 추가나 장애 시 데이터의 재분배를 자동으로 처리할 수 있다.
  • 분산 저장과 병렬 처리로 빠른 읽기/쓰기가 가능하다.

언제 사용?

  • 대량의 분산 데이터를 저장하고 처리하는데 사용된다.
  • 로그, 센서 데이터 같은 대규모 시계열 데이터를 관리하는데 사용된다.

Search Engine

  • 데이터 검색, 분석을 위한 데이터베이스이다.
  • 데이터를 검색 가능하도록 색인화하여 저장한다.

  • 텍스트를 파싱해서 검색어 사전을 만든 다음, 역색인을 기준으로 데이터를 저장한다.

언제 사용?

  • 검색 엔진에 사용한다.
  • 지도 기반 검색, 위치 기반 애플리케이션 및 지리 정보 시스템에 사용한다.
  • 사용자 데이터 기반 추천 시스템에 사용한다.

... 나중에 프로젝트를 할 때, 여러 데이터베이스를 상황에 맞게 고려하고, 해당 데이터베이스에 대해 깊게 공부하는 시간을 가져야겠다.

profile
Record What I Learned

0개의 댓글