node.js - 데이터베이스 / mongoDB(&GUI) / docker-compose / mongoose 설치 본문
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
해당 모듈을 설치 후 접근해야 하니, 사이트따라 import / connect 시켜주자
허나 설치만 한다고 해서 연결이 되지는 않는다. (express 불가)
** 도커 컴퓨터(27017) 와 express(4000)가 연결이 되지 않아 생긴 문제
이를 해결해주기 위해 docker-compose 간 통로를 뚫어주는 작업이 필요한데,
이를 '네임리졸루션'이라고 함 ** express 가능
네임 리졸루션 활용한 docker-compose 간 내부적 연결
활용 전
활용 후 (이때, 추가적으로 docker-compose.yaml / my-database 의 포트 포워딩 비활성화했음)
이렇게 바꾸게 되면 정상적으로 'db접속' 이 완료됨을 확인할 수 있다.
'개발 > node.js' 카테고리의 다른 글
node.js - DatabaseTool(GUI) (0) | 2023.01.19 |
---|---|
node.js - package.json(의존성 모듈) (0) | 2023.01.19 |
node.js - 비동기 프로그래밍 / callback / promise / async & await (0) | 2023.01.18 |
node.js - 가상 머신 / Docker / 포트포워딩 (0) | 2023.01.17 |
node.js - async-await / axios 활용 문자&메일 발송 / 환경변수 (0) | 2023.01.17 |