Showing

[MongoDB] mongodb 세팅과 Compass, 관계형 DB와의 차이점 본문

컴퓨터 공학, 전산학/데이터베이스

[MongoDB] mongodb 세팅과 Compass, 관계형 DB와의 차이점

RabbitCode 2023. 7. 17. 04:55

들어가며

안녕하세요! flyduckdev입니다. 오늘은 mongodb를 compass free 가격으로 다뤄보는 튜토리얼 과정을 블로그에 남기려고 합니다.
순서는 몽고 db 시작을 위한 세팅, compass 에서 몽고디비 명령어 다루기, 관계형디비와 몽고디비의 차이점 순서대로 작성됩니다. 편의상 '~ㄴ다'로 말을 줄이고 바로 포스팅 시작해보도록 하겠습니다.
 

파트1 몽고 DB 세팅

 
1. https://www.mongodb.com/

 

MongoDB: The Developer Data Platform

Get your ideas to market faster with a developer data platform built on the leading modern database. MongoDB makes working with data easy.

www.mongodb.com

mongodb 공식 홈페이지에 로그인(구글 혹은 깃허브)해준다.
 
2. 아래의 링크로 들어간다.
https://cloud.mongodb.com/v2#/preferences/organizations

 

Cloud: MongoDB Cloud

 

account.mongodb.com

새로운 Organization을 만들어준다.
 
3.

원하는 이름을 작성하고 'Next'
db를 같이 공유해야할 협업자가 있다면 이메일 작성해서 넣어주고 Create Organization
 
4.

프로젝트를 생성해준다.
5.

역시나 이름을 자유롭게 써주고 Next
6.
협업자 이메일 필요하다면 써넣어주고 Create Project
 
7. Build a Database 클릭

연습용으로 만드는 것이기 때문에 Free 버전 선택해준다.
 
8. aws region을 seoul로 해주고 create

9. 유저네임과 비밀번호 설정.(자동생성 비밀번호는 언제든 생성해서 바꿀 수 있으니 큰 부담 안 가져도 된다)

10. 내 ip는 자동 추가되고, everywhere에서도 볼 수 있게 만들고 싶다면 0.0.0.0/0 작성해서 Add Entry
실무에서는 회사 백엔드 ip만 추가할 가능성이 높다.

11.

Connect를 누르면
 

아래와 같은 창이 뜬다. Compass를 눌러 다운로드 해준다.

Download Compass 클릭!
또한, 2Copy the connection string, then open MongoDB Compass 아래 있는 복사 링크를 잘 복사해두도록 하자. compass 들어가자마자 필요하다!
 

파트2 compass 사용해보기

1. 방금 복사했던 링크를 복사해넣어주고 <password>를 싹 지우고 비밀번호를 입력해준다.

비밀번호를 까먹어도 상관없다.

Database Access > Edit > Edit Password
 
를 통해서 비밀번호를 고치면 된다.

연결 후에 위와 같은 db들이 디폴트값으로 깔려있는 것을 볼 수 있는데 건들지 않는 것이 좋다. 
 
2. 첫번째 data 넣어보기
바닥에 청록색 라인이 있다. 이것은 터미널이며, 이 터미널을 끌어올릴 수 있다.

위의 과정을 풀어 서술하면 아래와 같다.
 
 

db라고 치면 test가 나온다.

아직 새로고침해도 blog 데이터베이스는 보이지 않을 것이다. mongodb에서는 데이터가 생성이 되어야 그제서야 생성이 된다고 보면 된다. users라는 컬렉션을 만들고 가 데이터를 넣어준다.

 
users를 전체조회하고 싶다면 find를, 하나만 조회하고 싶다면 findOne
 
 
 

이제 새로고침을 하면 blog라는 데이터베이스가 생성되었고, users라는 컬럭센안에 새로 넣은 데이터가 잘 있는 것을 확인할 수 있다. 컬렉션도 데이터베이스처럼 데이터 생성시에 자동 생성되기 때문이다. 

주목할 점은 insert시에 name과 email만 넣었는데 _id 가 자동으로 생성되었다는 점이다. 이는 몽고디비에서 자동으로 생성해주는 유니크키이다. 관계형 디비에서 프라이머리 키와 역할이 똑같다.
 
3. 두번째 data 넣어보기
이번에는 첫번째 data와는 달리 name은 string이 아닌 객체로, 이메일은 없는 상태의 유저 data를 하나 더 넣어보도록 한다.

db.users.insertOne({name:{first:"Elon", last:"Musk"}})

db.users.find()

파트3 관계형 디비와 차이점

관계형 디비는 일관된 표 형식(엄격한 형식)으로 저장된다. 몽고디비는 표가 아니라 json과 같은 객체 형식으로 저장된다. 데이터 구조 자체가 관계형의 테이블 형식과는 완전히 다루기 때문에 객체 안에 객체를 넣거나 아예 다른 키를 가지고, 배열을 넣는 등 다양한 json 스타일을 저장(자유로운 형식)할 수 있기 때문에 몽고디비답게 쓰려는 접근이 중요하다.