RDB와 NoSQL

 

 

RDB는 데이터 구조가 명확하며 변경될 여지가 없으므로 명확한 데이터 구조가 중요한 경우에 사용하는 것이 좋다. 또한 데이터의 중복이 없기 때문에 데이터 업데이트가 많을 때 유리하다.

NoSQL은 정확한 데이터 구조를 알 수 없고, 데이터가 변경/확장될 수 있는 경우에 사용하는 것이 좋다. 또한 데이터 중복으로 인해 업데이트 시 모든 컬렉션에서 수정이 필요하기 때문에 업데이트가 적고 조회가 많을 때 유리하다.

 

 


 

 

RDB (Relational Database, 관계형 데이터베이스)

테이블

 

  • 관계형 데이터베이스는 데이터가 2차원 테이블에 저장되며 데이터의 구조와 데이터 간 종속성 등을 알 수 있다. 테이블이란 키와 값으로 이루어진 2차원 형태로, 행과 열로 구성된다.
  • 스키마를 바탕으로 데이터베이스의 구조를 정의 한다. 
  • 스키마가 있기 때문에 데이터의 무결성을 보장한다.
  • SQL을 활용해서 요청(데이터 생성, 조회, 수정, 삭제)을 처리할 수 있다.
  • 수직적 확장(Scale-up)에 적합하다.
  • Oracle, MySQL, PostgreSQL 등이 해당된다.

 

  • 장점
    • 정해진 스키마에 따라 데이터를 저장해야 하므로 명확한 데이터 구조를 보장한다.
    • 데이터의 중복이 없다.
  • 단점
    • 성능 향상을 위해서는 서버의 스펙(CPU, RAM 등)을 업그레이드하는 Scale-up만 지원하므로 비용이 많이 든다.
    • 스키마로 인해 데이터가 유연하지 못하다. 나중에 스키마가 변경될 경우 번거로워진다.

 

스키마란?

데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것을 의미한다. 테이블 이름, 필드, 데이터 유형, 엔티티 간의 관계, 제약조건 등을 포함한다. 스키마는 ERD(Entity-Relational Diagram, 개체-관계 다이어그램) 또는 문자열로 표현할 수 있다.

 

 


 

 

NoSQL

 

  • NoSQL(Not Only SQL)은 비관계형 데이터베이스로, 보다 유연한 형태의 데이터베이스를 의미한다. 
  • 도큐먼트, 그래프, 키-값 등 다양한 형태의 데이터를 저장할 수 있다.
  • 관계를 정의하지 않으며, 정해진 스키마가 없기 때문에 유연하게 데이터를 저장할 수 있다.
  • 많은 양의 데이터를 저장, 처리할 수 있다.
  • SQL을 사용하지 않는다.
  • RDB의 확장성 이슈를 해결하기 위해 나온 데이터베이스 모델이다.
  • 수평적 확장성(Scale-out)에 적합하다.
  • 데이터 확장과 대용량 데이터 조회가 빈번히 일어나는 경우에 사용하면 좋다.
  • MongoDB, Redis 등이 있다.

 

  • 장점
    • 스키마가 없기 때문에 유연한 데이터 구조로 저장이 가능하다.
    • 데이터 분산이 용이하며 성능 향상을 위한 Scale-up뿐만 아니라 Scale-out 또한 가능하다.
  • 단점
    • 데이터 중복이 발생할 수 있다.
    • 스키마가 존재하지 않기 때문에 명확한 데이터 구조를 보장하지 않는다.

 

 

 

 

 


 

 

'Development > 데이터베이스' 카테고리의 다른 글

JPA, Spring Data JPA 차이점  (0) 2025.07.11
왜 데이터베이스 인덱스로 B tree 계열을 사용할까?  (0) 2025.01.07
JPA와 MyBatis  (0) 2024.12.13
Redis  (0) 2024.12.04