티스토리 뷰

개발공부/🟩 Node.js

[NodeJS] Node.js와 MongoDB

2022. 7. 31. 15:01

 

 

Node.js

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

 

 

 

 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 커뮤니티 버전 다운로드

 

MongoDB Community Download

Download the Community version of MongoDB's non-relational database server from MongoDB's download center.

www.mongodb.com

 

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

 

MongoDB Cloud

MongoDB Cloud is a unified data platform for modern applications and includes a global cloud database, search, data lake, mobile, and application services.

www.mongodb.com

 

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

Explore and interact with your data using Compass, the GUI for MongoDB. Query, modify, delete, and more — all from one interface.

www.mongodb.com

 

-  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에 대해서는 너무 길어져서 다음 포스팅으로... 

 

[Node.js] Mongoose ODM

Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org  Mongoose ODM ▶ Mongoose ODM 이란? MongDB의 Collection에 집중하여 관리하도록 도와주는 패키지 →  Mon..

limelbe.tistory.com

 

 


이 글은 엘리스 AI트랙 5기 강의를 들으며 정리한 내용입니다.

반응형
프로필사진
개발자 삐롱히

프론트엔드 개발자 삐롱히의 개발 & 공부 기록 블로그