BoilerPlate Code 01 - 몽고DB & 몽구스 연결

Ji Yeon Park·2020년 12월 22일
0

Create Boilerplate Code

목록 보기
2/10
post-thumbnail

✅ 몽고DB란?

MongoDB는 C++로 작성된 오픈소스 문서지향적 크로스 플랫폼 데이터베이스이며, 뛰어난 확장성과 성능을 자랑한다.

✔️ NoSQL(Not only SQL)로 분류되는 데이터베이스 시스템 중 인지도 상위권을 유지하고 있다. MySQL 처럼 전통적인 테이블-관계 기반의 관계형 데이터베이스(RDBMS)가 아니며 RDBMS의 한계를 극복하기 위핸 새로운 형태의 저장소이다.

✔️ 관계형DB가 아니므로 RDBMS처럼 고정된 스키마나 JOIN이 없다. 스키마가 없기 때문에 형식에 구애받지 않고 자유롭게 데이터를 넣을 수 있다.

▶️ 스키마란, SQL의 테이블과 비슷한 데이터의 구조를 말한다. 

✅ 몽고DB의 구조

✔️ Document들이 모여서 Collection이 되고, Collection들이 모여서 Database를 이룬다.

✔️ 가장 많이 쓰이는 관계형 데이터베이스를 예로 들면
▶️ Database는 몽고DB에서 같은 용어 Database로 쓰이고,
▶️ Table은 몽고DB에서 Collection,
▶️ Tuple/Row는 몽고DB에서 Document라고 불린다.

✔️ 몽고DB의 Document는 JSON과 같은 BSON구조로 되어있다.
👉 JSON과 BSON의 차이점

👉 MongoDB 더 알아보기


✅ 몽고DB Cluster 생성하기

👉 몽고DB 링크

몽고DB 가입 ➡️ Create Organization ➡️ Create Project ➡️ Create Cluster


✅ 몽고DB 유저 생성하기

✔️ Connect Your Application 클릭

✔️ 링크 복사해놓기 (나중에 앱 연결할 때 쓰임)


✅ Mongoose 알아보기

*️⃣ Mongoose란?

몽고DB를 간편하게 쓸 수 있는 Object Modeling Tool이다.
몽고DB의 ODM중 가장 유명하고 보편적으로 많이 쓰인다.

ODM (Object Document Mapping) : 객체와 문서를 1대1 매칭한다는 뜻으로
Object는 자바스크립트의 객체이고, Document는 몽고DB의 문서를 뜻한다.
즉, 몽고DB의 문서를 DB에서 조회할 때 자바스크립트 객체로 바꿔주는 역할을 한다.

*️⃣ Mongoose 설치 방법

// 터미널 몽구스 다운로드 코드
npm install mongoose --save

*️⃣ Mongoose 장점

✔️ 몽구스의 대표적인 장점

▶️ 강제 스키마(schema)의 부활
▶️ populate
▶️ 프로미스와 콜백 사용 가능
▶️ 편리한 쿼리 빌더

✔️ Schema & Populate의 부활

▶️ Nosql 자체가 테이블과 join이 없는 것을 활용하는 DB지만 몽구스는 오히려 그 기능을 부활시켰다.
DB에 다큐먼트를 넣을 때 값과 타입 그리고 필드를 검사하고 populate는 SQL의 join과 비슷한 기능을 흉내내준다.
실제로 몽고DB를 사용하다보면 schema와 join이 필요한 경우가 생기기 때문에 이러한 기능은 유용하다.

▶️ 프로미스와 콜백을 자유자재로 전환할 수 있다는 것은 매우 편리하다. 노드는 지금 프로미스가 거의 공식 비동기 API처럼 되어있어서 기본 몽고DB가 콜백 기반이기 때문에 프로미스를 사용할 수 있게 해주는 몽구스가 인기가 많을 수밖에 없다.

▶️ 몽고DB에서 쿼리를 작성할 때 JSON 형식으로 작성하기 때문에 뭔가 장황한 느낌을 준다. 하지만 몽구스의 쿼리는 훨씬 간결하다. 마치 자바스크립트의 API를 제이쿼리가 편리하게 압축시킨 것 처럼 제공하는 쿼리 빌더를 통해 손쉽게 쿼리를 만들 수 있다.

👉 몽구스 스키마 더 자세히 알아보기


✅ App에 몽고DB 연결하기

✔️ 몽구스 이용해서 몽고DB 연결하기

🚫 <password>, <username> 은 <>까지 없애주기

✔️ 결과물 : 터미널에서 콘솔 확인 가능


출처 :
1) https://velopert.com/436
2) https://www.zerocho.com/category/MongoDB/post/5963b908cebb5e001834680e

profile
Frontend Developer

0개의 댓글