카테고리 없음

[Database] RDBMS와 NoSQL의 차이점은 뭘까❓

데브승찬 2025. 2. 3. 19:00

오늘은 데이터베이스 개념 중 꼭 알아야할 RDBMS와 NoSQL의 차이점을 알아볼까 한다.

 

RDBMS❓

먼저 DBMS(Database Management System)는 데이터베이스 관리 시스템이며,

RDBMS는 DBMS에 Relational이 추가된 것으로 관계형 데이터베이스 관리 시스템이다.

여기서 관계형 데이터베이스(RDB)는 관계형 데이터 모델을 기초로 두고 모든 테이블을 2차원 형태로 표현하는 데이터베이스이다.

 

RDBMS는 이러한 관계를 나타내기 위해서 외래 키(foreign key)를 사용하고, 이런 테이블 간 관계에서 외래 키를 이용한 다른 테이블간 Join이 가능하다는게 가장 큰 특징이다.

 

장단점🍌

장점

-  스키마가 명확하게 정의되어 있다.

 

-  데이터 무결성을 보장한다.

 

-  각 데이터를 중복 없이 한 번만 저장한다.

 

단점

-  데이터 스키마를 사전에 계획해하므로 추후 수정이 어렵다.

 

-  관계를 맺고 있어서 조인문이 많은 복잡한 쿼리가 만들어질 수 있다.

 

사용하는 경우

-  데이터 구조가 명확하고 데이터의 변경이 적은 경우

 

-  데이터 변경이 자주 이루어지는 경우

 


 

NoSQL❓

NoSQL(Not Only SQL)은 말 그대로 관계형 데이터베이스(RDBMS)와는 다른 방식으로 데이터를 저장하고 관리하는 기술이다.

NoSQL은 RDBMS와 달리 테이블 간 관계를 정의하지 않는다. 데이터 테이블은 그냥 하나의 테이블이고, 테이블 간 관계를 정의하지 않아서 다른 테이블 간 Join도 불가능하다.

 

NoSQL 저장 유형

 

Key-Value Database

key-value database는 key value값의 형태로 저장되고 간단한 API를 제공하여 속도가 굉장히 빠르다.

또 값은 어떠한 형태의 데이터라도 담을 수 있다.

 

대표적으로 Redis, Riak, Amazon Dynamo DB 등이 있다.

 

Document Database

Document Database 데이터는 Key와 Document의 형태로 저장된다. Key-Value와 다른 점은 Value가 계층적인 형태인 Document로 저장된다는 것인데, 객체지향에 객체와 유사하고, 하나의 단위로 취급되어 저장된다.

Document Database는 객체를 Document의 형태로 바로 저장가능 하기 때문에 객체-관계 매핑이 필요하지 않다. 또 Key-Value와 특징과 동일하게 검색에 최적화 되어있다. 단점은 사용이 번거럽고 쿼리가 SQL과 다르다는 점이다.

 

대표적으로 Mongo DB, CouthDB등이 있다.

 

Wide Column Database

이 전의 모델들이 Key-Value의 값을 이용해 필드를 결정했다면, 이 모델은 키에서 필드를 결정한다.

키는 Row(행), Column-family(컬럼 패밀리), Column-name(컬럼 이름)으로 구성되어 있다. 관련된 데이터들은 같은 Column-family 안에 저장되고, 각각의 Column-name을 가지는 구조이다.

 

관계형 데이터베이스(RDBMS)와 비교하면, 관계형 데이터베이스에서는 각 컬럼이 독립적이지만 Wide Column Database에서는 컬럼들이 계층적으로 그룹화된 형태이다. 이렇게 저장된 테이터는 하나의 커다란 테이블로 표현이 가능하다.

 

대표적으로 HBase, Hypertable 등이 있다.

 

Graph Database

Graph Model에서는 데이터를 Node와 Edge, Property와 함께 그래프 구조를 사용하는 Database이다.

관계형 모델이라고 할 수 있고, 데이터 간의 관계가 탐색의 키일 경우 적합하다.

 

대표적으로 Neo4J가 있다.

 

장단점🍌

장점

-  스키마가 없기 때문에 유연하고 언제든지 저장된 데이터를 조정하고 새로운 필드를 추가할 수 있다.

 

-  데이터는 필요로 하는 형식으로 저장가능 하기 때문에 데이터를 읽어오는 속도가 빠르다.

 

-   애플리케이션이 발생시키는 모든 읽기와 쓰기 요청 처리가 가능하다.

 

단점

-  유연성 때문에 데이터 구조 결정을 미루게 될 수 있다.

 

-  데이터 중복을 계속 업데이트 해야 한다.

 

-  데이터가 여러 컬렉션에 중복되어 있기 때문에 수정이 필요한 경우 모든 컬렉션에서 수정해야 한다.

 

사용하는 경우

-  정확한 데이터 구조를 알 수 없고 데이터가 변경/확장될 수 있는 경우

 

-  데이터의 수정이 많이 이루어지는 경우

 

-  데이터의 양이 매우 많은 경우