카테고리 없음

입문 2주차 1 데이터베이스와 MongoDB

GREEN나무 2024. 11. 18. 14:10
728x90


2.1 데이터베이스와 MongoDB

1. 데이터베이스와 MongoDB의 개념
2. MongoDB를 MongoDB Atlas에서 대여합니다.


01. 데이터베이스와 MongoDB

1) 이전에는 어떤 문제가 있었나요?

이전 주차에 구현한 spa-shop의 상품 등록 API는 서버를 종료하거나 재시작할 경우, 등록된 상품 데이터가 모두 사라지는 문제가 있었습니다.
→  이유는, 저희가 데이터를 “인 메모리(In-Memory)”방식으로 저장했기 때문입니다. 이 방식은 데이터를 RAM과 같은 임시 저장소에 보관하여 어플리케이션이 종료될 경우 이 임시 저장소의 데이터 또한 함께 소멸합니다.


이러한 문제를 해결하기 위해 “데이터베이스(Database)”라는 기술이 등장하게 되었습니다. 데이터베이스는 저희가 서비스하는 어플리케이션이 종료된 후에도 데이터가 보존되는 영속성(Persistence)이라는 특징을 가지게 됩니다.

요약하자면, 영속성(Persistence)이 없는 데이터는 상품 등록 API와 같이 인 메모리(In-Memory)에만 존재하며, 프로그램 종료되면 데이터가 사라지게 됩니다.​


2) 데이터베이스 란?

데이터베이스(Database) : ‘데이터의 집합’. 실제 데이터가 저장되는 저장소의 역할을 수행합니다.
DBMS(Database Management System) : 데이터베이스(Database)를 실제로 운영하고, 관리하는 소프트웨어.


“데이터베이스에 저장한다” 라는 말은 DBMS가 설치된 서버에 데이터를 저장한다는 의미입니다.
DBMS가 설치된 서버 컴퓨터를 데이터베이스 서버(DB 서버)라고 부를 수 있습니다.
즉, DB 서버의 모든 데이터는 DBMS가 관리하게 됩니다.


3) 데이터베이스의 종류

관계형 데이터베이스 - Relational Database (RDB):

관계형 데이터베이스는 데이터의 형식이 정해져있고, 데이터 간의 관계를 맺어 모순이 없는 데이터를 유지할 수 있도록 도와주는 데이터베이스를 관계형 데이터베이스라고 부릅니다.
이런 특성 때문에 은행과 같이 정확하고 일관된 데이터가 중요한 경우에 주로 사용됩니다.
(순이 없는 데이터: 무결성과 정합성이 높은 데이터)


비관계형 데이터베이스 - Non-relational Database (NoSQL):

데이터의 형식이 고정되어 있지 않고, 유연하게 확장할 수 있는 데이터베이스를 비관계형 데이터베이스라고 부릅니다. 
이런 유연성 덕분에 SNS 서비스빅데이터와 같이 다양한 형식의 데이터를 빠르게 저장하고 검색해야 하는 경우에 주로 사용됩니다.
비관계형 데이터베이스는 유연하게 저장되는 만큼 저장되는 데이터를 제대로 관리하지 않으면 데이터베이스에 저장된 데이터를 신뢰할 수 없게 되기도 합니다.


4) MongoDB 란?

국내, 외 수많은 개발자들에게서 사용되고 있는 가장 인기있는 비관계형 데이터베이스 (NoSQL) 중 하나입니다.
모든 데이터가 JSON 형태로 저장됩니다.
복잡한 데이터 구조를 쉽게 저장할 수 있는 장점이 있습니다.
   → 대용량 데이터를 손쉽게 처리할 수 있습니다.
데이터베이스 서버의 확장을 손쉽게 줄이고 늘일 수 있습니다.
   → 서버의 부하가 늘어나더라도, 빠르게 대응할 수 있습니다.

 

 


02. MongoDB 대여 하기


1) MongoDB Atlas 란?

MongoDB Atlas : MongoDB의 클라우드 버전입니다. 이를 통해 어디에서나 쉽게 데이터베이스에 접근할 수 있게됩니다.
MongoDB Atlas를 사용하면 로컬 환경에서 MongoDB를 설치하고 유지보수하는 번거로움을 줄이면서도 안전하고 확장 가능한 데이터베이스 환경을 손쉽게 구축할 수 있습니다.


2) MongoDB Atlas 대여 하기

MongoDB 공식 사이트 : https://www.mongodb.com/
MongoDB 공식 사이트에서 회원가입을 진행합니다.

   우측상단 '등록'을 클릭해 회원가입/로그인하세요 

 

Create a cluster 에서 'Build a Cluster'을 클릭하세



개인 정보 보호 정책을 동의하고 ‘submit’ 버튼을 클릭합니다.
사용 목적의 설문 조사를 진행한 후 ‘Finish’ 버튼을 클릭합니다.

 

기관명을 적으시고 atlas로 선택해 다음으로 넘어가세요

 

 

새 프로젝트를 만드세요

 



 MongoDB를 설정한 후 ‘Create’ 버튼을 클릭합니다.
→ Provider: AWS, Region: ap-northeast-2, Name: 자율


‘Username and Password’를 선택하고 Username과 Password를 입력한 후 ‘Create User’버튼을 클릭해주세요. 이 부분은 나중에 데이터베이스 로그인을 위해 사용됩니다.
→ 저는'Introduction_nodejs'로 설정했습니다.

 

2. Install your driver
Run the following on the command line

npm install mongodb


3. Add your connection string into your application code
Use this connection string in your application

더보기

mongodb+srv://구글ID:구글PW@introduction-mongo.cewv5.mongodb.net/?retryWrites=true&w=majority&appName=Introduction-mongo

const { MongoClient, ServerApiVersion } = require('mongodb');
const uri = "mongodb+srv://구글ID:구글PW@introduction-mongo.cewv5.mongodb.net/?retryWrites=true&w=majority&appName=Introduction-mongo";

// Create a MongoClient with a MongoClientOptions object to set the Stable API version
const client = new MongoClient(uri, {
  serverApi: {
    version: ServerApiVersion.v1,
    strict: true,
    deprecationErrors: true,
  }
});

async function run() {
  try {
    // Connect the client to the server	(optional starting in v4.7)
    await client.connect();
    // Send a ping to confirm a successful connection
    await client.db("admin").command({ ping: 1 });
    console.log("Pinged your deployment. You successfully connected to MongoDB!");
  } finally {
    // Ensures that the client will close when you finish/error
    await client.close();
  }
}
run().catch(console.dir);

 

Quickstart에서 설정을 마저 해주세요


하단으로 이동한 후 ‘My Local Environment’를 선택하고 IP Address에 0.0.0.0으로 입력한 후 ‘Add Entry’ 버튼을 클릭해주세요.
→ MongoDB를 사용할 수 있는 IP를 제한하는 작업입니다. 0.0.0.0은 모든 IP에서 사용가능하도록 구성하는 것입니다.

‘Create User’와 ‘Add Entry’를 완료한 후 ‘Finish and Close’ 버튼을 클릭해주세요.

‘Go to Databases’ 버튼을 클릭하여 MongoDB 생성을 완료합니다

 


3) MongoDB 주소 정보 조회하기

MongoDB Atlas 대여를 완료했습니다.

이제 Express에서 MongoDB를 사용하기 위한 주소 정보를 가져와야합니다.

 

Overview > Clustors의 Connect > Connect to your application의 Drivers

 

사용 시 유저 이름과 페스워드를 수정해서 사용하세요


‘Add your connection string into your application code’ 하단에 출력된 MongoDB 주소를 복사하여, 다음에 사용할 수 있도록 기록합니다.

mongodb+srv://<db_username>:<db_password>@introduction-mongo.cewv5.mongodb.net/?retryWrites=true&w=majority&appName=Introduction-mongomongodb+srv://<db_username>:<db_password>@introduction-mongo.cewv5.mongodb.net/?retryWrites=true&w=majority&appName=Introduction-mongo


❓MongoDB의 주소 형식이 궁금해요!
대여한 MongoDB의 주소는 아래와 같은 형식일 것입니다.
mongodb+srv://<username>:<password>@express-mongo.uy7ttg7.mongodb.net/?retryWrites=true&w=majority
<username>, <password>: 생성한 사용자 이름과 비밀번호를 의미합니다.
express-mongo.uy7ttg7.mongodb.net: 서버 주소를 뜻합니다.