데이터베이스 개념 , 도커컴포즈, 몽고DB 시작하기

홍예림·2023년 1월 19일
0

JavaScript & 웹 백엔드

목록 보기
10/19
post-custom-banner

🌿 데이터베이스의 종류와 사용 언어

SQL & NoSQL

상호작용 DB쿼리문 작성하는 프로그래밍 언어연결데이터 집합데이터확장
관계형 DBSQL(Structured Query Language, 구조적 쿼리 언어)ORM 사용(Object-Relational Mapper)표(table)행(row)수직적Oracle, MySQL, Postgresql
비관계형 DBNoSQL(Not only SQL)ODM 사용(Object-Document Mapper)컬렉션(collection)문서(document)수평적MongoDB

🌿 MongoDB 사용하기

접속 방법

정의사용방법예시
CLI명령줄 인터페이스 Command-Line Interface터미널에 명령어 입력-
GUI그래픽 사용자 인터페이스 Graphical User Interface앱 접속 후 아이콘 등을 클릭MongoDB에 접속하는데 활용하는 MongoDB-compass

CLI

터미널을 통해 접속
brew services : mongo-community의 status가 started 상태임을 확인
mongo : 몽고DB에 접속하기
show databases; : 데이터베이스 조회하기
exit : 종료하기

GUI

몽고DB컴패스 이용해 접속
mongodb://localhost:27017 : 27017(몽고DB의 기본설정) 포트로 접속한다


가상컴퓨터 안에서 몽고DB 열기

이걸 왜 하나요?

익스프레스express : API 요청-응답 할 수 있는 어플리케이션 구축
도커Docker: 가상 컴퓨터 생성 및 그 안에 접속해 프로그램을 돌려볼 수 있도록 해줌
도커컴포스Docker-compose : 여러 개의 가상컴퓨터를 동시에 열기 위해 사용하는 도커의 기능

활용 ⇒ 가상환경 안에서 데이터베이스(몽고DB)를 열고, 익스프레스로 구축한 어플리케이션과 API 요청-응답이 원활하게 이루어지는지 확인한다

접속

1) 파일 만들기 :

  • Dockerfile 가상컴퓨터(1)의 이미지 설정 : 익스프레스 어플리케이션을 위한
  • Dockerfile.mongo 가상컴퓨터(2)의 이미지 설정 : 몽고DB를 위한
  • docker-compose.yaml 가상컴퓨터 설정 : 도커컴포즈에서 생성될 가상컴퓨터들의 빌드 위치, 참조할 파일, 이미지 파일, 로컬포트 번호 등 설정

2) 빌드:

  • 도커 어플리케이션 실행
  • 터미널에 ls 입력 : docker-compose.yaml 파일이 있는 위치에서 빌드해야 하므로, 파일 존재 여부 체크
  • 터미널에 docker-compose build 입력

3) 가상컴퓨터(도커의 컨테이너) 접속하기
차례대로 터미널에 입력한다.

  • brew services: 내컴퓨터에서 몽고DB가 꺼져있는지 확인 (mongo-community의 status를 확인)
    켜져있다면 brew services stop mongodb-community 를 입력해 종료시켜준다 (단축키 Ctrl + C)
  • docker ps : 실행중인 가상컴퓨터 확인 ⇒ 포트번호가 27017(몽고DB)인 컨테이너의 ID 확인 및 복사
  • docker exec -it 컨테이너ID /bin/bash : 몽고DB가 실행중인 컨테이너 셸(연결통로)로 들어가기
  • mongo : 몽고DB에 접속
  • docker-compose up : 가상컴퓨터 안에서 몽고DB가 굴러가는 상황 펼쳐보기

4) 가상컴퓨터에서 활동하기 : 몽고DB 데이터 보기, 종료
docker-compose up이 입력되어 몽고DB를 들여다보고 있기 때문에 다른 명령어 입력이 불가하다.
다른 창으로 같은 위치의 터미널을 한 번 더 열어준다.

  • > 입력표시가 떠있다
  • show databases; : NoSQL 데이터베이스의 컬렉션(데이터묶음)을 보여준다
  • use 컬렉션이름 : 해당 컬렉션을 선택한다
  • show collections; : 해당 컬렉션으로 들어간다
  • db.도큐먼트이름.find() : NoSQL 데이터베이스의 도큐먼트(문서)에 적혀있는 데이터(객체형태)를 보여준다.
  • exit : 몽고DB 접속 종료
  • exit : 가상컴퓨터 접속 종료

🌿 몽구스Mongoose

: 몽고DB와 노드를 매핑(1:1 매칭)하기 위한 도구(라이브러리)

설치하기

  • yarn 이용함
    설치 : yarn add mongoose
    연결할 어플리케이션(익스프레스)의 파일 최상단 입력 : import mongoose from 'mongoose'
    연결할 어플리케이션(익스프레스)의 app.listen() 위에 입력: mongoose.connect("mongodb://localhost:27017/mydocker").then(()=> 실행할 기능).catch(()=> 에러 발생 시)

몽구스를 이용하면 포트연결 없이도 가상컴퓨터끼리 연결해줄 수 있다

  • Name Resolution 을 이용하면, 포트포워딩 없이도 가상컴퓨터끼리 포트를 연결할 수 있다
  • docker-compose.yaml의 port 설정을 주석 처리 해도 가상컴퓨터끼리 연결이 유지된다
  • 가상컴퓨터끼리'만' 연결되므로,docker-compose.yaml의 port 설정을 주석 처리하면 내 컴퓨터(가상컴퓨터의 밖)에서 실행중인 MongoDB-compass와 MongoDB 사이의 연결은 종료된다

profile
SYNC 3기 5반 2023.07 - 2023.12
post-custom-banner

0개의 댓글