취업스터디

RDB와 NoSQL

개발하는체대생 2023. 4. 6. 13:38
질문 : RDB와 NoSQL은 무엇인가요? 차이점 또는 장단점 위주로 설명해주세요.

답변 : RDB는 Relational Database(관계형 데이터 베이스)라는 뜻으로 데이터를 테이블 형태로 저장하며 사전에 엄격하게 정의된 스키마를 요구하는 구조를 갖습니다. 그러나 NoSQL은 Not Only SQL(비관계형 데이터베이스)라는 뜻으로 테이블 형식이 아닌 비정형 데이터를 저장할 수 있도록 지원합니다.
RDB는 엄격한 스키마로 인해 데이터 중복이 없기 때문에 데이터 업데이트가 많을 때 유리하고, NoSQL은 데이터 중복으로 인해 데이터의 업데이트 시 모든 컬렉션에서 수정이 필요하기 때문에 업데이트가 적고 조회가 많을 때 유리합니다.

RDB

RDB는 관계형 데이터베이스라는 뜻으로 SQL 쿼리 언어를 사용하여 데이터를 관리하며, 데이터 간의 관계를 테이블 형태로 정의합니다. 각 테이블은 스키마(Schema)에 따라 데이터 타입과 제약사항을 갖게 됩니다. 이를 통해 데이터 일관성이 보장되며 ACID를 지원합니다. RDB는 수직적 확장(Scale up)에 적합하며, 데이터 중복이 없어 쓰기 속도가 빠릅니다. 그러나 비용이 많이 들어 확장성이 좋지 않습니다. 예시로는 MariaDB, MySQL, Oracle 등이 있습니다.

 

RDB의 특징

  • SQL 쿼리 언어를 사용한다.
  • 테이블마다 스키마(Schema)를 정의해야 한다.
  • 데이터 타입과 제약으로 데이터의 정확성이 보장된다.
  • ACID가 중요하다.
  • 수직적 확장(Scale up)에 적합하다.
  • 데이터 중복이 없어 쓰기 속도가 빠르다.
  • 비용이 많이 들어 확장성이 좋지 않다.

RDB의 장점

  • 데이터 일관성을 보장합니다.
  • ACID를 지원합니다.
  • SQL을 사용하므로 복잡한 쿼리 작업도 처리할 수 있습니다.
  • 데이터 중복이 없어 쓰기 속도가 빠릅니다.

RDB의 단점

  • 비용이 많이 들어 확장성이 좋지 않습니다.
  • 스키마 정의가 필요하므로 유연성이 떨어집니다.

*ACID란?

ACID란 트랜잭션의 네 가지 속성을 의미하며, 트랜잭션이 원자적(Atomicity), 일관적(Consistency), 격리적(Isolation), 지속적(Durability)으로 실행되는 것을 보장합니다.

NoSQL

NoSQL (비관계형 데이터베이스)은 RDB의 확장성 문제를 해결하기 위해 등장한 데이터베이스 모델입니다. 스키마를 반드시 정의하지 않아도 되며, key-value방식으로 데이터를 관리합니다. 데이터 중복을 허용하므로 빠른 읽기 속도를 제공하며 수평적 확장(Scale out)에 적합합니다. 그러나 ACID가 중요하지 않은 경우도 있으며, 트랜잭션 관리가 되지 않아 데이터 무결성이 유지되지 않을 수 있습니다. 예시로는 MongoDB, redies 등이 있습니다.

 

NoSQL의 특징

  • SQL 쿼리 언어를 사용하지 않는다.
  • 스키마를 반드시 정의하지 않아도 된다.
  • 사용 목적에 따라 ACID가 중요하지 않을 수 있다.
  • RDB의 확장성 이슈를 해결하기 위해 나온 데이터베이스 모델이다.
  • key-value방식으로 데이터를 관리한다.
  • 수평적 확장(Scale out)에 적합하다.
  • 데이터 중복이 가능해 읽기 속도가 빠르다.
  • 트랜잭션 관리가 안된다.

NoSQL의 장점

  • 수평적 확장이 쉽습니다.
  • 스키마 정의가 필요하지 않아 유연성이 높습니다.
  • 데이터 중복이 가능해 읽기 속도가 빠릅니다.

NoSQL의 단점

  • 트랜잭션 관리가 되지 않아 데이터 무결성이 유지되지 않을 수 있습니다.
  • ACID가 중요하지 않은 경우가 있어 일관성이 보장되지 않을 수 있습니다.

결론

RDB는 관계형 데이터 베이스 라는 뜻으로 데이터 일관성이 중요하고 ACID를 지원해야 하는 경우에 적합하며, NoSQL은 비관계형 데이터베이스라는 뜻으로 수평적 확장과 대용량 데이터 처리 및 빠른 읽기 속도가 필요한 경우에 적합합니다.

 

추가 참고자료

트랜잭션

 

트랜잭션(Transaction)

질문 : 트랜잭션이 무엇인지 설명해 주세요. 답변 : 트랜잭션(Transaction)은 데이터베이스에서 데이터의 무결성과 일관성을 보장하기 위한 작업 단위를 의미합니다. 트랜잭션은 일련의 작업을 하

rpguswns.tistory.com