본문 바로가기
Programming

[Database] MongoDB Document 데이터 BSON JSON 형식 차이점

by 개발자 염상진 2022. 5. 31.

 

 

MongoDB Document

 

MongoDB에서 Document란 객체와 유사하게 Field ~ value로 데이터를 저장하고 구성한다. Document에서 필드는 데이터의 고유한 식별자가 되고, 값은 식별자와 관련된 데이터를 의미한다.

 

이 처럼 field~value로 묶인 Document 모음을 Collection이라고 한다. 데이터베이스는 여러개의 Collection으로 구성된다. Collection은 MongoDB의 Document로 구성된 저장소다. Document 간 공통된 Field가 존재할 수 있고, 한개의 데이터베이스에는 많은 Collection이 존재한다. Collection 마다 많은 Document가 존재한다.

 

{
	<Field> : <value>,
	<Field> : <value>,
	"name" : "About-Tech",
	"title" : "MongoDB Document",
	"time" : 10,
}

 

 

 

JSON vs BSON

 

shell을이용해서 Document를 조회할 때 Document는 JSON(Javascript Object Notation) 형식으로 출력된다. JSON 형식으로 Document를 작성하기 위해서는 특정 조건이 만족되어야 한다.

  • Document의 시작과 끝은 {} 로 시작되고 끝나야 한다.
  • Field와 Value가 콜론( : )으로 구분되어야 한다. Field와 Value를 포함하는 쌍은 쉼표( , )로 표시된다.
  • 문자열 Field는 쌍따옴표( "")로 감싸야 한다.

 

{
	"_id" : "4351512",
	"data" : ISODate("2022-05-31T05:00:00Z"),
	"listing_id" : "123123123",
	"reviewer_id" : "45943242",
	"comments" : "Here Tallest Building in the world istikala caddesdii"
}

 

Document는 JSON형식으로 읽고 출력된다. 간편한 형식으로 데이터를 저장하기 때문에 데이터 입출력에 자주 사용되는 포맷이다. 하지만 parsing 작업에 시간이 많이 걸리고 메모리 사용이 비효율적이라는 단점을 동시에 가지고 있다. 또한 JSON은 기본 데이터 타입만 지원하기 때문에 제약사항이 존재한다. 이 문제를 해결하기 위해 등장한 포맷이 BSON(Binary JSON)이다.

 

BSON(Binary JSON)

BSON은 이진법에 기반을 둔 포맷이다. JSON보다 메모리 사용이 효율적이고, 빠르다. 또한 JSON 보다 더 많은 데이터 타입을 처리할 수 있다. MongoDB에서도 JSON 형식으로 작성된 모든 데이터를 처리하지만, 내부에서는 속도/효율성/유연성의 강점을 가진 BSON으로 데이터를 처리한다.

 

 

Data Import / Export

Node에 데이터를 가져오거나 내보내는 경우 효율적인 데이터 형식이 따로 존재한다. MongoDB의 데이터 저장은 BSON으로 처리되고, JSON으로 출력된다. 두 포맷의 특징이 다르기 때문에 사용용도도 달라진다. 만약 단순히 백업 저장을 위한 데이터 처리는 가볍고 처리속도가 빠른 BSON으로 진행하는 것이 효율적이다. 하지만 사람이 읽어야 하는 데이터 출력이라면 JSON으로 처리되어야 한다.

 

 

① Export

BSON 형식은 export 경우 mongodump 명령어를 사용하고, JSON 형식의 데이터를 내보내기 위해서는 mongoexport를 사용한다. JSON 형식의 데이터를 내보낼 때는 내보낼 컬렉션과 파일의 이름을 정확하게 명시해 주어야 한다.

 

// Export BSON
mongodump --uri "<Atlas Cluster URI>"


// Export JSON
mongoexport --uri "<Atlas Cluster URI>"
            --collection=<collection name>
            --out=<filename>.json
            
            
//Atlas Cluster URI
"mongodb+srv://<username>:<password>@<cluster>.mongodb.net/database name"

 

 

② import

BSON 형식 데이터를 가져오기 위해서는 mongorestore 명령어를 사용하고, JSON 형식 데이터는 mognoimport 명령어를 사용한다. URI를 사용해서 가져올 리소스의 위치를 명시해줘야 한다.

// Import BSON
mongorestore --uri "<Atlas Cluster URI>"
             --drop dump


// Import JSON
mongoimport --uri "<Atlas Cluster URI>"
            --drop=<filename>.json

 

 

 

 

[Database] MongoDB란? NoSQL, 도큐먼트 데이터베이스, cluster replica set Instance

MongoDB란? MongoDB는 대표적인 NoSQL Document 데이터베이스다. 테이블 단위로 저장하는 SQL 기반 관계형 데이터베이스와는 다르게 문서처럼 데이터를 저장 및 관리한다. 일반적으로 Document 데이터베이

about-tech.tistory.com

 

 

[Database] SQL(구조화 쿼리) vs NoSQL(비구조화 쿼리) 차이점

What is the diffrence between SQL and NoSQL? SQL vs NoSQL 개념? 데이터베이스는 크게 관계형 데이터베이스와 비관계형 데이터베이스로 구분된다. 관계형 데이터베이스는 SQL을 기반으로 작성되고, 비관계형..

about-tech.tistory.com

 

댓글