이제, MySQL과 다른 유형의 데이터베이스인 몽고디비를 사용 해 볼거다! 몽고디비의 가장 큰 특징은 바로 자바스크립트 문법을 사용한다는 점이다. 노드도 자바스크립트를 사용하기때문에, 데이터베이스 마저 몽고디비를 사용한다면 생산성이 더욱 향상 될 것이다!
다만 몽고디비는 흔히 사용하는 RDBMS가 아닌 NoSQL이므로 특징을 잘 파악해야 한다.
MySQL은 SQL을 사용하는 대표적인 데이터베이스 언어이며, SQL을 사용하지 않는 NoSQL이라고 부르는 데이터베이스도 있다. 그 중 몽고디비는 NoSQL의 대표주자이다.
SQL과 NoSQL은 여러가지 차이점이 있는데, 그 중 대표적인 차이점은 다음과 같다.
(* 여기에서 설명하는 NoSQL의 특징은 몽고디비의 특징이다!)
| SQL(MySQL) | NoSQL(몽고디비) |
|---|---|
| 규칙에 맞는 데이터 입력 | 자유로운 데이터 입력 |
| 테이블 간 JOIN 지원 | 컬렉션 간 JOIN 미지원 |
| 트랜잭션 지원 | 트랜잭션 미지원 |
| 안정성, 일관성 | 확장성, 가용성 |
| 용어(테이블,로우,컬럼) | 용어(컬렉션,다큐먼트,필드) |
NoSQL은 테이블이 없다. 테이블에 상응하는 컬렉션이라는 개념이 있지만, 컬럼을 따로 정의하지는 않는다.
(컬렉션에는 어떠한 데이터라도 다 들어갈 수 있다.)
몽고디비는 JOIN 기능이 없다. JOIN을 흉내내는 것은 가능하지만, 하나의 쿼리로 여러 테이블을 합치는 기능이 항상 가능하지는 않다.
트랜잭션을 지원하지 않는다. (트랜잭션이란, 여러 쿼리가 모두 정상적으로 수행되거나 아예 하나도 수행되지 않음을 보장하는 기능) 따라서, 데이터 일관성에 문제가 발생할 수 있다.
(* 현재 버전에서는 트랜잭션을 지원 한다고 하네여)
그럼에도 불구하고 몽고디비를 사용하는것은, 확장성과 가용성 때문이다. 데이터를 빠르게 넣을 수 있고, 여러 서버에 쉽게 분산이 가능하다.
많은 회사는 꼭 한가지 데이터베이스를 사용하는것이 아니라, MySQL과 NoSQL을 동시에 사용한다. 예를 들어 항공사 예약 시스템의 경우 비행기 표 정보가 모두 일관성있게 전달되어야 하므로, 예약 처리에는 MySQL을 사용한다. 하지만 핵심 기능 외에 빅데이터, 메시징, 세션 관리 등에는 확장성과 가용성을 위해 몽고디비를 사용한다.
일단, 설치를 위해 몽고디비 홈페이지에 접속 해 준다.
그 다음, DOWNLOAD 버튼을 눌러 다운을 시작해준다!

실행 파일을 실행 시키고, 동의를 체크 한 다음 넘겨준다.

Complete를 체크 한 후 넘겨준다.
(제공하는 모든 기능 다운로드)

여기도 그냥 넘긴댜

설치 버튼을 눌러준다!

설치완료~~~

설치가 완료된 후 꼭 해야하는 작업이 있다!!
윈도우의 경우 C:\ 에 data 폴더를 만들고, 그 안에 db 폴더를 만들어줘야 한다.(하지 않으면 오류가 난다고 하니 주의!!)
이제 몽고디비가 설치된 경로로 이동해서, mongod.exe 파일을 실행시켜준다.
( 나 같은 경우 C:\Program Files\MongoDB\Server\6.0\bin 이런 경로였다.)
실행 시키면 cmd 창 같은게 잠깐 켜졌다가 사라진다.
그 다음 브라우저 창에 http://localhost:27017/ 경로를 입력 해 주면,

이런 문구가 나오는데, 이 문구가 떠야 몽고디비가 실행되고 있다는 의미라고 하니까 참고하깅
아까 만든 db 폴더로 들어가면 새로운 폴더랑 파일들이 많이 생겼다~

몽고디비는 관리도구로 컴퍼스를 제공한다. 윈도우의 경우 몽고디비와 함께 설치 완료 했으므로, 따로 설치 할 필요 없다.
윈도우 검색창에 MongoDBCompass라고 검색하면 실행된다.
새로운 커넥션을 생성해야 하므로, CONNECT 버튼을 클릭 해 줬다.

localhost에 접속된 화면이다. 기본적으로 admin과 local 데이터베이스가 생성되어있다!!

나는 새로운 데이터베이스를 생성하기 위해, 왼쪽에 있는 Databases를 클릭 해 줬다! 그러면 옆에 CREATE DATABASE 버튼이 생성된다.
해당 버튼을 클릭해주자.

정보를 이렇게 기입하고, Create Database 버튼을 눌러줬다. (users 컬렉션도 생성해줬다.)

이렇게 만들어졌다~~

이제 컬렉션을 생성해야한다. 컬렉션은 MySQL의 테이블에 대응되는 개념이다.
하지만, 컬럼을 정의 할 필요 없이 단순히 이름만 정하면 된다!
아까만든 users 컬렉션 외에 comments 컬렉션도 만들어둘거다.원하는 데이터베이스를 클릭한 뒤, CREATE COLLECTION 버튼을 눌러준다.

정보를 입력 한 뒤 CREATE 버튼을 눌러주면 끝

이렇게 나온당
