Node.js

node.js>MongoDB 호스팅받고 셋팅하기

연습노트 2024. 7. 25. 04:06

1. 구글에 Mongodb atlas 라고 검색해서 들어가거나 mongodb.com 홈페이지를 방문합니다.

 

 

2. 가입합니다. 아마 메일인증 필요

 

 

▼ 3. 가입시 뭐 채우라고 하면 잘 채워봅니다

 

 

 

 

 

 

▼ 4. 무료 티어를 선택해서

 서버위치도 선택합니다. 한국 유저들에게 빠른 서비스 제공하려면 서울을 선택합시다. 

 

 

 

 

 

 

 

▼ 5. 좌측 Database Access 메뉴에서 DB 접속용 아이디/비번을 생성합니다.

데이터베이스 접속할 수 있는 아이디/비번을 새로 만들어주는겁니다.

왜냐면 하나의 데이터베이스를 여러사람이 사용할 수도 있으니까요.  

아주 안전해보이는 admin/qwer1234 이런 아이디 비번은 어떨까요 아무튼 만들고 잘 기억해두십시오. 

 

 

 

▲ 주의점은 역할을 atlas admin으로 설정합시다. 

그래야 그 아이디로 nodejs에서 DB 접속시 온갖 것들을 다 사용가능 

 

 

 

 

▼6. 좌측 Network Access 메뉴에서 IP를 추가합니다.

데이터베이스 접속할 수 있는 IP를 미리 정의해놓는 일종의 보안장치입니다.

스타벅스에서 코딩하실게 분명하니 Allow access from anywhere을 누르시거나 0.0.0.0/0 을 추가합니다. 

 

 

 

 

 

[collapse]

 

 

 

 

게시판을 만든다고 했는데 게시판을 만들려면 유저들이 작성한 게시물들을 영구적으로 보관할 곳이 하나 필요하지 않겠습니까

뭐 대충하고 싶으면 엑셀이나 메모장열어서 거기다가 유저들의 게시물들을 적어놔도 되는데 

보통은 그런거 말고 실제 서비스들은 데이터베이스에 데이터들을 저장해놓습니다.

데이터베이스가 훨씬 입출력이 빠르고 대용량의 데이터를 보관할 수 있으니까요. 

 

 

 

 

 

 

데이터베이스 종류 

 

그래서 여러가지 데이터베이스들 중에 하나 고르면 되는데

데이터베이스는 크게 두가지 종류가 있는데

관계형 & 비관계형 데이터베이스가 있습니다 

 

 

 

관계형 데이터베이스들은 그냥 엑셀이랑 똑같습니다. 

표가 하나 있고 거기다가 데이터를 한줄한줄 차례로 보관하면 됩니다.

관계형 데이터베이스를 쓰고 싶으면 DBMS를 설치하면 되는데 

MySQL, PostgreSQL, Oracle, SQLite, MSSQL

이런거 중에 하나 골라서 사용하면 됩니다.

한국에선 MySQL, PostgreSQL, Oracle 점유율이 높습니다.

 

근데 관계형 데이터베이스를 쓰면 

데이터를 입출력할 때 SQL이라는 언어를 사용해서 입출력해야하는게 좀 귀찮은 점이고 

데이터를 저장할 때 그냥저장하는게 아니라

정규화라는걸 해서 저장합니다. 

 

 

 

 

▲ 손흥민이라는 데이터는 부분은 현재 테이블과 관련없으니

다른 테이블로 쪼개고 있습니다. 

현재 테이블의 주제와 맞지 않는 것들을 다른 테이블로 분리하는 작업을 있어보이는 말로 정규화라고 합니다.

그리고 그걸 해놔야 나중에 데이터가 정확도가 높아집니다. 

 

그래서 데이터의 정확도가 중요한 서비스를 만들고 싶으면 

일반적으로 관계형 데이터베이스를 많이 선택합니다. 

 

 

 

 

 

비관계형 데이터베이스는 

좀 더 자유로운 형식으로 데이터를 저장할 수 있게 만든 데이터베이스인데

예를 들어 Redis는 { 데이터이름 : 데이터값 } 형식으로 데이터를 저장할 수 있고

MongoDB도 그거랑 유사하게 데이터를 저장할 수 있습니다. 

 

 

(MongoDB에 저장된 데이터)

 

 

 

그리고 테이블 쪼개기인 정규화를 안하고 저장하는게 권장사항이라서

데이터를 입출력할 때 생각할게 없어서 굉장히 빨리 할 수 있습니다.

근데 그 대신 데이터의 정확도가 떨어지고

정규화를 안해놨다면 나중에 이름같은거 하나를 수정삭제하고 싶으면 수많은 부분을 수정해야하기 때문에

그런 것들이 귀찮을 수 있습니다. 

 

그래서 데이터 입출력이 빨라야하는데 정확도가 좋지는 않아도 되는

게시판이나 SNS를 만들 때는 이런거 쓰는게 나을 수 있습니다.

 

 

근데 항상 정확도가 중요하면 관계형,

입출력빠른게 중요하면 비관계형

이렇게 나눌 수 없는게 

여러분이 데이터베이스를 어떻게 쓰냐에 따라서 다를 수도 있어서

그냥 경향만 그렇구나라고 아시면 될거같습니다.  

MongoDB도 정규화를 하면서 정확도높게 쓸 수 있습니다.

근데 살짝 비효율적일 뿐임 

 

 

그래서 우리는 이 중에 MongoDB를 사용해보도록 할건데  

왜냐면 SQL같은 언어를 배울 필요도 없고 정규화, 테이블스키마생성 그런걸 안해도 되어서 매우 쓰기 쉽습니다. 

 

 

그리고 MongoDB는 document 데이터베이스라고 부르기도 하는데

왜냐면 데이터를 어떤 식으로 저장하냐면

우선 collection을 만들고 그안에 document를 만들어서 거기 데이터를 기록해놓습니다.

 

 

 

 

▲ 예를 들면 유저들의 이름과 나이를 저장하고 싶으면 이렇게 저장합니다.

비유를 하자면 collection은 폴더, document는 파일하나라고 생각하면 되겠습니다. 

관계형 데이터베이스로 비유하면 collection은 테이블, document는 하나의 행임 

 

근데 document에다가 데이터를 기록해놓는데

실은 자바스크립트 object자료랑 똑같은 모습으로 기록합니다. 

그래서 자바스크립트 코드짜던거 그대로 데이터베이스에 밀어넣을 수 있어서 매우 저장과 출력이 편리합니다. 

 

 

 

 

 

MongoDB 호스팅받기

 

MongoDB를 사용해볼건데 사용하고 싶으면 방법이 2개 정도 있습니다.

여러분 컴퓨터에 직접 mongodb를 설치해서 쓰거나

아니면 클라우드에서 호스팅받아서 쓰거나 

둘 중에 하나 선택하면 됩니다.

 

근데 보통 초보자들은 호스팅받아서 쓰는게 좋기 때문에 호스팅을 받도록 합시다.

- 가입만하면 무료용량도 제공해주고 

- 돈내서 업그레이드하면 백업도 자동으로 해주고

- replica set이라고 해서 자동으로 3개의 데이터베이스에 분산저장해줘서 하나가 다운되면 자동으로 나머지 2개가 돌아가고 

- full text search index도 만들 수 있고 (호스팅받아야만 사용가능)

안 쓸 이유가 없습니다. 

 

mongodb.com 사이트 들어가서 가입하면 무료 호스팅같은걸 받을 수 있으니까 가입하고 호스팅까지 받아옵시다. 

호스팅 가이드는 상단에 있음 

 

 

 

 

 

 

Database / collection 만들기

 

셋팅은 완료해놨겠죠

요약하자면 무료티어 선택하면되고

그 다음에 DB접속용 아이디/비번 만들고 

DB접속가능한 아이피주소도 설정해놓으면 끝입니다. 

셋팅이 완료되면 collection 아니면 create 버튼이 어딘가에 있을텐데 눌러서 데이터베이스를 하나 만들어봅시다.

 

 

 

database는 하나의 프로젝트같은 것이고 이름은 맘대로 작명하면 되는데

저는 게시판을 만들어볼 것이니 forum이라고 할겁니다.  

그 안에 collection도 하나 만들라고 하는데 저는 post라고 이름지어보겠습니다. 

그럼 이제 요런 post라는 컬렉션 안에 맘대로 document들을 발행해서 데이터를 저장할 수 있습니다.

다음 시간엔 데이터 몇개 저장해놓고 그걸 원할 때 출력해서 보여주는 법을 알아봅시다.