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 과의 경계가 허물어지고 있다.
'Database > MongoDB' 카테고리의 다른 글
[MongoDB] MongoDB 아키텍처 MMAPv1, WiredTiger (0) | 2024.05.10 |
---|---|
[MongoDB] MongoDB 의 CRUD 사용 ( SELECT, INSERT, UPDATE, DELETE ) (0) | 2024.04.18 |
[MongoDB] MongoDB 마이너버전 업그레이드 방법 (0) | 2024.04.18 |
[MongoDB] MongoDB 라이센스와 버전정책 (1) | 2024.04.18 |
[MongoDB] 스키마를 설계해보자 (1) | 2024.02.29 |