RDB와 DocumentDB 비교, Hot-Cold, Index

young·2025년 7월 11일

데이터베이스

목록 보기
1/2

Document DB vs. RDB: 핵심 장단점 및 성능 최적화 전략 (Hot-Cold, Index)

Document DBRDB (관계형 데이터베이스)의 핵심적인 장단점을 비교
데이터베이스 성능을 향상시키기 위한 Hot-cold 데이터 관리 방식
인덱스(Index)방식에 대한 내용


1. Document DB vs. RDB

🐘 RDB (Relational Database)

  • RDB는 데이터를 정해진 스키마에 따라 테이블(Table) 형태로 저장하는 데이터베이스
  • 각 테이블은 행(Row)열(Column)으로 구성되며, 데이터의 일관성과 정합성을 보장하는 데 강점
  • 대표적으로 MySQL, PostgreSQL, Oracle 등

장점:

  • 데이터의 일관성 및 정합성: 정해진 스키마와 ACID (원자성, 일관성, 고립성, 지속성) 트랜잭션 모델을 통해 데이터의 무결성을 강력하게 보장합니다.
  • 복잡한 쿼리 처리 용이: SQL을 사용하여 여러 테이블을 조인(JOIN)하는 등 복잡하고 정교한 데이터 조회가 가능합니다.
  • 안정성과 신뢰성: 오랜 기간 발전해 온 기술로, 안정성과 신뢰성이 검증되었습니다.

단점:

  • 유연하지 않은 스키마: 데이터 모델을 변경하려면 스키마 전체를 수정해야 하므로, 변화에 유연하게 대처하기 어렵습니다.
  • 수평적 확장(Scale-out)의 어려움: 시스템 확장을 위해 보통 서버의 사양을 높이는 수직적 확장(Scale-up)을 사용하며, 여러 서버에 데이터를 분산하는 수평적 확장은 상대적으로 복잡합니다.

🍃 Document DB (문서 지향 데이터베이스)

  • Document DB는 데이터를 JSON과 유사한 문서(Document) 형태로 저장
  • 스키마가 정해져 있지 않아 유연하며, 각 문서는 고유한 구조를 가질 수 있음
  • MongoDB, CouchDB 등이 대표적

장점:

  • 유연한 스키마: 스키마가 없어 데이터 모델을 자유롭게 변경할 수 있으며, 변화하는 요구사항에 빠르게 대응할 수 있습니다.
  • 수평적 확장(Scale-out) 용이: 데이터를 여러 서버에 분산 저장하는 수평적 확장이 용이하여 대용량 데이터 처리에 유리합니다.
  • 직관적인 데이터 모델: 데이터를 객체 지향 프로그래밍의 객체와 유사한 형태로 저장하므로 개발자들이 이해하고 사용하기 편리합니다.

단점:

  • 데이터 일관성 및 정합성: RDB에 비해 데이터 일관성이나 정합성을 보장하는 기능이 약할 수 있습니다.
  • 복잡한 쿼리 처리의 한계: 여러 문서를 넘나드는 복잡한 조인(JOIN) 연산이 RDB만큼 효율적이지 않거나 지원되지 않는 경우가 많습니다.

2. DB 성능 향상을 위한 전략

아래 두 가지 전략은 DB 성능을 최적화하는 데 효과적입니다.

🔥❄️ Hot-Cold 데이터 관리 방식

실용적 한 줄 : 활발한 데이터와 오래된 데이터 DB를 구분하여 저장

Hot-cold 데이터 관리 방식 : 데이터의 사용 빈도에 따라 저장 위치나 방식을 달리하여 성능과 비용을 최적화하는 전략

  • Hot Data (뜨거운 데이터): 자주 접근하고 최신이며, 빠른 응답 속도가 요구되는 데이터를 의미합니다. Hot 데이터는 In-memory DB나 SSD와 같이 빠르고 비싼 저장소에 보관하여 신속하게 처리합니다. 예를 들어, 현재 진행 중인 이벤트 정보, 실시간 인기 검색어 등이 해당됩니다.

  • Cold Data (차가운 데이터): 거의 접근하지 않는 오래된 데이터를 의미합니다. Cold 데이터는 HDD와 같이 저렴하고 용량이 큰 저장소에 보관하거나 아카이빙하여 비용을 절감합니다. 예를 들어, 수년 전의 로그 기록, 종료된 이벤트 정보 등이 해당됩니다.

이 방식을 통해 빠른 성능이 필요한 데이터는 신속하게 처리하고, 상대적으로 중요도가 낮은 데이터는 저렴하게 보관하여 전체 시스템의 효율을 높일 수 있습니다.

📚 인덱스 (Index)

실용적 한줄 : 쿼리에 인덱스를 걸면 대부분 좋음

  • 인덱스는 데이터베이스 테이블의 검색 성능을 향상시키기 위한 자료구조
  • 책의 맨 뒤에 있는 '찾아보기'와 같은 역할 수행
    인덱스가 없으면 특정 데이터를 찾기 위해 테이블 전체를 순차적으로 탐색(Full Scan)해야 하지만, 인덱스를 사용하면 원하는 데이터의 위치를 빠르게 찾아낼 수 있습니다.

작동 원리:

인덱스는 특정 컬럼(또는 여러 컬럼)의 값과 해당 값이 저장된 행의 물리적 주소를 키-값 쌍으로 저장합니다. B-Tree와 같은 자료구조를 주로 사용하여 정렬된 상태를 유지하므로, 데이터 검색 시 로그 시간 복잡도(O(logn)O(\log n))로 매우 빠르게 원하는 데이터를 찾을 수 있습니다.

장점:

  • SELECT 쿼리의 검색 속도 향상: 특히 WHERE 절이나 JOIN 연산에서 특정 조건을 만족하는 데이터를 찾을 때 성능이 크게 향상됩니다.

단점:

  • 추가 저장 공간 필요: 인덱스 자체를 저장하기 위한 별도의 공간이 필요합니다.
  • INSERT, UPDATE, DELETE 성능 저하: 데이터가 변경될 때마다 인덱스도 함께 업데이트되어야 하므로, 데이터 변경 작업의 속도가 느려질 수 있습니다. 따라서 읽기 작업이 쓰기 작업보다 훨씬 빈번한 컬럼에 인덱스를 생성하는 것이 효과적입니다.
profile
세상은 아름답다

0개의 댓글