백엔드

RDBMS와 NoSQL이란?

do_hyuk 2024. 4. 2. 09:54

RDBMS와 NoSQL?

RDBMS란

테이블을 통해 정형화된 데이터를 저장하고, 테이블끼리 관계를 맺을 수 있다.

또한 제약 조건을 통해 데이터의 중복을 피할 수 있다.

 

테이블끼리 관계를 맺을 수 있으니 경우에 따라 테이블을 나누어 데이터를 관리할 수 있고 데이터를

조회해 올 때 'JOIN'을 사용해 나누어져 있는 테이블의 데이터를 불러올 수 있다.

 

제약 조건을 통해 데이터 중복을 막을 수 있으며 이는 데이터를 수정해야 할 때 수많은 데이터를 찾아 수정해야 하는

번거로움을 줄여줍니다.

 

NoSQL란

NoSQL은 비관계형 데이터 저장소 역할을 한다. 기존 RDBMS은 scale-up(수직적 확장)을 해야 하는 한계가 있다.

NoSQL은 수평적 확장을 손 쉽게 할 수 있어 많은 데이터를 저장하고 분산 처리를 손쉽게 할 수 있다.

 

별다른 연관관계가 없다는 것은 단순히 키(PK)만으로 모든 데이터를 조회할 수 있다는 것을

의미하기 때문에 당연히 RDBMS보다 데이터를 빠르게 조회할 수 있다.

 

하지만 이건 연관 관계가 필요한 경우에는 까다로워질 수 있다.

예를 들어 어떤 레코드가 어떤 속성을 가졌는지는 빠르게 파악할 수 있지만

반대로 어떤 속성을 가진 레코드들을 필터링(검색)하는 경우에는 적합하지 않다는 것이다

(불가능한 것은 아니다. NoSQL에서도 쿼리를 사용 가능)

 

각각 사용하기 좋은 경우

RDBMS

  • 앱의 여러 부분에서 관련된 데이터가 비교적 자주 변경되는 경우
    (NoSQL이라면 항상 여러 컬렉션을 수정해야 한다.)

  • 명확한 스키마가 중요하며, 데이터 구조가 극적으로 변경되지 않는 경우

NoSQL

  • 정확한 데이터 요구 사항을 알 수 없거나, 관계를 맺고 있는 데이터가 자주 변경(수정)되는 경우
  • 읽기(read) 처리를 자주 하지만, 데이터를 자주 변경하지 않는 경우
    (즉, 한 번의 변경으로 수십 개의 문서를 수정할 필요가 없는 경우)

  • 데이터베이스를 수평적으로 확장해야 하는 경우
    (즉, 막대한 양의 데이터를 다루어야 하는 경우, 읽기 쓰기 처리량이 큰 경우)

요약

SQL  NoSQL
관계형 데이터베이스 관리 시스템 분산형 데이터베이스 관리 시스템
수직적 확장 = 서버 사양 높힘 수평적 확장 = 여러 대의 서버를 두고 성능 올림
스키마에 의해 선정 되어 있음 스키마가 없거나 다이나믹함(유연함)
견고하고 단단함! 부하를 잘 견딤 SQL보다 일반적으로 빠른 경향이 있음
역사가 깊은만큼 설치/설정이 쉬워 시간이 절약됨 처음 모델링 자체가 요구되지 않아서 시간이 절약됨
꾸준한 속도를 보여줌 때때로 응답속도가 느릴 수 있음
여러 테이블을 조인하는 등 복잡한 쿼리 사용가능 테이블간 관계가 없어 복잡한 쿼리사용이 부적합함