일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- branch
- localstorage
- 백준 28298번
- 백준 9466번
- map
- ccw 알고리즘
- 게임 서버 아키텍처
- html5
- router
- PROJECT
- insomnia
- vsc 디버깅
- 그리디
- visual studio code interactive 디버깅
- Next
- MongoDB
- Express.js
- Github
- ERD
- 백준 9328번
- pm2
- MySQL
- string
- HTTP
- 그래프 탐색
- JavaScript
- 자바스크립트
- 이분 탐색
- Prisma
- stack을 이용한 dfs
- Today
- Total
dh_0e
[Node.js] 강의 내용 개념 정리(7) (Database, MongoDB, mongoose) 본문
데이터베이스(Database)
- 데이터의 집합, 실제 데이터가 저장되는 저장소
데이터베이스의 종류
관계형 데이터베이스: Realational Database(RDB)
- 데이터의 형식이 정해져있고, 데이터 간의 관계를 맺어 모순이 없는 데이터를 유지할 수 있도록 도와주는 데이터베이스
- 은행과 같이 정확하고 일관된 데이터가 중요한 경우 사용됨
비관계형 데이터베이스: Non-realation Database(NoSQL)
- 데이터의 형식이 고정되있지 않음
- 유연하게 확장할 수 있는 데이터베이스
- SNS 서비스, 빅데이터와 같이 다양한 형식의 데이터를 빠르게 저장하고 검색해야하는 경우 사용됨
- 유연하게 저장되는 만큼 저장되는 데이터를 제대로 관리하지 않으면 저장된 데이터를 신뢰할 수 없음
MongoDB
- 가장 인기있는 비관계형 데이터베이스 중 하나
- 모든 데이터를 JSON 형태로 저장
- 복잡한 데이터 구조를 쉽게 저장할 수 있음 >> 대용량 데이터를 손쉽게 처리 가능
- 데이터베이스 서버의 확장에 용이함 >> 서버의 부하가 늘어나도 빠르게 대응 가능
Studio 3T: MongoDB를 더 쉽게 관리할 수 있는 GUI 툴
- API Client처럼 MongoDB를 위한 MongoDB Client
- GUI를 통해 MongoDb에 저장된 데이터를 보여주는 프로그램
DB Client vs API Client
- 서버에 연결해 데이터를 보내는 것 까지는 같은 개념, 개념과 기능이 다름
DB Client
- 직접 db에 접근해 데이터를 관리할 수 있음
- SQL, NoSQL 등 db 지원
ex) Studio 3T
API Client
- 웹 서비스의 API에 연결하여 서버와 데이터를 송수신
- REST API, Socket과 같은 다양한 프로토콜 지원
ex) insomnia
mongoose
- MongoDB에 데이터를 쉽게 읽고 쓰게 해주는 JS 라이브러리
- ODM(Object Document Mapper)라고도 부름 >> JS의 객체와 MongoDB의 문서 사이에서 매핑을 수행하는 도구
- JS코드의 객체(Object) to MongoDB의 문서(Document)로 변환 or 반대로 변환
mongoose의 문서(Doc)
- MongoDB의 각 데이터 하나하나를 문서(Doc)라고 정의
- 1개 이상의 Key-Value쌍으로 이루어짐
- JSON 형식
mongoose의 컬렉션(Collection)
- 여러 개의 문서를 보유할 수 있는 MongoDB의 구성요소
- JSON 형식의 여러가지 문서를 보유
- 고정된 구성요소 X, 유연하게 구성 가능
- 관계형 db의 Table과 동일한 역할
mongoose의 스키마(Schema)
- 컬렉션에 들어가는 문서의 데이터 종류를 정의함
- 데이터의 구조와 제약 사항을 정의하며, 데이터 모델링시 사용
- 어떤 필드가 어떤 데이터 타입을 가져야 하는지 정의
ex)
const UsersSchema = new mongoose.Schema({
name: String, // 문자열 타입입니다.
age: Number, // 숫자 타입입니다.
favorites: [String], // 문자열 배열 타입입니다.
createdAt: { type: Date, default: Date.now }, // 날짜 타입입니다.
someId: mongoose.Schema.Types.ObjectId // ObjectId 타입입니다.
});
대표적인 스키마의 타입: null, String, Number, Date, Buffer, Boolean, ObjectId, Array
mongoose의 모델(Model)
- db에 데이터를 저장하고 읽어오는 데이터 구조
- 스키마 바탕으로 만들어짐, JS 객체와 MongoDB 간의 상호작용을 위해 사용
- MongoDB의 실제 데이터를 다루는 메서드 보유
.exec()
- promise를 반환하게 만들어줌
- promise가 필요한 구문에 await과 함께 사용하여 동기적 표현이 가능하게 해줌
- 데이터를 생성(create)할 때는 사용 x, 조회(find)할 때만 사용
'내일배움캠프 > Node.js[입문]' 카테고리의 다른 글
[Node.js] 강의 내용 개념 정리(9) (AWS, pm2) (0) | 2024.05.16 |
---|---|
[Node.js] 강의 내용 개념 정리(8) (미들웨어, joi, 에러 처리 미들웨어) (0) | 2024.05.16 |
[Node.js] 강의 내용 개념 정리(6) (Request, Response) (0) | 2024.05.15 |
[Node.js] 강의 내용 개념 정리(5) (API, REST API, Routing, API Client) (0) | 2024.05.15 |
[Node.js] 강의 내용 개념 정리(4) (웹 프레임워크, Express.js, Module) (0) | 2024.05.15 |