상호작용 DB | 쿼리문 작성하는 프로그래밍 언어 | 연결 | 데이터 집합 | 데이터 | 확장 | 예 |
---|---|---|---|---|---|---|
관계형 DB | SQL(Structured Query Language, 구조적 쿼리 언어) | ORM 사용(Object-Relational Mapper) | 표(table) | 행(row) | 수직적 | Oracle, MySQL, Postgresql |
비관계형 DB | NoSQL(Not only SQL) | ODM 사용(Object-Document Mapper) | 컬렉션(collection) | 문서(document) | 수평적 | MongoDB |
정의 | 사용방법 | 예시 | |
---|---|---|---|
CLI | 명령줄 인터페이스 Command-Line Interface | 터미널에 명령어 입력 | - |
GUI | 그래픽 사용자 인터페이스 Graphical User Interface | 앱 접속 후 아이콘 등을 클릭 | MongoDB에 접속하는데 활용하는 MongoDB-compass |
터미널을 통해 접속
brew services
: mongo-community
의 status가 started 상태임을 확인
mongo
: 몽고DB에 접속하기
show databases;
: 데이터베이스 조회하기
exit
: 종료하기
몽고DB컴패스 이용해 접속
mongodb://localhost:27017
: 27017(몽고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
: 가상컴퓨터 접속 종료: 몽고DB와 노드를 매핑(1:1 매칭)하기 위한 도구(라이브러리)
yarn add mongoose
import mongoose from 'mongoose'
mongoose.connect("mongodb://localhost:27017/mydocker").then(()=> 실행할 기능).catch(()=> 에러 발생 시)
몽구스를 이용하면 포트연결 없이도 가상컴퓨터끼리 연결해줄 수 있다
- Name Resolution 을 이용하면, 포트포워딩 없이도 가상컴퓨터끼리 포트를 연결할 수 있다
docker-compose.yaml
의 port 설정을 주석 처리 해도 가상컴퓨터끼리 연결이 유지된다- 가상컴퓨터끼리'만' 연결되므로,
docker-compose.yaml
의 port 설정을 주석 처리하면 내 컴퓨터(가상컴퓨터의 밖)에서 실행중인 MongoDB-compass와 MongoDB 사이의 연결은 종료된다