본문 바로가기

node.js - 데이터베이스 / mongoDB(&GUI) / docker-compose / mongoose 설치 본문

개발/node.js

node.js - 데이터베이스 / mongoDB(&GUI) / docker-compose / mongoose 설치

자전하는명왕성 2023. 1. 19. 18:40

데이터베이스 

SQL : 데이터가 엑셀과 같은 표(Table)안에 행렬(row & column)와 같은 형태로 저장되어 있음

데이터끼리 상호연결 (관계형 데이터베이스) / MySQL, Oracle, PostgreSQL

 

noSQL  : 데이터가 컬렉션(collection)안에 객체(dacument)와 같은 형태로 저장되어 있음

데이터끼리 비교적 유연하게 연결(비관계형 데이터베이스) / MongoDB / Redis / Firebase

 

데이터베이스에서 사용하는 명령어 : 쿼리문(Query Language)이라고 함 

SQL : ex) select(조회) 'name' from(출처) 'user' / ORM(sequalize / typeorm / prisma)를 통해 명령어 변경

noSQL : db.user.find() / db.user.insert()  / ODM(mongoose) 을 통해 명령어를 굳이 명령어 변경

ORM , ODM : 해당 데이터베이스들의 명령어를 통일시켜 사용자에게 편의를 줌

 

오늘 포스팅에서는 MongoDB & GUI인 MongoDB campass 사용.

gui : ex) mongodb campass(mongoDB 관리프로그램) // gui 와 db는 다른 것

몇몇 터미널 명령어

  • show databases; - 데이터베이스들을 보여줌
  • use local; - local 폴더를 염
  • show collections; - local 폴더 내부의 콜렉션들을 보여줌
  • db.startup_log.find() = 쿼리문 - startup_log 도큐멘트를 보여줌

 

이때 아래 사진에서 startup_log 는 Collection / 옆에 보이는 파일들은 Dacument 라고 볼 수 있음

 

GUI 에서 product 콜렉션을 생성한 후, dacument 까지 생성한 모습

당연하게도 터미널을 통해 DB안에도 저장한 데이터가 있는지 확인이 가능

 

 

도커 컴포즈 : 두 개 이상의 도커 컴퓨터를 키기 위해 사용하는 방법

yaml : 도커 컴포즈를 사용하기 위한 파일 확장자

Docker.yaml 작성 방법

yaml 파일을 작성하기 위해서는 들여쓰기(종속 관계의 의미)에 주의해야 하며, 

build : 빌드할 내용을 담는 공간 / context : 경로 / dockerfile : 파일 이름을 의미한다.

또 ports 를 활용하여 포트 포워딩을 설정할 수 있다.

** 빌드 코드가 한 줄일 경우 아래와 같이도 가능하다.

 # 컴퓨터 이름
  my-database:
    image: mongo:5
    ports:
      - 27017:27017

 

docker-compose 명령어

  • docker-compose build : 빌드
  • docker-compose up : 실행
  • docker-compose stop : 모든 내용 종료
  • ctrl + c 도커 중지
  • docker exec -it '데이터베이스 컨테이너ID' /bin/bash :  database 컨테이너 접속 가능

아래를 통해 mongo에 접속할 수 있음을 확인할 수 있음

 

mongoose 

mongoose 는 ODM 중 하나로, noSQL의 명령어 사용을 편하게 해주는 프로그램이다.

https://www.npmjs.com/package/mongoose

 

mongoose

Mongoose MongoDB ODM. Latest version: 6.8.4, last published: 2 days ago. Start using mongoose in your project by running `npm i mongoose`. There are 13232 other projects in the npm registry using mongoose.

www.npmjs.com

해당 모듈을 설치 후 접근해야 하니, 사이트따라 import / connect 시켜주자

 

허나 설치만 한다고 해서 연결이 되지는 않는다. (express 불가)

** 도커 컴퓨터(27017) 와 express(4000)가 연결이 되지 않아 생긴 문제

이를 해결해주기 위해 docker-compose 간 통로를 뚫어주는 작업이 필요한데, 

이를 '네임리졸루션'이라고 함 ** express 가능

 

네임 리졸루션 활용한 docker-compose 간 내부적 연결

활용 전

활용 후 (이때, 추가적으로 docker-compose.yaml / my-database 의 포트 포워딩 비활성화했음)

이렇게 바꾸게 되면 정상적으로 'db접속' 이 완료됨을 확인할 수 있다.

 

Comments