TIL 21.06.25

Jaemin Jung·2021년 6월 27일
0

Today I Learned

목록 보기
47/62
post-thumbnail

오늘한일

오늘은 페어 프로그래밍 없이 혼자 이론 학습하는 날이다.
확실히 깨닫게 된것은, 나는 자유로이 풀어놓으면 많이 게을러진다는것이다.
혼자서 이론 학습을 하려하니 집중이 잘 되지 않았다.
개인 학습 시간에 여러번 다시 읽어보았지만 확실히 데이터베이스는 낯설다보니
흡수하는게 쉽지는 않았다.
개념이라도 이해하고 사용방법은 좀더 익혀본뒤 블로깅 하겠다.

Achievement goals

  • NoSQL의 장점 및 특징에 대해서 이해 할 수 있다.
  • MongoDB의 도큐먼트(Document)와 컬렉션(Collection)에 대해 이해할 수 있다.
  • JSON과 BSON의 차이점을 이해하고, 도큐먼트를 가져오거나 내보낼 수 있다.
  • MongoDB의 Atlas에 대해 이해할 수 있다
  • 클러스터(Cluster)와 레플리카 세트(Replica set)에 대해 이해할 수 있다.

NoSQL

NoSQL은 매우 넓은 범위에서 사용하는 용어로, 관계형 테이블의 레거시한 방법을 사용하지 않는 데이터 저장소를 말한다.

데이터를 행과 열이 아닌, 여러 타입의 체계적인 방식으로 저장한다.
(Key - Value 타입, 문서형(Document), Wide-Column, Graph)

NoSQL의 장점

  • 스키마의 형태가 SQL보다 동적이다.
  • 비구조적인 대용량의 데이터를 저장하는 경우 SQL보다 효율적이다.
  • NoSQL은 수평적 확장의 형태로 증설을 하기 때문에, 관리가 용이하고, 무한대로 증설이 가능하다.
  • 스키마를 미리 준비할 필요가 없어서, 개발을 빠르게 진행 해야하는 경우에 적합하다.

MongoDB

MongoDB는 문서형(Document)형태의 NoSQL이다.

Atlas

MongoDB는 Atlas로 클라우드에 데이터베이스를 설정한다.
AWS, Azure, GCP를 통해 배포에 관한 모든 것을 통합 관리해주며,
데이터를 시각화, 분석, 내보내기, 빌드하는데 사용할 수 있다.
한마디로 MongoDB를 편리하게 사용할 수 있는 서비스이다.

클러스터

인스턴스(Mongo DB의 데이터베이스)들의 모임을 클러스터라고 한다 하나의 시스템처럼 작동한다.
데이터를 저장하는 서버 그룹이라고 보면 될것같다.

레플리카 세트

래플리카 클러스터에서 각각의 인스턴스는 동일한 복제본을 가지고있다.
도큐먼트나 컬렉션을 변경할 경우 변경된 데이터의 중복 사본이 레플리카 세트에 저장된다.
동일한 데이터를 저장하는 소수의 연결된 머신은 그 중 하나에 문제가 발생하더라도, 데이터를 그대로 유지한다.

MongoDB 구조

구조는 가장 작은 단위부터 Document가 있고, Collection, Database가 있다.
Document가 모여서 Collection이 되고, Collection이 모여 Database가 된다.

Database >> Collection > Document

Document

도큐먼트는 객체와 같이 데이터를 Key - Value 쌍으로 저장하고 구성한다.
여기서 Key를 도큐먼트에서는 필드라고 부르며, 각 필드와 값에는 쌍따옴표가 들어가 json과 비슷해 보인다.
필드는 데이터의 고유한 식별자이고, 값은 주어진 식별자의 데이터가 들어간다.

{
  <field> : <value>,
  "name" : "jaemin"

}

도큐먼트 내 필드와 값이 똑같다 할지라도 id값이 다르면 서로 다른 도큐먼트로 간주하며,
필드값이 달라도 id가 같으면 같은 도큐먼트로 간주하여 에러가 발생한다.

Collection

도큐먼트로 구성된 저장소이다.
SQL의 table과 비슷한 개념이다.
한 컬렉션 안에 구성된 도큐먼트들은 공통의 필드가 있다.

JSON vs BSON

MongoDB에서는 데이터를 JSON과 BSON 두가지 형태로 사용한다.

JSON 형식은 읽기 쉽고, 많은 개발자들이 사용하기 편리한 형태이다.
읽기 쉽지만 파싱이 느리고 메모리 사용이 비효율적이며,
기본 데이터 타입만을 지원하기 때문에 데이터를 저장할때 적합하지 않다.

BSON 형식은 컴퓨터의 언어(이진법)에 기반을 둔 표현법이다.
JSON 보다 메모리 사용이 효율적이며 빠른 장점이 있다.
하지만 컴퓨터 언어에 기반을 두다보니 읽기가 매우 힘들다.

MongoDB의 데이터는 BSON의 형태로 저장을 하고, 읽기 쉬운 JSON의 형태로 출력한다.

importing & Exporting

데이터를 가져오거나, 내보내는 경우에 따라 효율적인 데이터 형식이 존재하며,
각각 사용 가능한 명령어가 존재한다.

  • JSON 형식으로 데이터를 가져오고 내보내기 위한 명령어
    가져오기(import) : mongoimport 내보내기(export) : mongoexport

  • BSON 형식으로 데이터를 가져오고 내보내기 위한 명령어
    가져오기(import) : mongorestore 내보내기(export) : mongodump

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

참고사이트

https://m.blog.naver.com/sehyunfa/221653357171
https://yngmanie.space/posts/mongoDB
https://www.mongodb.com/presentations/mongodb-----atlas-

profile
내가 보려고 쓰는 블로그

0개의 댓글