테이블이 아닌, 문서처럼 저장하는 데이터베이스를 의미합니다. 일반적으로 JSON 유사 형식으로 데이터를 문서화합니다.
각각의 도큐먼트는 데이터를 필드-값의 형태로 가지고 있고, 컬렉션이라고하는 그룹으로 묶어서 관리합니다.
데이터를 행과 열이 아닌, 체계적인 방식으로 저장합니다.
비구조적인 대용량의 데이터를 저장하는 경우
자유로운 형태로 데이터를 저장할 수 있으므로 필요에 따라서 새로운 데이터 유형을 추가할 수 있습니다. 정형화되지 않은 많은 양의 데이터가 필요한 경우, NoSQL이 효율적일 수 있습니다.
클라우트 컴퓨팅 및 저장 공간을 최대한 활용하는 경우
NoSQL은 데이터베이스를 클라우드 기반으로 쉽게 분리할 수 있도록 지원하여, 저장 공간을 효율적으로 사용합니다. SQL 데이터베이스는 수직적 확장 형태로 DB를 증설합니다. 수직적으로 확장된 데이터베이스는 관리가 어려워질 수 있는 반면, NoSQL은 수평적 확장 형태로 증설하여 이론상으로는 무한대로 서버를 증설할 수 있습니다.
빠르게 서비스를 구축하고 데이터 구조를 자주 업데이트 하는 경우
NoSQL은 스키마를 미리 준비할 필요가 없기 때문에, 빠르게 개발 해야하는 경우에 적합합니다.
인스턴스
로컬 또는 클라우드에서 특정 소프트웨어를 실행하는 단일 머신, MongoDB에서는 데이터베이스입니다.
클러스터
데이터를 저장하는 서버 그룹으로 여러 대의 컴퓨터를 네트워크를 통해 연결하여 하나의 단일 컴퓨터처럼 동작하도록 제작한 컴퓨터를 뜻합니다.
객체와 같이 데이터를 필드-값(Field - Value) 쌍으로 저장하고 구성합니다.
필드는 데이터의 고유한 식별자이고, 값을 주어진 식별자와 관련된 데이터를 뜻합니다.
ex) MongoDB Document
{
"name": "KJ",
"title": "Hello World",
"age": 30,
}
name이라는 필드의 값은 KJ입니다. 데이터베이스는 여러 개의 컬렉션으로 구성됩니다.
Document
필드 값으로 저장된 데이터
Field(필드)
데이터 포인트를 위한 고유 식별자
Value(값)
주어진 식별자와 연결된 데이터
Collection(컬렉션)
MongoDB Document가 구성된 저장소입니다.
일반적으로 도큐먼트 간 공통 필드가 있습니다.
데이터베이스 당 많은 컬렉션이 있고, 컬렉션 당 많은 Document가 있을 수 있습니다.
JSON 형식으로 Document를 작성하기 위해서는, 다음과 같은 조건을 만족해야 합니다.
ex) JSON 예시
{
"id": "KJ",
"date": "2022-01-25",
"comments": "Hello World",
}
JSON 텍스트 형식이기 때문에 읽기 쉽지만, 파싱이 느리고 메모리 사용이 비효율적입니다.
BSON은 컴퓨터 언어에 가깝운 이진법 기반을 둔 표현법입니다. 메모리 사용이 효율적이고 빠르고, 가벼우며, 유연합니다.
MongoDB는 JSON 형식으로 작성된 것은 무엇이든 데이터베이스에 추가할 수 있고, 쉽게 조회할 수 있습니다.
그러나 내부에서는 속도, 효율성, 유연성의 장점이 있는 BSON으로 데이터를 저장하고 사용하고 있습니다.
데이터 형식에 따라 달라지는 import, export 명령어에 대해..
MongoDB의 데이터는 BSON 형태로 저장이 됩니다. 하지만 읽기 쉬운 JSON 형태로 출력됩니다.
따라서 데이터를 가져오거나, 내보낼 때 사용 가능한 명령어가 각각 존재합니다.
mongodump를 하는 경우에는 별다른 쿼리가 없지만 mongoexport를 하는 경우에는 데이터베이스의 컬렉션 이름, 파일, 이름까지 정확하게 작성해야 합니다.
mongo shell