백엔드(서버)에서 브라우저(유저)로 JSON을 서빙하고,
프론트(서버)에서 브라우저(유저)로 HTML을 서빙한다.
프론트(관리자)에서 브라우저(관리자)로 HTML을 서빙한다
모든 브라우저가 프론트(서버), 백엔드(서버)를 공유하는 것은 아니다, 하지만 모든 브라우저가 데이터베이스는 공유한다.
데이터 베이스의 종류에는 SQL, NoSQL 등이 있다.
엑셀처럼 표에 저장한다.
관계형데이터베이스(RDB)라고도 불린다.(두개의 테이블이 관계가 있다.)
가로한줄을 행(row)이라고 부른다.
세로한줄을 열(column)이라고 부른다.
표를 테이블(table)이라고 부른다.
사용하는 프로그램은 Oracle, MySQL, PostgreSQL 등이 있다.
조회하는 명령어 : select 이메일 from User where 아이디
서류 봉투에 담아둔다.
객체(key: value)형태로 적는다.
서류봉투를 컬렉션(collection)이라고 부른다.
문서 한장을 document라고 부른다.
가로 한줄을 필드(field)라고 부른다
사용하는 프로그램은 mongodb, firebase, redis 등이 있다.
SQL, NoSQL은 혼용해서 쓰는 것이 일반적이기 때문에 장단점을 알아야 한다.
조회하는 명령어 : db.user.find({id:아이디})
조회하는 명령어 : User.find({id:아이디})
swqualize(가장 유명한 js ORM), typeorm(가장 유명한 ts ORM), prisma 등
NoSQL 조회하는 명령어 : db.User.find({id:아이디})
mongoose 등
mongoDB는 문서지향(Document-Oriented) 저장소를 제공하는 NoSQL 데이터베이스 시스템입니다.
이외에도 NoSQL 데이터베이스 10gen, Couchbse, CouchDB 등이 있지만 인지도 1위를 유지하고 있습니다.
mongo
- 몽고DB 실행 명령어
sudo systemctl status mongod
- 실행되고 있는 몽고DB 확인
show databases;
- 무슨 데이터베이스를 사용하는지 보여주는 명령어
use local;
- local 데이터베이스로 들어감
show collections;
- 무슨 봉투가 있는지 보여주는 명령어
db.startup_log.find();
- 무슨 데이터가 있는지 보여주는 명령어(배열안에 객체로 들어가 있음)
그냥 보기에는 너무 복잡하기 때문에 mongodb-compass를 사용함
몽고DB 포트포워딩
version: '3.7'
# 컴퓨터들
services:
# 컴퓨터이름
my-backend: # express
build:
context: . # 현위치에 같이 있어요
dockerfile: Dockerfile # 실행할 파일명
ports:
- 4000:4000
# 컴퓨터이름
my-database: # mongodb
image: mongo:5 # Dockerfile.mongo 삭제 후 작성
ports:
- 27017:27017
mongo의 조회본이다
mongodb-compass에서 폴더를 생성했다고해서 mongo에 보내주는 것이 아니라 mongo에서 폴더를 생성해서 mongodb-compass에 보여주는 것이다.
ADD DATA로 A4용지를 하나 추가해 줄 수 있다.
도커를 실행시켜서 하나는 몽고DB, 하나는 익스프레스 실행
두개의 도커를 한번에 실행
docker-compose.yml - 띄여쓰기가 중요한 설정 파일
부모 자식폴더간 들여쓰기 간격을 맞춰야한다.
sudo docker-compose build
sudo docker-compose up
sudo docker ps
docker exec -it 컨테이너ID /bin/bash
mongo
show databases;
use local;
show collections;
몽고DB 컴패스에서 접속 // 접속이 안되면 docker-compose.yaml 포트포워딩 확인
컴퓨터가 2개가 이어지지 않을 것이다.
네임리졸루션을통해 해결할 수 있다.
index.js
mongoose.connect('mongodb://localhost:27017/mydocker')
-> mongoose.connect('mongodb://my-database:27017/mydocker')
.then(() => console.log('DB 접속에 성공하였습니다.'))
.catch(() => console.log('DB 접속에 실패하였습니다.'))
version: '3.7'
# 컴퓨터들
services:
# 컴퓨터이름
my-backend: # express
build:
context: . # 현위치에 같이 있어요
dockerfile: Dockerfile # 실행할 파일명
ports:
- 4000:4000
# 컴퓨터이름
my-database: # mongodb
image: mongo:5 # Dockerfile.mongo 삭제 후 작성
# ports:
# - 27017:27017
# 네임리졸루션으로 두 컴퓨터가 연결이 되었기 때문에 포트포워딩 해줄 필요가 없어짐
출처 : 코드캠프