티스토리 뷰
ORM(Object-Relational Mapping)은 객체지향 패러다임을 활용하여 관계형 데이터베이스(RDB)의 데이터를 조작하게 하는 기술이다. 이를 활용하면 쿼리를 작성하지 않도고 객체의 메서드를 활용하는 것처럼 쿼리 로직을 작성할 수 있다. 백엔드를 구축하다가 RDB에 단순 쿼리를 날리는 것이 비효율적 => Node.js의 대표적인 ORM인 Sequelize를 사용
Sequelize는 MySQL, PostgreSQL, MariaDB 등 많은 RDBMS를 지원하고 Promise기반으로 구현되었기 때문에 비동기로직을 편리하게 작성할 수 있다. (이전에 MongoDB a.k.a noSQL 에서는 mongoose를 사용한 것처럼)
- 자바스크립트 구문을 알아서 SQL로 변환해주는 모듈이다.
- 다른 데이터베이스 전환시에도 유용하게 사용가능하다.
>즉, 시퀄라이즈는 RDBMS를 node 프로젝트에서 조작하기 쉽게 도와주는 라이브러리 라고 생각하면 될듯하다.
슬랙을 클론코딩해보는 프로젝트에서 socket통신을 위해 구현된 BE를 사용하려면 FE의 로컬환경에서도 어느정도 세팅이 되어있어야 한다. FE의 로컬에도 MySQL을 설치해주면 되는데 이 부분에 대해서는 `더북 홈페이지`의 Node.js 개정판 3판에서 오픈된 무료 챕터에서 MySQL을 win, mac에서 각각 어떻게 설치할 수 있는 지 알려준다.
MySQL 설치 시 주의 사항으로는 root 로 설정된 password 를 잘 기억해놔야 한다.
MySQL 8버전과 5버전에서 password 관련 에러가 있을 수 있다고 했는데 나는 딱히 에러가 없었다.
또한, 정상적으로 설치된 MySQL은 윈도우 기준 cmd(명령 프롬프트)에서 확인할 수 있다.
- Workbench 의 경로는 개인마다 다를 수 있으니 해당 파일이 어디있는 지 확인한 후 경로를 제대로 잡아줘야 한다.( cd 명령어가 보이시죠?)
- -u 는 user이름을 말하는 것이고 -p 옵션은 패스워드를 말하는 것이다. 위의 명령어를 입력하면 password를 입력하라고 나오는데 이때, MySQL를 설치할 때 지정했던 root password를 입력해주면 된다.
WARN🤨아래의 진행 방식은 이미 구현된 BE를 세팅하는 방법입니다. (저는 복습 차원에서 정리를 해놓은 것이고 node프로젝트에서 MySQL 세팅을 초기부터 하는 내용이 아니므로 간단하게 참고만 하셔야 합니다.)
백엔드 폴더에서 .env 파일에 MySQL password를 저장하고 `npx sequelize db:create` 명령어를 입력해주면 Dadabase DB명 created 라는 메세지가 나온다.
이 만들어진 DB명, 예시로 "감자"라는 데이터베이스가 생겼다면 이 안에 테이블들이 있는 것이다. (BE 폴더에서 model이 테이블에 속한다고 한다.) => 서버는 yarn dev(or npm run dev) 로 실행하고 ctrl + c 로 로컬 서버를 끈다.
이 다음 `npx sequelize db:seed:all` 명령어를 입력해주면 테이블 안에 가짜 데이터를 만들어준다. (처음 테이블을 생성하고 나면 그 테이블 안에는 데이터가 아무것도 없기 때문에 더미 데이터를 만들어주는 과정이라고 생각하면 된다.)
[MySQL 구성]
- 데이터베이스(database) => 테이블(table) => 로우(row) //실제 데이터라고 생각
Oracle의 경우,
- 데이터베이스 => 스키마 => 테이블 => 로우
- "스키마"단계가 하나 더 추가되어 있다. (MySQL은 데이터베이스와 스키마를 구별하지 않는데 Oracle은 구별하는 경우가 있다.) // mongoose에서 이 스키마 개념이 도입되어 있다. 몽고 DB는 noSQL이기 때문에 데이터의 필터링이 되지않는다. 이런 점을 보완하기 위해 스키마 개념을 도입되었고 몽고 DB에 보내기 전에 데이터를 필터링하는 작업을 할 수 있게 됐다고 앎
'프로그래밍 > Node.js' 카테고리의 다른 글
[mongoDB | mongoose] Mongoose(ODM)과 쿼리 메서드 (1) | 2023.05.08 |
---|---|
[mongoDB | mongoose] node프로젝트에 mongoDB 연결하기 (0) | 2023.05.07 |
[Node.js] cors() 라이브러리와 프리플라이트 (0) | 2023.04.28 |
[Node.js] date-fns JS 날짜 라이브러리와 CommonJS module vs ES module (0) | 2023.04.28 |
[Node.js] Express는 무엇인가 (0) | 2023.04.27 |
- Total
- Today
- Yesterday
- && 셸 명령어
- getServerSideProps
- 틸드와 캐럿
- 프리렌더링확인법
- nvm경로 오류
- reactAPI
- is()
- 원티드 프리온보딩 FE 챌린지
- 원티드 프리온보딩 프론트엔드 챌린지 3일차
- 부트캠프항해
- 원티드 FE 프리온보딩 챌린지
- ~ ^
- tilde caret
- 타입스크립트 DT
- text input pattern
- 항해99프론트후기
- 항해99프론트
- getStaticPaths
- D 플래그
- 타입스크립트 장점
- 원티드 3월 프론트엔드 챌린지
- grid flex
- 프리온보딩 프론트엔드 챌린지 3월
- float 레이아웃
- fs모듈 넥스트
- aspect-ratio
- 항해99추천비추천
- 형제 요소 선택자
- Prittier
- nvm 설치순서
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |