8.1 MySQL
- 맥에서 MySQL 설치하기
- Homebrew 설치
- Homebrew: 맥 OS용 패키지 관리자
- MySQL 설치
- brew search mysql
- brew install mysql
- brew list
- MySQL 설정
- brew services start mysql
- mysql -h localhost -u root -p
- exit
- brew services stop mysql
- 윈도우에서 MySQL 설치하기
- MySQL 설치
- MySQL shell을 통해 사용자 생성, 권한 설정, SQL 실행 등 할 수 있음
- MySQL 실행 및 종료
- Workbench 설치하기
- Workbench: MySQL 서버에 접속해서 데이터베이스 테이블을 모델링하고 SQL을 사용해서
DB 작업을 할 수 있도록 도와주는 GUI 기반의 MySQL 통합 관리 프로그램
- 데이터베이스 및 테이블 생성하기
- 데이터베이스 생성
- 테이블 생성
- MySQL 모듈 사용하기
- mysql 모듈 설치
- npm install mysql
- MySQL 연결
- createConnection() 함수를 이용해서 DB 접속을 위해 연결하고 쿼리 수행
- 흐름: 데이터베이스에 연결 -> 쿼리 수행 -> 결과 받은 후 -> 연결 종료
- Connection Pool: DB에 연결된 Connection을 미리 여러 개 만들어 Pool에 보관한 후,
필요할 때마다 Pool에서 Connection을 가져와서 사용하고 사용이 끝나면 다시 Pool로 반환
(여러 Connection 동시에 처리 가능 -> 동시 접속자 수 많은 경우 서버 좀 더 안정적으로 운영 가능)
- MySQL 사용자 계정 생성
- CREATE USER '사용자ID'@'%' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY '비밀번호';
- GRAT ALL PRIVILEGES ON 데이터베이스명.* to '사용자ID'@'%' WITH GRANT OPTION;
flush privileges;
- dotenv 모듈 사용
- dotenv 모듈: 접속 정보처럼 보안상 중요한 데이터를 .env 파일로 저장하고 Node.js가 실행될 때,
.env 파일에 저장되어 있는 데이터를 환경 변수에 등록시켜서 사용할 수 있게 해줌
- 데이터 조회
- 데이터 추가
- 클라이언트에서 body에 담아서 전송한 JSON 데이터를 사용하기 위해서는 express.json() 모듈 사용 필요
(body-parser 모듈을 express 내장 모듈로 담아 놓은 것)
- insert into customer set ?
- ?는 클라이언트에서 전송한 데이터가 오브젝트형인 경우, 각 키를 컬럼명으로, 값은 컬럼에 들어갈 값으로 변환
- 데이터 수정
- Node.js 서버로 요청 시 전송하는 JSON 데이터를 'param' 키로 배열에 담아서 보냄
- 배열에 담긴 데이터 순서대로 쿼리문의 각 물음표에 데이터가 매핑되어 적용됨
- 데이터 삭제
- nodemon 모듈 설치
- node monitor
- 특정 디렉터리 혹은 파일을 감시하고 있다가 변경사항 발생 시 Node.js 애플리케이션 재시작하는 모듈
- Sequelize
- Sequelize 설치
- Sequelize: RDB를 위한 promise 기반의 Node.js ORM 도구
- Node.js로 구현한 JS 객체와 DB의 데이터를 매핑하여 쿼리문 작성 없이 손쉽게 조작 가능
- JS 함수를 통해서 DB 조작 가능 (SQL 쿼리문 필요 없음)
- config/config.json
- config/config.json: DB 연결 정보 관리를 위한 파일 (개발/테스트/운영 환경)
- models/index.js
- models/index.js: DB 연결을 위한 접속 정보 가져오기, Sequelize 객체 생성, 모델 생성, ...
- model 만들기
- 데이터 조회
- findAll(조건), findByPK(pk), findOne(조건)
- 데이터 추가
- create()
- 데이터 수정
- update()
- 데이터 삭제
- destroy()
- ORM의 장단점
- 규모가 큰 애플리케이션의 경우 ORM으로 원하는 데이터를 추출하기 위한 코드를 구현하는 것이 쉽지 않고,
잘못 구현하면 오히려 성능에 치명적일 수 있음
8.2 MongoDB
- 맥에서 MongoDB 설치하기
- Homebrew tab 등록
- MongoDB 설치
- MongoDB 시작
- shell 실행
- 관리자 계정 추가
- 인증을 사용하도록 설정 변경
- 참고 사항
- 윈도우에서 MongoDB 설치하기
- MongoDB 설치
- 환경 변수 설정
- 관리자 계정 추가
- 인증을 사용하도록 설정 변경
- DB 툴 설치하기
- Compass: MongoDB 데이터 탐색 조작 위한 공식적인 툴
- 데이터베이스 및 컬렉션 생성하기
- 컬렉션 (RDB의 테이블), 문서 (RDB의 열, 데이터)
- mongoose 모듈 사용하기
- Node.js에서 MongoDB 데이터 조작하는 데 가장 많이 사용하는 모듈
- MongoDB를 위한 ODM 모듈 (Object Document Mapping)
- JS 객체 <-> MongoDB의 Document (데이터)
- mongoose 설치
- MongoDB 연결
- 스키마와 모델 생성
- 스키마: MongoDB 컬렉션에 들어가는 문서 내부의 각 필드가 어떤 형식으로 되어 있는지 정의하는 객체
- 스키마를 사용해서 만든 모델을 이용하여 MongoDB의 데이터에 대한 CRUD 처리 가능한 다양한 함수 내장
- 스키마 이름이 정의되면 MongoDB의 DB에서 스키마 이름의 소문자 복수 형태로 컬렉션이 만들어짐
- 문서 검색
- Model.find()
- Model.findById()
- Model.findOne()
- 문서 추가
- Model.create()
- 문서 수정
- Model.findByIdAndUpdate()
- Model.updateMany()
- Model.updateOne()
- 문서 삭제
- Model.deleteMany
- Model.deleteOne()
'Books > Node.js 프로젝트 일주일 ✔️' 카테고리의 다른 글
[Node.js 프로젝트 투입 일주일 전] 10장 - Node.js 미니 프로젝트: 제품 판매 웹앱 구현 (마지막) (0) | 2022.05.18 |
---|---|
[Node.js 프로젝트 투입 일주일 전] 9장 - 애플리케이션 운영과 고성능 웹을 위한 Node.js (0) | 2022.05.16 |
[Node.js 프로젝트 투입 일주일 전] 7장 - Express로 웹 서버 구축하기 (0) | 2022.05.08 |
[Node.js 프로젝트 투입 일주일 전] 6장 - json-server 이용하기 (0) | 2022.05.07 |
[Node.js 프로젝트 투입 일주일 전] 5장 - Node.js 내장 모듈과 객체 (0) | 2022.05.07 |
댓글