Computer Science

NoSQL이랑 RDBMS의 특징과 차이점

emhaki 2023. 1. 21. 09:33
728x90
반응형
SMALL

DB(DataBase)

우리가 사용하는 정보는 DB에 저장하지 않고 연결이 끊어지면 휘발성으로 인해 사라진다. 그러므로 DB에 저장하여 다른 사람들과 정보를 공유하기 위해 만들어진 공간이다. 구조화된 정보 또는 데이터의 체계적인 집합을 말한다.

DBMS(DataBase Management System)

데이터베이스 관리 시스템으로 사용자와 데이터 사이에서 사용자의 요청에 의해 데이터의 생성 조회 등 데이터베이스를 관리해주는 역할을 한다.

SQL(Structured Query Language)

관계형 데이터베이스 관리 시스템(RDBMS)의 관리를 위해 제작된 언어로써, 자료의 검색과 재조합, 스키마 생성과 수정과 같은 데이터베이스 객체 조정 관리를 위해 사용되고 있다.

RDBMS

RDBMS에는 이름에서도 알 수 있듯 DBMS에 R이 붙어 있다. Relational의 약자로 RDBMS는 관계형 데이터베이스 관리 시스템을 의미한다. 이름과 같이 RDBMS는 RDB를 관리하는 시스템이며 RDB는 관계형 데이터 모델을 기초로 두고 모든 데이터를 2차원 테이블 형태로 표현하는 데이터베이스이다. 관계형 데이터베이스(RDMBS)는 다른 테이블들과 관계를 맺고 모여있는 집합체로 이해할 수 있다.

NoSQL(Not Only SQL, 비-관계형 데이터베이스)

https://sujl95.tistory.com/83

RDB 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술.

RDBMS와는 달리 테이블 간 관계를 정의하지 않는다.

데이터 테이블은 그냥 하나의 테이블이며 따라서 일반적인 테이블 간 Join도 불가능하다.

 

빅데이터의 등장으로 인해 데이터와 트래픽이 기하급수적으로 증가함에 따라 RDBMS에 단점인 성능을 향상시키기 위해 등장했다. 데이터 일관성은 포기하되 비용을 고려하여 여러 대의 데이터에 분산하여 저장하는 Scale-Out을 목표로 등장했다.

🔎 1. Key-Value DB

  • Key-Value 방식으로 데이터를 저장
  • Key값은 모든 데이터 타입을 수용할 수 있고, 중복되지 않는 유니크한 값
  • 간단한 구조인 만큼 속도가 빠른 편이다.
  • 대표적으로 Redis, AWS DynamoDB, Riak 등이 있다.

🔎 2. Document DB

  • Key-Value에서 확장된 방식으로, Key-Document 형태로 저장된다.
  • Document는 계층적인 데이터 타입(JSON, XML)으로 저장되는 장점이 있다.
  • JSON 타입을 사용하므로 HTTP 기반의 웹서버의 경우 데이터를 편리하게 주고받을 수 있다.
  • 대표적으로 MongoDB, Couch DB 등이 있다.

🔎 3. Column DB

https://sujl95.tistory.com/83

  • Key, Value와 유사한 형태로, 데이터가 내부에서 Key를 기준으로 오름차순 저장되는 차이점이 있다.
  • 이전의 모델들이 Key-Value 값을 이용해 필드를 결정했다면, 특이하게도 이 모델은 키에서 필드를 결정한다. 키는 Row(key값)과 Column-family, Column-name을 가진다. 연관된 데이터들은 같은 Column-family 안에 속해 있으며, 각자의 Column-name을 가진다. 관계형 모델로 설명하자면 어트리뷰트가 계층적인 구조를 가지고 있는 셈이다. 이렇게 저장된 데이터는 하나의 커다란 테이블로 표현이 가능하며, 질의는 Row, Column-family, Column-name을 통해 수행된다.

🔎 4. Graph DB

https://sujl95.tistory.com/83

  • 데이터를 Node와 Edge, Property와 함께 그래프 구조를 사용하여 데이터를 저장한다.
  • 객체와 관계를 그래프 형태로 표현한 것으로 관계형모델이라고 할 수 있으며, 데이터 간의 관계가 키일 경우에 적합하다.
  • SNS, Network Diagrams 등에 사용되고, SNS에서 함께 아는 친구 찾기, 추천 등 연관된 데이터를 추천해주는 엔진이나 패턴 기능에 사용된다.
  • 대표적으로 Neo4j가 있다.

RDBMS vs NoSQL

https://www.saichoiblog.com/rdb-nosql/

  RDBMS NoSQL
적합업무 - 데이터 무결성 및 일관성이 중요한 트랜잭션 업무
- 온라인에서 다양한 집계 및 통계를 분석하는 업무
- 복잡한 계산 및 실시간 데이터 정합성이 필요한 업무
- 오프라인에서 정형 및 비정형 데이터 분석 업무
- 초당 동시 처리가 중요한 업무
- 로그 및 이력 등의 단순 기록형 업무
데이터 모델 - 엔티티 및 각 엔티티 간 관계를 정의함
- 엔티티 정의 시 정규화에 의한 설계가 중요
- 테이블, 칼럼 등 DB요소에 대한 스키마를 엄격히 관리함
- 서비스에 맞는 DB 선택이 중요함
- 반정규화에 의한 설계를 기본으로 함
- 비정형화 스키마 구조로 미리 스키마를 선언하지 않음
성능 - 성능 향상을 위해서는 성능 최적화 작업이 필요함 - 클러스터 크기, 네트워크 및 애플리케이션에 의해 성능이 결정됨
인터페이스 - SQL을 통해서만 데이터 저장 및 검색이 가능함 - 쿼리 외 다양한 API를 통한 데이터 저장 및 검색이 가능함
장점 - 데이터 중복 배제로 데이터 이상 발생 및 용량 증가를 최소화 - 쿼리 프로세싱이 단순화되어 대용량 데이터 처리 성능이 향상
단점 - JOIN이 복잡한 경우 쿼리 프로세싱도 복잡해져 성능이 저하됨  - 데이터 중복에 의해 데이터 일관성이 저하되고 용량이 증가함

🔎 RDBMS 장단점

장점

  • 정해진 스키마에 따라 데이터를 저장해야 하므로 명확한 데이터 구조를 보장받을 수 있다.
  • 각 테이블 간의 관계를 정의해야 하므로, 데이터의 중복이 발생하지 않는다.

단점

  • 테이블 간 관계가 정의되어 있으므로, 시스템이 커질 경우, JOIN문이 많은 복잡한 쿼리가 만들어질 수 있다.
  • 성능 향상의 방법으로 Scale-up만을 지원하므로, 처리 비용이 크다
  • 정해진 스키마로 인해 데이터가 유연하지 못하다. 스키마가 변경될 경우 번거롭기 때문에, 스키마가 자주 바뀌지 않는 서비스에 사용한다.

🔎 NoSQL 장단점

장점

  • 스키마가 없기 때문에 데이터 구조가 유연하고, 자유롭게 필드를 추가할 수 있다.
  • 성능 향상의 방법으로 Scale-up / Scale-out 모두 사용 가능하다.

단점

  • 스키마가 존재하지 않아서, 데이터의 일관성이 존재하지 않는다.
  • 데이터 중복이 발생할 수 있으며, 이 데이터가 변경될 경우 모든 컬렉션에서 update해야 하는 번거로움이 있다.

 

Reference

https://velog.io/@dat0802/RDBMS%EC%99%80-MySQL%EC%9D%98-%EC%B0%A8%EC%9D%B4

https://sujl95.tistory.com/83

https://pythontoomuchinformation.tistory.com/528

 

728x90
반응형