주의사항: SQL이든 noSQL이든 모두 데이터를 체계적으로 저장하고 관리하는 시스템이다.(이를 데이터베이스라고 함에 매우 유의하자!!)

NoSQL의 장점 및 특징

장점:

스키마가 자주 바뀔 경우, 다운타임을 해야 할 필요가 없다

대용량의 데이터 저장에 적합하다

보다 유연한 스키마 구조를 가진다

확장성이 커서 이론상 무한대로 데이터베이스 서버 확장이 가능(수평확장)

보다 신속하게 서비스 출시할 경우 유리하다

MongoDB의 도큐먼트(Document)와 컬렉션(Collection), 용어

Untitled

여러 개의 필드와 값이 최소 정보 단위이다.

도큐먼트는 여러 개의 필드와 값을 하나로 묶은 단위이다.(SQL의 레코드와 비슷함)

컬렉션은 도큐먼트 여러 개를 묶은 단위이다.

하나의 DB에는 여러 개의 컬렉션이 있을 수 있다.

데이터의 표현 방식 중 대표적인 방식은 JSON과 BSON이다.

JSON은 사람이 읽기 쉬운 형태로 작성하며, 정확한 형식에 맞춰서 작성한다.

단 데이터 타입에 제약이 있고 파싱이 느리기 때문에 실제 몽고DB 클러스터에는 BSON 형식으로 저장한다. BSON은 binary JSON의 약어이며 컴퓨터가 이해할 수 있는 방식으로 저장하는 형식이다.

따라서 보다 가볍고, 유연하고 다양한 데이터 타입을 지원한다.

**도큐먼트를 가져오거나 내보낼 수 있다.(공식문서 참조)**

클러스터로 데이터를 가져오는 방법: mongoimport, mongorestore

클러스터에서 데이터를 내보내는 방법: mongoexport, mongodump (덤프트럭이 쓰레기 버리는것 생각. 클러스터인 아틀라스에서 로컬pc로 가지고 오는 경우에 해당)

JSON 형식의 데이터(다른 데이터형식도 포함가능)를 가지고 올 경우

mongoimport --uri "실제 아틀라스 클러스터 uri" 추가 옵션(예를 들면 --drop 데이터명.json)

BSON외의 다른 형식 및 JSON 형식의 데이터를 내보낼 경우

mongoexport --uri "실제 아틀라스 클러스터" uri --collection=콜렉션 이름 --out 내보낼파일명.json(또는 다른 확장자)

BSON 형식의 데이터를 아틀라스로 가지고 올경우

mongorestore --uri "실제 아틀라스 클러스터 uri" 추가 옵션(예를 들면 --drop 데이터명)

BSON 형식의 데이터를 아틀라스에서 로컬로 내보낼 경우

mongodump --uri "실제 아틀라스 클러스터 uri"

//uri예: 아틀라스 클러스터에서 가지고 온다 
"mongodb+srv://유저이름:패스워드@클러스터명.mongodb.net/데이터베이스명"

MongoDB의 Atlas에 대해 이해할 수 있다

클러스터: 데이터 베이스 저장하는 여러대의 컴퓨터를 네트워크로 연결하여 하나의 컴퓨터로 사용할 수 있게 한 컴퓨터. 여러 개의 인스턴스를 하나로 묶은 것도 클러스터라고한다.

인스턴스: 로컬이나 클라우드에서 특정 SW 실행하는 단일 머신인데, mongoDB에서는 데이터베이스를 의미

레플리카 세트: 동일 데이터 저장하는 몇몇의 연결된 머신이며, 클러스터로 배포할 때 자동 생성됨.

(인스턴스의 복사본들이라 생각하자)

몽고DB는 하나 컴퓨터를 프라이머리, 나머지 2대 컴퓨터를 세컨더리라고 하는데, 프라이머리에서 서빙 실패시 세컨더리에서 받아서 처리할 수 있기 때문에 총 세대의 컴퓨터로 운용함 이 컴퓨터 모음을 클러스터라고 하고, 디비 자체가 세대 컴퓨터에 다 똑같이 있으니 이를 레플리카 셋이라고 함.