RDBMS와 NoSQL

임동혁 Ldhbenecia·2024년 7월 1일
0

DataBase

목록 보기
1/14
post-thumbnail
💡 DBMS의 종류 중 현대에 가장 많이 사용되고 있는 RDBMS와 NoSQL에 대해 알아보자.

관계형 데이터베이스 관리 시스템 (RDBMS)

말 그대로 DBMS에 앞에 Relational이라는 관계형이 붙었다.
관계형 데이터베이스는 구성된 테이블이 다른 테이블들과 관계를 맺고 모여있는 집합체이다.
흔히 ERD를 떠올리면 알 수 있을 것이다.

특징

  1. 스키마 기반: 고정된 스키마를 가지고 있어 데이터를 구조화된 방식으로 저장한다.
  2. ACID 특성: 트랜잭션의 원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 지속성(Durability)을 보장한다.
  3. 정규화: 데이터 중복을 최소화하고 무결성을 유지하기 위해 데이터를 정규화한다.
  4. SQL 사용: 데이터를 정의, 조작, 제어하기 위해 SQL을 사용한다.
    흔히 Raw query라고들 말한다.

장점

  • 데이터 무결성 유지: 강력한 데이터 무결성 제약 조건을 지원한다.
  • 복잡한 쿼리 처리: 복잡한 쿼리를 효율적으로 처리할 수 있다.
  • 표준화된 쿼리 언어: SQL이라는 표준화된 언어를 사용한다.
    DBMS마다 다를 수 있다.
    ex) MySQL, Oracle은 문법이 살짝식 다르다.

단점

  • 확장성의 한계: 수평적 확장이 어렵고, 대규모 분산 데이터 처리에 한계가 있다.
  • 고정된 스키마: 스키마 변경이 어렵고 유연성이 떨어진다.
    스키마가 변경되어 FK가 늘어난다거나 할 시 번거롭다.
  • Scale-Up: 성능 향상을 위해서는 서버 성능을 향상 시켜야하는 Scale-up만 지원한다.

대표적인 RDBMS

  • MySQL
  • PostgreSQL
  • Oracle Database
  • SQLite

비관계형 데이터베이스(NoSQL)

NoSQL (Not Only SQL) 데이터베이스는 비관계형 데이터베이스로, 다양한 데이터 모델을 지원하며 대규모 데이터 처리와 높은 확장성을 위해 설계되었다.
NoSQL 데이터베이스는 스키마가 유연하고, 비정형 데이터나 반정형 데이터를 효율적으로 처리할 수 있다.

특징

  1. 스키마리스: 고정된 스키마가 없어서 데이터 구조가 유연하다.
  2. 수평적 확장성: 수평적으로 쉽게 확장할 수 있어 대규모 데이터 처리가 가능하다.
  3. 다양한 데이터 모델: 문서(Document), 키-값(Key-Value), 컬럼(Column), 그래프(Graph) 모델 등을 지원한다.

장점

  • 유연성: 데이터 구조가 유연하여 다양한 형태의 데이터를 쉽게 저장할 수 있다.
    그렇기에 언제든지 저장된 데이터를 조정하고 저장할 수 있다.
  • 확장성: 분산 시스템에서 수평적 확장이 용이하다.
  • 고성능: 대규모 데이터 처리에 있어 높은 성능을 제공한다.
  • Scale-Out: 성능 향상을 위해 Scale-out도 가능하다.

단점

  • 데이터 일관성 문제: ACID 특성을 완전히 지원하지 않는 경우가 많아 데이터 일관성을 보장하기 어렵다.
  • 복잡한 쿼리 처리의 어려움: 복잡한 조인(Join)이나 트랜잭션 처리가 어려울 수 있다.
  • 표준화 부족: 다양한 NoSQL 데이터베이스마다 사용 방법이 달라 표준화된 쿼리 언어가 없다.
    그렇기 때문에 사용하는 NoSQL마다 문법을 학습해야하는 어려움이 있다.
  • 데이터 중복: 데이터 중복이 발생할 수 있다.

대표적인 NoSQL 데이터베이스

  • MongoDB (문서형): Key-Document
  • Cassandra (컬럼형)
  • Redis (Key-Value형)

결론

RDBMS와 NoSQL은 각기 다른 요구 사항에 맞게 설계된 데이터베이스 관리 시스템이다.
RDBMS는 데이터 무결성과 복잡한 쿼리 처리가 중요한 애플리케이션에 적합하며, NoSQL은 대규모 데이터 처리와 높은 확장성이 필요한 애플리케이션에 적합하다.
사용하려는 애플리케이션의 특성과 요구 사항에 따라 적절한 DBMS를 선택하는 것이 중요하다.

이 두 DBMS간의 가장 큰 차이는 FK를 이용한 JOIN이 되냐 않느냐로 나는 차이를 가장 크게 느꼈다.
그래서 오히려 NoSQL이 상대적으로 더 어렵게 느껴진다.

profile
지극히 평범한 공대생

0개의 댓글

관련 채용 정보