MongoDB TIL 02

Nabang Kim·2021년 9월 3일

MongoDB

목록 보기
2/10
post-thumbnail

2021년 9월 3일에 작성된 문서 2번 입니다.
MongoDB 배운 내용을 정리했습니다.



JSON vs. BSON

JSON 형식으로 도큐먼트를 작성하기 위한 조건

  1. {} 로 도큐먼트가 시작하고, 끝나야 한다.
  2. 필드와 값이 콜론(:)으로 분리되어야 한다
  3. 필드와 값을 포함하는 쌍은 쉼표(,)로 구분.
  4. 문자열인 필드도 쌍따옴표("")로 감싼다.

JSON 형식으로 작성된 올바른 도큐먼트 예시

  • JSON 형식은 읽기 쉽고, 개발자들이 사용하기 편한 형태.
  • JSON 형식은 데이터를 저장하는 좋은 방법 중 하나.



BSON(Binary JSON) 형식으로

JSON의 형태로 데이터를 저장할 때 단점도 존재

JSON은 텍스트 형식이기 때문에 읽기 쉽지만, 파싱이 느리고 메모리 사용이 비효율적입니다. 그리고 JSON은 기본 데이터 타입만을 지원하기 때문에, 사용 할 수 있는 데이터 타입에 제약이 있습니다.

이런 문제점을 해결하기 위한 방안으로 BSON(Binary JSON) 형식을 도입.


BSON 예시

  • BSON은 이진법에 기반을 둔 표현
    * JSON 보다 메모리 사용이 효율적, 빠르고, 가볍고, 유연.
  • BSON의 사용으로 더 많은 데이터 타입을 사용할 수 있다.

MongoDB는 JSON형식으로 작성된 것은 무엇이든 데이터베이스에 추가할 수 있고, 쉽게 조회할 수 있습니다.
그러나 그 내부에서는 속도, 효율성, 유연성의 장점이 있는 BSON으로 데이터를 저장, 사용하고 있습니다.





Importing & Exporting

MongoDB 데이터는 BSON의 형태로 저장, JSON의 형태로 출력

  • BSON : 단순히 백업 저장용 (가볍고 빠르니까)
  • JSON : 데이터 내보낸 후, 조회를 하거나 출력 (읽기 쉬우니까)

조건따라, 가져오거나 내보낼 때 사용 가능한 명령어가 각각 존재.
크게 두 가지로 나누어진다.

JSON 형식BSON 형식
가져오기: mongoimport가져오기: mongorestore
내보내기: mongoexport내보내기: mongodump

1. 내보내기(Export) 명령어

JSON 형식BSON 형식
내보내기: mongoexport내보내기: mongodump

  • 사용하려면 Atlas Cluster URI가 필요
    • Atlas Cluster URI :
      • 일반 웹의 URI와 같은 형식
      • username, password, cluster 주소로 구성

mongodump를 하는 경우, 별다른 쿼리가 없지만, mongoexport를 하는 경우, 해당 데이터베이스의 컬렉션 이름, 파일 이름까지 정확하게 작성해야한다.


1-1. mongodump 예시 (BSON)

mongodump 
--uri "mongodb+srv://[주소].mongodb.net/sample_supplies"

mongodump 명령어를 통해, 아틀라스 클러스터 안에 있는 sample_supplies 라는 데이터베이스를 로컬 머신으로 BSON 형식의 데이터로 내보냈습니다.


  • dump 폴더 안에 sample_supplies 데이터베이스 폴더가 생성
    • 그 안에는 다시 sales.bson 파일이 생성됨.
    • sale.bson 파일을 열어보니, BSON 형식의 데이터를 확인 가능.

1-2. mongoexport 예시 (JSON)

mongoexport를 사용하여, JSON 형식의 데이터를 내보낼 때에는 내보낼 컬렉션과 파일의 이름을 정확히 명시해야 합니다. 그리고 로컬 머신으로 내보낸 sales.json 파일을 열어보겠습니다.

  • sales.json 파일 안의 JSON 형식의 데이터를 볼 수 있다.



2. 가져오기(Import) 명령어

JSON 형식BSON 형식
가져오기: mongoimport가져오기: mongorestore

  • 마찬가지로 URI를 사용해서 작성
  • 기존 데이터 삭제하기 옵션인 drop 쿼리문은 선택적으로 사용할 수 있다.

2-1. mongorestore 예시 (BSON)

이 예시에서는 mongodump를 통해 가져온 BSON 형식의 파일을 다시 mongorestore를 통해 아틀라스 클러스터로 복원 시켜보도록 하겠습니다.

  • 아틀라스 클러스터 입장에서 로컬 머신으로 내보냈던 dump 파일을 다시 가져가는 개념.
  • 터미널에 done이라고 표시 되면서 mongorestore 완료.

2-2. mongoimport 예시 (JSON )

  • mongoimport는 데이터베이스를 다시 아틀라스 클러스터로 가져올 수 있게 한다.
  • 이 때 적용되는 데이터의 형식은 JSON 뿐 아니라, csv와 같은 데이터 형식일 수도 있다.

파란색 블록에서는 해당 데이터가 삽입되는 컬렉션을 지정하지 않았지만, 아래 초록색 블록과 같이 컬렉션 이름을 지정하는 등의 부가적인 옵션을 추가 할 수 있습니다.






Written with StackEdit.

0개의 댓글