1. DB(데이터베이스)

1) 서비스 전체 구조의 이해

백엔드서버와 브라우저를 통할때는 : json
프론트엔드서버와 브라우저가 통할때는 : html, css, js

프로트엔드(서버)와 백엔드(서버)는 여러개 만들어 질 수 있다.
브라우저는 유저 페이지, 관리자 페이지가 존재 한다.
하지만 데이터베이스는 하나를 공유한다!!

2) 데이터베이스란?

백엔드 컴퓨터에 데이터베이스로 데이터를 보내주는 엑셀이라고 생각하면 편함

2. 데이터베이스 종류

1) SQL과 NoSQL

(1) SQL (RDB:관계형 데이터베이스)

  • 엑셀처럼 표가 있어 백엔드컴퓨터에 명령어를 통해 SQL 안에 데이터가 작성되는 방식이다.
  • 시트 하나를 테이블(table)이라고 부른다.
    행(row) 열(column)으로 존재한다.

  • 종류
    ex) oracle, mysql, postgres

  • 명령어
    select아이디,이메일,이름fromUser.where아이디 = U01

(2) NoSQL

  • 서류봉투에 문서(key:value형식으로)를 한장씩 담아둔다고 생각하면 편하다.

  • 봉투를 컬렉션(collection)이라고 부르고, 한장한장을 document라고 부른다, 안에 key:value형식 하나하나를 필드(filed)라고 부른다.

  • 종류
    ex)mongodb, firebase, redis

  • 명령어
    db.user.find({id:'U01})

2) library

  • 요즘은 두개의 장점을 살려 두개다 사용하는 추세이다.

  • 명령어를 외우기 힘들기 때문에 나온 library가 있다.

(1) ORM (Object Relation Mappping) 관계형 데이터 베이스에 쉽게 접근해서 수정하고 변경하기 쉽게 해줌
종류: typeorm(가장 유명한 typescript ORM), sequalize(가장유명한 js ORM),prisma
(2) ODM : 문서형 데이터 베이스에 쉽게 접근해서 수정하고 변경하기 쉽게 해줌
종류: mongoose 등등

3. 몽고DB텍스트

몽고 실행하기 - 터미널에서 mongo
몽고에 데이터 베이스 보기 - show databases;
데이터베이스 선택하기 - use local; => 이후로 local로 입력된다
콜렉션 보기 - show collections;
안에 페이지보기- db.startup_log.find();

🤩 mongodb-compass를 통해 페이지를 좀더 보기 쉽게 볼 수 있다.
뿐만 아니라 데이터와 폴더를 만들어 줄 수 있다.

4. docker를 이용한 mongo사용

도커 컴포즈와 몽고DB 연결

docker-compose.yaml : 띄어쓰기가 중요하다
context: .( 현위치에 같이 있다는 뜻)
dockerfile: (열 dockerfile을 적는다)

docker-compose build : compose를 통해 묶인 docker 파일을 한번에 build를 한다.
docker-compose up : docker 파일을 연다.

  • 지금 열려 있는 몽고 서버 보기 : sudo systemctl status mongod
  • 몽고 서버 닫기 : sudo systemctl stop mongod

이후 서버가 열려있기 때문에 터미널을 다시 열어서 실행하는 것이 좋다!!
captain@nowonduui-MacBookPro backend % docker ps
captain@nowonduui-MacBookPro backend % docker exec -it 컨테이너ID /bin/bash (몽고파일이 있는 컨테이너ID를 골라 들어간다)
captain@nowonduui-MacBookPro backend % mongo (몽고를 실행해준다)
captain@nowonduui-MacBookPro backend % show databases;
captain@nowonduui-MacBookPro backend % use local;
captain@nowonduui-MacBookPro backend % show collections;
captain@nowonduui-MacBookPro backend % 몽고DB 컴패스에서 접속
captain@nowonduui-MacBookPro backend % 접속안되면? docker-compose.yaml 포트포워딩 확인

🤩tip!!🤩

간단한 mongo만 생성해줄 때는 docker 파일을 만들지 않고 이렇게 해주면 자동으로 생성된다.

5. mongoose

express에서 mongodb로 가기 위한 ODM
이미지 파일만 받아오는 경우 docker파일까지 받아올 필요가 없다.

mongoose 설치

  • package.json에 터미널을 열고 yarn add mongoose를 해준다.
  • index.js에tj 최상단에 import mongoose from "mongoose"를 써준뒤 express실행 app위에 mongoose가 잘 되는지 확인하는 명령어를 써준다!!
    .connect("mongodb://my-database:27017/mydocker") 이부분을 보면 뒤에 mydocker라는 폴더가 존재 하지 않으면 만들어서 들어가지게 된다!!

도커 컴포즈
도커 컴퓨터 간에는 포트 포워딩이 필요 없어진다. => 네임리졸류션

docker-compose.yaml에서 포트 포워딩을 없애도 db연결이 가능하게 된다!!

0개의 댓글

Powered by GraphCDN, the GraphQL CDN