Database/MongoDB

[MongoDB] MongoDB 와 RDBMS 차이

꽁담 2024. 4. 18. 15:26

 

MongoDB 와 RDBMS 의 명칭 차이

RDBMS MongoDB
데이터베이스 ( Database ) 데이터베이스 ( Database )
테이블 ( Table ) 컬렉션 ( Collection )
레코드 ( Row ) 도큐먼트 ( Document )
컬럼 ( Column ) 필드 ( Field )
인덱스 ( Index ) 인덱스 ( Index )
쿼리의 결과로 레코드가 반환 쿼리의 결과로 커서가 반환

 

명칭은 다르나 의미는 비슷하다.

예를들어 MongoDB 에서 Collection 명칭은 RDBMS 의 Table 명칭과 같은 의미이다.

 

 

쿼리의 결과 커서

MongoDB 는 쿼리의 결과로 커서가 반환된다.

클라이언트 프로그램은 커서를 통해 반복적으로 실제 도큐먼트를 가져올 수 있다.

 

바로 결과를 가져오지 않는이유는

쿼리의 결과를 클라이언트 서버의 메모리에 모두 담아두지 않아도 처리할 수 있게 하기 위해서이다.

 

물론 커서를 읽을 때마다 서버에서 도큐먼트를 가져오는 것은 아니고

지정된 페이지 사이즈 단위로 서버로부터 전송받아 클라이언트 서버에 캐싱한 후 서비스된다.

 

 

MongoDB 특성

MongoDB 를 NoSQL / 스키마프리 / 비관계형 데이터베이스로 생각한다.

 

NoSQL

기본적으로 SQL 을 사용하지 않기 때문에 NoSQL 로 분류한다.

 

그러나 요즘은 타사에서 개발한 MongoDB 와 호환되는 SQL Driver 을 이용하면 SQL 쿼리처럼 사용할 수 있다.

반대로 RDBMS 에서도 NoSQL 인터페이스를 제공하기도 한다.

 

스키마프리

RDBMS 처럼 테이블-컬럼을 지정하지 않고 사용할 수 있다.

 

RDBMS 는 컬럼이 정수형인 경우 해당컬럼에는 정수타입만 넣을 수 있다.

반면 MongoDB 는 Document 가 다르다면 같은 필드명이라고 하더라도 서로다른 타입을 저장할 수 있다.

 

다만 타 NoSQL(예 : Redis)와는 조금 다르게 봐야하는데

MongoDB 는 인덱스를 제공하고 있고, 필드에 인덱스 구성 시 같은 타입만 사용되어야 한다.

 

따라서 완벽한 스키마프리라고는 보기 어려울 수 있다.

 

비관계형 데이터베이스

RDB 는 테이블, 행, 열의 정보를 구조화하고 조인하여 정보 간 관계 또는 링크를 만들어 낸다.

 

MongoDB 는 외래키를 명시적으로 지원하지 않지만 논리적인 도큐먼트간의 관계를 만들어 사용할 수도 있다.

$lookup 이라는 집합기능을 이용하면 RDBMS 와 비슷한 느낌의 조인을 할 수 있다.

 

 

이런이유로 MongoDB 는 NoSQL 이긴 하나 SQL 과의 경계가 허물어지고 있다.