01 MongoDB
- MongoDB란?
- 대표적인 NoSQL, Document DB이다.
- Mongo는 Humongouos에서 따온 말로, 엄청나게 큰 DB라는 의미를 가지고 있다.
- 엄청 큰 DB라서 대용량 데이터를 처리하기 좋게 만들어졌다.
- NoSQL과 RDB
- RDB, Relational DataBase
- RDB는 관계형 데이터베이스로 자료들의 관계를 주요하게 다루는 데이터베이스이다.
- SQL 질의어(Query) 를 사용하기 위해 데이터를 구조화하고, 정형화해야 한다는 특징이 있다.
- NoSQL, Not Only SQL 또는 Non SQL
- NoSQL은 구조화된 질의어를 사용하지 않는 데이터베이스이다.
- 자료 간의 관계에 초점을 두지 않아 데이터를 구조화하지않고, 유연하게 저장할 수 있다는 특징이 있다.
- NoSQL을 사용하는 이유는?
- SQL을 사용하기 위해서는 DDL 명령어를 사용해 데이터를 구조화하는 것이 필수이고, 스키마에 정의된 데이터가 아니라면 저장할 수 없다는 제약이 따르게 된다.
- NoSQL을 사용하면 사전작업 없이 데이터베이스를 사용할 수 있고 데이터베이스 작업에 크게 관여하지 않고 프로젝트를 빠르게 진행할 수 있다는 장점이 존재한다.
- MySQL(RDB) vs MongoDB(NoSQL) 코드 비교 해보기
- MySQL은 구조화된 테이블을 만들어 데이터 정의 등 다양한 사전 작업을 수행해야한다.
- NoSQL은 프로젝트를 빠르게 진행하기 위해 코드가 비교적 단순한 형태이다.
- NoSQL은 다양한 종류가 있지만, 대표적으로 자료를 문서로 저장하는 DocumentDB가 있고, 이 외에 key-value, Graph, large collection 등의 NoSQL DB가 있다.
- MongoDB의 기본 개념
- Database : 하나 이상의 Collection을 가질 수 있는 저장소이고, SQL에서의 database와 유사하다.
- Collection : 하나 이상의 Document가 저장되는 공간, SQL 테이블과 유사하나 Collection이 Document의 구조를 정의하지는 않는다.
- Document : MongoDB에 저장되는 자료의 단위, SQL row와 유사하지만 구조제약없이 유연하게 저장이 가능하다. JSON과 유사한, BSON을 사용하여 다양한 자료형을 지원한다.
- MongoDB의 기본 개념 - Document - ObjectID
- MongoDB 사용 방법 - MongoDB Compass 도구
- MongoDB에 접속하여 Database, Collection, Document 등을 시각화하여 관리할 수 있게 도와주는 도구이다.
- MySQL을 사용할 때 MySQL Workbench와 유사한 도구이다.
02 Mongoose ODM
- Mongoose ODM이란? - Object Data Modeling
- MongoDB의 Collection에 집중하여 관리하도록 도와주는 패키지이다.
- Collection을 모델화하여, 관련 기능들을 쉽게 사용할 수 있도록 도움을 준다.
- Mongoose ODM을 사용하는 이유는?
- Node.js에서 MongoDB에 대한 기본적인 드라이버를 제공하는데 이 드라이버는 상호 간의 연결 상태를 관리하기 어렵다는 단점이 있다.
03 Mongoose ODM 사용하기
- Mongoose ODM 사용 순서
- 스키마 정의
- 모델 만들기
- 데이터베이스 연결
- 모델 사용
- 스키마 정의하기
- 모델 만들기
- 데이터베이스 연결
- 모델 사용하기 - 간단한 CRUD
- 작성된 모델을 이용하여 Create, Read, Update, Delete 연산을 수행할 수 있다.
- Query
- MongoDB에도 SQL의 Where와 유사한 조건절을 사용할 수 있다.
- MongoDB의 Query는 BSON(Binary JSON) 형식으로, 기본 문법 그대로 Mongoose에서도 사용이 가능하다.
- 자주 사용되는 Query : Person 객체를 찾는 find 함수 예제
- 비교 표현식 줄임말
- $lt : little ( < )
- $lte : little or equal ( <= )
- $gt : greater ( > )
- $gte : greater or equal ( >= )
- $eq : equal ( = )
- $nq : not equal ( <> )
'2022 AI SW 온라인 교육 > SW 코딩 훈련트랙' 카테고리의 다른 글
[SW 코딩] 웹 개발 포트폴리오 만들기 프로젝트 (0) | 2022.12.13 |
---|---|
[SW 코딩] Express.js와 MongoDB - 04. Mongoose 활용하기 (0) | 2022.12.12 |
[SW 코딩] Express.js와 MongoDB - 02. REST API (2) | 2022.12.07 |
[SW 코딩] Express.js와 MongoDB - 01. Express.js의 미들웨어 (0) | 2022.12.06 |
[SW 코딩] Node.js와 Express.js - 04. 웹과 Express.js (0) | 2022.12.05 |