티스토리 뷰
MongoDB
▶ MongoDB 란?
대표적인 NoSQL, Document DB.
Mongo는 Humongous 에서 따온 말로, 엄청나게 큰 DB 라는 의미 → 대용량 데이터를 처리하기 좋게 만들어짐
▶ NoSQL vs. RDB
RDB (Relational Database)
- 관계형 데이터베이스.
- 자료들의 관계를 주요하게 다룸
- SQL 질의어를 사용하기 위해 데이터를 구조화해야 함
// MySQL
CREATE DATABASE simple_board
CREATE TABLE posts (
id NOT NULL AUTO INCREAMENT
title VARCHAR(30),
content TEXT,
PRIMARY KEY(id)
);
INSERT INTO posts (title, content)
VALUES
('first title', 'first content'),
('second title', 'second content'),
NoSQL (Non SQL 또는 Not Only SQL)
- 구조화된 질의어를 사용하지 않는 데이터베이스
- 자료 간의 관계에 초점을 두지 않음
- 데이터를 구조화하지 않고, 유연하게 저장
// MongoDB
use simple_board
db.posts.insert([
{
title: 'first title',
content: 'first content'
},
{
title: 'second title',
content: 'second content'
}
]);
NoSQL을 사용하는 이유
- SQL을 사용하기 위해서는 데이터 구조화 필수 (DDL) → 스키마에 정의된 데이터가 아니면 저장할 수 없는 제약이 있음
- NoSQL을 사용하면 사전작업 없이 데이터베이스 사용 가능 → 데이터베이스 작업에 크게 관여하지 않고 프로젝트 빠르게 가능
NoSQL은 다양한 종류가 있지만, 대표적으로 자료를 Document(문서)로 저장하는 Document DB가 일반적
→ 대표적으로 MongoDB
이 외 key-value, Graph, large collection 등의 NoSQL DB가 존재
▶ MongoDB의 기본 개념
Database > Collection > Document
1) Database
: 하나 이상의 collection을 가질 수 있는 저장소
→ SQL에서의 database와 유사
2) Collection
: 하나 이상의 Document가 저장되는 공간
→ SQL 에서의 table과 유사하지만 collection이 document의 구조를 정의하지 않음
3) Document
: MongoDB에 저장되는 자료
→ SQL에서 row와 유사하지만 구조제약 없이 유연하게 데이터 저장 가능
JSON과 유사한 BSON을 사용하여 다양한 자료형을 지원
* ObjectID
: 각 document의 유일한 키 값
→ SQL 의 primary key와 유사
하나씩 증가하는 값이 아닌 document를 생성할 때 자동으로 생성되는 값 (timestamp + random value + auto increament)
▶ MongoDB 설치하기
MongoDB를 직접 설치하거나 Cloud 서비스를 사용
→ 직접 설치하면 귀찮고 어렵지만 원하는 만큼 얼마든지 데이터 사용 가능
→ Cloud를 사용하면 쉽고 빠르게 시작이 가능하지만, 사용량에 따라 요금 부과
설치방법 1) 직접 MongoDB 설치하기
- 모든 데이터베이스 관련 설정 필요
- Sharding이나 Replication 등의 작업이 필요할 때 운영지식과 노하우가 요구됨
- 무료로 사용할 수 있는 Community Version 제공
- 유료버전은 라이센스비용 지불, MongoDB 측의 지원을 직접적으로 받을 수 있음
≫ MongoDB 커뮤니티 버전 다운로드
1) Version, Platform, Package 선택하여 설치파일 다운로드
(Package에서 msi는 윈도우 인스톨러를 사용해서 설치하는 방식 → 가장 편리한 방식이라 msi로 선택)
2) 설치파일 실행
- 설치타입 (Complete : 학습용에 추천 / Custom : 다양한 설정 가능)
- Install MongoD as a Service 체크 유지
(mongoDB의 데몬을 서비스로서 설치하겠다 → MongoDB를 어떤 창을 띄워서 백그라운드에서 돌아가고 있는 서비스로 사용하겠다는 의미 → 윈도우환경에서 제공하는 서비스관리 기능을 사용해서 mongoDB 서버 관리 가능)
- Run service as Network Service user 체크유지
(Run service as local or domain user : 특정도메인이나 로컬에서 접속할 수 있도록 설정)
- MongoDB Compass는 선택설치
3) MongoDB 서비스 확인
→ 윈도우 시작메뉴에서 '서비스' 검색
→ 서비스 앱 실행
→ MongoDB Server 추가되어있는지 확인
→ 시작유형이 자동이면 컴퓨터 실행 시 MongoDB도 자동실행됨
→ 우클릭으로 속성 들어가서 '일반-시작유형'을 수동으로 변경
→ 서비스에서 우클릭하여 MongoDB Server 시작/중지 가능
설치방법 2) MongoDB Cloud 이용하기
- 모든 데이터베이스 관련 기능을 웹에서 관리 가능
- MongoDB에서 제공되는 기능들을 간단하게 웹에서 클릭만으로 모든 설정 진행 가능
- 특별한 노하우 없이 데이터베이스 운용 가능
- 사용량에 따라 비용이 발생하지만, 512MB까지는 평생 무료로 사용 가능
≫ MongoDB 클라우드 URL
1) 회원가입 후 로그인
2) Create Oraganization → Oraganization 이름 작성 → MongoDB Atlas 선택 → next → 멤버/권한은 필요하면 하기
3) New Project 로 프로젝트 생성 → Project 이름 작성 → 멤버/권한은 필요하면 하기
4) 'Oraganization > Project' 하위에 Database 생성 가능 → Build a Database 버튼 클릭 → 무료 플랜(Shared) 선택
5) Cloud Rrovider & Region 선택하기 → 서울 지역 무료로 제공하고 있는 제공자 선택 후 그 하위에 있는 서울 지역 선택
6) Cloud Tier는 M0 Sandbox 선택 (512MB 무료로 제공)
7) Cluster Name 작성
8) Cluster 생성완료
9) Username and Password 설정 - 기억해두기
10) 접속 환경 설정 → My Local Environment 선택 → Add My Current IP Address 클릭해서 내 IP에서 접근가능하도록 추가
11) Finish and Close
* MongoDB Compass 사용하기
: MongoDB에 접속해 Database, Collection, Document 등을 시각화하여 관리할 수 있게 도와주는 도구
→ MySQL을 사용할 때 MySQL Workbench와 유사
MongoDB 로컬 설치 시 'MongoDB Compass 설치' 체크박스 선택해서 다운로드하였으면 설치되어있음
→ 설치 안했으면 MongoDB 홈페이지에서 다운로드 가능
≫ MongoDB Compass 다운로드
- MongoDB Compass로 로컬 MongoDB 에 접속하기
1) Version, Platform, Package 선택하여 설치파일 다운로드
2) 로컬설치한 MongoDB는 기본적으로 접속주소는 'localhost:27017' 을 사용하고 username과 password 사용하지 않고도 접속할 수 있게끔 설정되어있음
3) New Connection 시 아무것도 입력하지않고 Connect → 자동으로 MongoDB 로컬에 접속됨
4) Database 탭에서 Create Database → database 이름 작성, collection 하나 작성 → database 생성완료
5) 만들어진 database 클릭 → 만들어진 collection 클릭 → Add data 클릭하여 데이터 추가
6) Add data - Insert Document 클릭하면 json 편집기가 뜸 → json 형식으로 데이터 추가 가능
- MongoDB Compass로 MongoDB Cloud 에 접속하기
1) MongoDB Cloud에서 아까 생성한 cluster에서 Connect 클릭
2) Connect using MongoDB Compass 클릭 → connection string 복사
(connection string 안에 <password> 부분은 username 설정 시 함께 설정했던 password 넣어주면 됨
3) New Connection 에 connection string 입력 후 Connect
4) 이후에는 Database 생성 등등..
* 클라우드로 MongoDB 접속 시 Hosts도 3개이고 Replica set도 3개인거 확인 할 수 있음
→ 클라우드에서 MongoDB Server 생성하면 1개의 서버로 운영하는게 아니라 3개의 복제된 서버를 가지기때문에 좀 더 안정적으로 운용 가능한 장점이 있음
※ Mongoose에 대해서는 너무 길어져서 다음 포스팅으로...
이 글은 엘리스 AI트랙 5기 강의를 들으며 정리한 내용입니다.
'개발공부 > 🟩 Node.js' 카테고리의 다른 글
[NodeJS] Express와 MongoDB로 웹서비스 만들기 - 1 (1) (0) | 2022.08.02 |
---|---|
[NodeJS] Mongoose ODM (0) | 2022.07.31 |
[NodeJS] Express.js로 REST API 구현하기 (0) | 2022.07.30 |
[NodeJS] Express.js의 Middleware (0) | 2022.07.28 |
[NodeJS] 웹과 Express.js (0) | 2022.07.27 |
프론트엔드 개발자 삐롱히의 개발 & 공부 기록 블로그