part7
제로초의 Node.js 교과서 섹션 7 요약
8.1 NoSQL vs SQL
이번 장에서는 조금 다른 유형의 SQL에 대해 알아보자. SQL의 반대 진영에 있는 데이터베이스 유형으로서, NoSQL(Not only SQL)이 있다. MongoDB가 이 진영의 대표주자이고, 특징 중 하나는 자바스크립트 문법을 사용한다는 것이다. 자바스크립트는 어렵지만 진짜 잘 알아두면 모든 곳에서 전부 쓰이는 것 같다. (JavaScript is Everywhere?)
앞서 알아본 SQL과의 대표적인 특징을 비교해보자. 우선 SQL은 다음과 같은 특징이 있었다.
- 규칙에 맞는 데이터 입력
- 테이블 간 JOIN 지원
- 안정성, 일관성
- 테이블, 로우, 컬럼 등의 용어 사용
NoSQL은 어떨까?
- 자유로운 데이터 입력
- 컬렉션 간 JOIN 미지원
- 확장성, 가용성
- 컬렉션, 다큐먼트, 필드 등의 용어 사용
충격적이게도 NoSQL은 고정된 '테이블'이 없다. 그래서 문법만 맞는다면 전혀 새로운 타입의 데이터가 추가돼도 저장한다. 테이블이 일종의 계란판이라면, 컬렉션은 꾸러미라고 생각하면 될 것 같다. 테이블 간 관계를 설정할 수 없어서 동시에 여러 쿼리를 실행했을 때 예상치 못한 결과를 초래할 수도 있지만, 그러한 단점에도 확장성과 가용성 때문에 NoSQL은 사용할 가치가 충분하다고 할 수 있다. 데이터의 일관성을 보장하지 않는 대신 데이터 삽입 속도가 비교적 빠르고, 여러 서버에 데이터를 쉽게 분산할 수 있다. 그래서 SQL과 NoSQL을 겸해서 사용하는 기업들도 많다고 한다.
8.2 몽고디비 설치하기
맥에서 몽고디비의 설치 역시 Homebrew를 통해 쉽게 수행할 수 있다.
brew tap mongodb/brew
brew install mongodb-community
brew install mongosh
맥의 경우 /usr/local/var/mongodb
에 데이터가 저장된다고 한다.
설치가 끝나면 실행해보자.
brew services start mongodb-community
mongosh
그러면 이제 mysql 프롬프트와 비슷하게 test>
라는 프롬프트를 볼 수 있다.
관리자 계정을 추가해보자. 이름과 비밀번호는 자유롭게 설정하면 된다.
db.createUser({ user: "이름", pwd: "비밀번호", roles: ["root"] });
그러면 { ok: 1 }
이라는 응답이 날아온다.
이제 Ctrl+C
를 눌러서 프롬프트를 종료하고, 몽고디비를 종료해주자.
brew services stop mongodb-community
그리고 Silicon Mac 기준 아래 경로의 파일을 열어주자.
vim /opt/homebrew/etc/mongod.conf