Achievement Goals
- NoSQL의 장점 및 특징에 대해서 이해할 수 있다.
- NoSQL 데이터베이스는 관계에 중점을 둔 SQL 데이터베이스보다 자유로운 형태로 데이터를 저장할 수 있으므로 필요에 따라 새로운 데이터 유형을 추가할 수 있다.
- 데이터베이스를 클라우드 기반으로 쉽게 분리할 수 있도록 지원하여 저장 공간을 효율적으로 사용합니다.
- 데이터베이스를 클라우드 기반으로 쉽게 분리할 수 있도록 지원하여, 저장 공간을 효율적으로 사용하고 수평적 확장의 형태로 무한대로 서버를 증설할 수 있다.
- 스키마를 미리 준비할 필요가 없어 개발이 빠르게 해야 하는 경우에 매우 적합
- MongoDB의 도큐먼트(Document)와 컬렉션(Collection)에 대해 이해할 수 있다.
- 도큐먼트(Document) : 필드 - 값 쌍으로 저장된 데이터
컬렉션(Collection) : 도큐먼트의 모음- JSON과 BSON의 차이점을 이해하고, 도큐먼트를 가져오거나 내보낼 수 있다.
JSON(JavaScript Object Notation) : {"id":"12153"} 같은 형식, 가독성이 좋음, 외부에서 사용
BSON(Binary JSON) : 이진법에 기반을 둔 표현법, 파싱이 빠르고 메모리 사용이 효율적, 내부에서 사용
- JSON과 BSON의 차이점을 이해하고, 도큐먼트를 가져오거나 내보낼 수 있다.
- 도큐먼트(Document) : 필드 - 값 쌍으로 저장된 데이터
- MongoDB의 Atlas에 대해 이해할 수 있다
- 클러스터(Cluster)와 레플리카 세트(Replica set)에 대해 이해할 수 있다.
- 클러스터 : 데이터를 저장하는 서버 그룹으로 여러 대의 컴퓨터를 네트워크를 통해 연결하여 하나의 단일 컴퓨터처럼 동작하도록 제작한 컴퓨터
- 레플리카 세트 : 동일한 데이터를 저장하는 소수의 연결된 머신. 레플리카 세트 중 하나에 문제가 발생하더라도, 데이터를 그대로 유지.
- Atlas를 GUI(Graphical User Interface)와 shell 쿼리문으로 사용할 수 있다.
- 클러스터(Cluster)와 레플리카 세트(Replica set)에 대해 이해할 수 있다.
MongoDB
MongDB는 대표적인 NoSQL 도큐먼트 데이터 베이스입니다.
도큐먼트 데이터베이스는 데이터를 테이블이 아닌, 문서처럼 저장하는 데이터베이스를 의미합니다.
일반적으로 도큐먼트 데이터베이스에서는 JSON 유사 형식으로 데이터를 문서화합니다.
각각의 도큐먼트는 데이터를 필드-값의 형태로 가지고 있고, 컬렉션이라하는 그룹으로 묶어서 관리
MongoDB 데이터베이스는 NoSQL 도큐먼트 데이터베이스입니다.
NoSQL Database
1. 비구조적인 대용량의 데이터를 저장하는 경우
NoSQL 데이터베이스는 관계에 중점을 둔 SQL 데이터베이스보다 자유로운 형태로 데이터를 저장할 수 있으므로 필요에 따라 새로운 데이터 유형을 추가할 수 있다.
소프트웨어 개발에 정형화되지 않은 많은 양의 데이터가 필요한 경우 NoSQL이 효율적일 수 있습니다.
2. 클라우드 컴퓨팅 및 저장 공간을 최대한 활용한 경우
NoSQL 데이터베이스는 데이터베이스를 클라우드 기반으로 쉽게 분리할 수 있도록 지원하여 저장 공간을 효율적으로 사용합니다.
SQL 데이터베이스에서는 수직적 확장의 형태로 DB를 증설합니다.
NoSQL은 수평적 확장의 형태로 무한대로 서버를 증설할 수 있다.
3. 빠르게 서비스를 구축하고 데이터 구조를 자주 업데이트하는 경우
NoSQL 데이터베이스의 경우 스키마를 미리 준비할 필요가 없어 개발이 빠르게 해야 하는 경우에 매우 적합
용어 정리
- 도큐먼트(Document)
필드 - 값 쌍으로 저장된 데이터 - 필드(Field)
데이터 포인트를 위한 고유한 식별자 - 값(Value)
주어진 식별자와 연결된 데이터 - 컬렉션(Collection)
MongoDB의 도큐먼트로 구성된 저장소입니다.
일반적으로 도큐먼트 간의 공통 필드가 있습니다.
데이터베이스 당 많은 컬렉션이 있고, 컬렉션 당 많은 도큐먼트가 있을 수 있습니다.
JSON vs BSON
JSON(JavaScript Object Notation)
읽기 쉽고 관리가 편하지만 텍스트 형식이기 때문에 parsing이 느리고 메모리 사용이 비효율적 그리고 JSON은 기본 데이터 타입만을 지원하기 때문에 사용할 수 있는 데이터 타입에 제약을 가지고 있음
BSON(Binary JSON)
컴퓨터의 언어에 가까운 이진법에 기반을 둔 표현법
JSON보다 메모리 사용이 효율적이며 빠르고, 가볍고, 유연하며 더 많은 데이터 타입을 사용 가능합니다.
Importing & Exporting
MongoDB 데이터는 BSON의 형태로 저장이 되고, 보통 일기 쉬운 JSON의 형태로 출력됩니다.
JSON 형식으로 데이터를 가져오고 내보내기 위한 명령어이다.
mongoimport
mongoexport
BSON 형식으로 가져오고 내보내기 위한 명령어
mongorestore
mongodump
이를 사용하기 위해 Atlas Cluster URI가 필요
Export
mongodump --uri "<Atlas Cluster URI>"
Exports data in BSON
mongoexport --uri "<Atlas Cluster URI>"
--collection=<collection name>
--out=<filename>.json
Exports data in JSON
내보내기를 사용하기 위해선 Atlas Cluster URI가 필요합니다.
해당 URI는 일반 웹의 URI와 형식이 같고 username, password, cluster 주소로 이루어져 있습니다.
mongodump를 하는 경우에는 별다른 쿼리가 없지만, mongoexport를 하는 경우에는 해당 데이베이스의 컬렉션 이름, 파일 이름까지 정확하게 작성해줘야 합니다.
Import
mongorestore --uri "<Atlas Cluster URL>"
--drop dump
import data in BSON dump
mongoimport --uri "<Atlas Cluster URL>"
--drop=<filename>.json
import data in JSON
가져오기를 사용하는 경우 URI를 사용해서 작성하며, 기존에 있는 데이터를 삭제하기 위한 옵션인 drop 쿼리문은 선택적으로 사용할 수 있습니다.
Atlas Cloud
MongDB에서는 아틀라스(Atlas)로 클라우드에 데이터베이스를 설정합니다.
레플리카 세트
인스턴스의 모음, 동일한 데이터를 저장하는 소수의 연결된 머신은 그 중 하나에 문제가 발생하더라도, 데이터를 그대로 유지합니다.
인스턴스
로컬 또는 클라우드에서 특정 소프트웨어를 실행하는 단일 머신, MongoDB에서는 데이터베이스입니다.
클러스터
인스턴스들의 모임, 데이터를 저장하는 서버 그룹
아틀라스는 GUI와 CLI로 데이터를 시각화, 분석, 내보내기, 그리고 빌드하는데에 사용할 수 있습니다.
아틀라스 사용자는 클러스터를 배포할 수 있으며 클러스터는 그룹화된 서버에 데이터를 저장
Quiz
MongoDB가 왜 NoSQL 데이터베이스인지에 대한 맞는 설명을 모두 고르세요.
- 구조화된 방법으로 데이터를 저장하고 접근하기 때문에
- (정답) 데이터베이스는 데이터를 저장하고 구성하는 구조화된 방법
- 행과 열을 이용하여 데이터를 구성하지 않기 때문에
- (정답) NoSQL은 데이터 구성을 위해 테이블, 행과 열을 사용하지 않음을 의미하며 이는 MongoDB의 대표적인 특징
- 스키마를 구성해 관계형 테이블에 데이터를 저장하기 때문에
- (오답) MongoDB는 관계형 테이블을 사용하지 않기 때문에 스키마리스(schemaless)라는 특징을 가지고 있습니다.
MongoDB 데이터베이스의 정의에 알맞은 문장을 모두 고르세요.
- MongoDB 데이터베이스는 체계적으로 데이터를 저장하고 접근하는 방법
- (정답) 데이터베이스의 일반적인 정의이며 MongoDB 데이터베이스 및 다른 데이터베이스에 적용됩니다.
- MongoDB 데이터베이스는 행과 열을 이용해 도큐먼트를 구성한다.
- (오답) 도큐먼트들은 컬렉션으로 구성
- MongoDB의 데이터베이스는 관계형 테이블을 이용한다.
- (오답) 행과 열은 MongoDB의 데이터 구성요소가 아닙니다.
- MongoDB는 NoSQL 데이터베이스로 도큐먼트를 이용해 데이터를 구성한다.
- (정답) 정보를 저장하기 위해 관계형 테이블을 사용하지 않고 도큐먼트를 사용하기 때문에 분류할 수 있습니다.
MongoDB에서 도큐먼트와 컬렉션의 관계에 대해 맞는 설명을 고르세요.
- 컬렉션은 한 개 또는 여러 개의 도큐먼트로 이루어져 있다.
- (정답) MongoDB에서 컬렉션은 하나 이상의 문서로 구성됩니다.
- 도큐먼트는 컬렉션으로 구성
- (오답) 컬렉션은 도큐먼트로 구성되어 있습니다.
- 컬렉션은 도큐먼트 및 기타 컬렉션들의 테이블이다.
- (오답) 테이블은 MongoDB의 데이터 구성요소가 아닙니다.
- 컬렉션은 행과 열로 구성된 도큐먼트
- (오답) 행과 열은 MongoDB의 데이터 구성요소가 아닙니다.
MongoDB의 도큐먼트에서 필드와 값에 대해 맞는 설명을 모두 고르세요.
- 각 필드에는 연관된 값이 있다.
- (정답) 데이터는 필드-값 쌍으로 구성되며 각 필드에는 연관된 값이 있습니다.
- 값은 필드에 부속될 필요 없이 독립적인 데이터 포인트가 될 수 있다.
- (오답) 데이터는 필드-값 쌍으로 구성되며 각 필드에는 연관된 값이 있습니다. 필드가 없는 값은 MongoDB에서 아무런 의미가 없으며 저장할 수 없습니다.
- 필드는 특정 데이터 포인트에 대한 고유 식별자이다.
- (정답) 도큐먼트의 동일한 레벨에서 중복된 필드 이름을 가질 수 없습니다. 그렇기 때문에 필드는 특정한 데이터 포인트를 위한 고유한 식별자입니다.
다음 도큐먼트 중에서 올바른 JSON 형식으로 작성된 것을 고르세요.
-
(오답) 중괄호가 아닌 대괄호로 작성되었습니다.[ "name" : "Benjamin", "age": 31, "major": "Computer Science" ]
-
(오답) 키를 작성할 때 쌍따옴표를 사용하지 않았습니다.{ name : "Benjamin", age: 31, major: "Computer Science" }
-
(정답) JSON 형식은 중괄호를 사용해야 하고, 키와 값의 쌍으로 이루어지며, 키는 쌍따옴표로 작성되어야 합니다.{ "name" : "Benjamin", "age": 31, "major": "Computer Science" }
다음 문장이 참이 되도록 빈칸에 BSON 또는 JSON을 작성해 주세요.
MongoDB는 ( A )로 데이터를 저장하고, ( B )의 형태로 조회할 수 있습니다.
( C )는 ( D )보다 파싱(parse)하는데 더 빠르고, 저장하기에 가볍습니다.
( E )는 ( F )보다 더 적은 데이터 타입을 지원합니다.
- A : JSON, B : BSON C : BSON, D : JSON E : JSON, F : BSON
- A : BSON, B : JSON C : BSON, D : JSON E : JSON, F : BSON
- A : BSON, B : JSON C : JSON, D : BSON E : BSON, F : JSON
MongoDB는 ( BSON )로 데이터를 저장하고, ( JSON )의 형태로 조회할 수 있습니다. ( BSON )는 ( JSON )보다 파싱(parse)하는데 더 빠르고, 저장하기에 더 가볍습니다. ( JSON )는 ( BSON )보다 더 적은 데이터 타입을 지원합니다.
다음 명령어 중에서, user.json에 저장된 컬렉션을 아틀라스 클러스터(Atlas Cluster)에 추가하는 명령어를 고르세요.
- mongodump
- (오답) mongodump는 BSON 형식의 데이터를 내본낼 때 사용합니다.
- mongorestore
- (오답) mongorestore는 mongodump가 생성한 BSON 형식의 데이터를 가지고 옵니다.
- mongoexport
- (오답) mongoexport는 JSON 형식의 데이터를 아틀라스 클러스터에서 내보낼 때 사용합니다. 단 내보낼 때 아틀라스 클러스터에 컬렉션을 더하는 대신, 아틀라스 클러스터 외부에 데이터 복사본을 만듭니다.
- mongoimport
- (정답) 데이터베이스를 아틀라스 클러스터로 가져올 수 있도록 합니다. 이때 데이터는 JSON 일 수도 있고, 지원되는 다른 데이터 형식일 수 도 있습니다.
보기 중 mongo shell에 대한 옳은 것을 모두 고르세요.
- mongo shell은 자동적으로 정렬된 결과물의 리스트를 리턴한다.
- (오답) 정렬되지 않은 결과물 리스트를 리턴합니다.
- GUI(Graphical User Interface) 사용 없이 MongoDB 아틀라스 클러스터와 상호작용할 수 있다.
- GUI(Graphical User Interface) 사용 없이 MongoDB 아틀라스 클러스터와 상호작용할 수 있습니다.
- 자바스크립트 인터프리터로 작동한다.
- 자바스크립트 인터프리터로 작동합니다.
'백엔드 > MongBO Basic' 카테고리의 다른 글
Aggregation Framework (0) | 2021.11.20 |
---|---|
MongoDB CRUD QUIZ (0) | 2021.11.20 |
MongoDB CRUD 연산자 (0) | 2021.11.19 |
MongoDB CRUD (0) | 2021.11.19 |
Atlas Cluster 생성하기 (0) | 2021.11.19 |