NoSQL

What is NoSQL?

NoSQL은 쉽게 말하자면 비 관계형 데이터베이스이다. SQL문을 사용하지 않아 구조에 제약이 없고 데이터들이 서로 관계가 없다. 대신 다른 구조의 데이터 모델을 사용하는데, Key-Value, Document, Graph 등이 있다.

Why use?

NoSQL은 초고용량 데이터 처리 등 성능에 특화된 목적을 위해, 비관계형 데이터 저장소에, 비구조적인 데이터를 저장하기 위한 분산 저장 시스템이다. 한마디로 SQL처럼 구조를 딱 정해놓고 관계되어있는 데이터들이 고용량이면 처리가 느리기 때문에, 비관계적 - 비구조적인 데이터로 처리 성능을 높여 사용하는 것이다

종류

1) Key-Value DB

Key와 Value의 쌍으로 데이터가 저장되는 유형으로 Riak, Vodemort, Tokyo등의 제품이 있다

2) Wide Columnar DB

Big Table DB라고도 하며, Column Family 데이터 모델을 사용하고 있고, HBase, Cassandra, Hypertable이 이에 해당된다

3) Document DB

JSON, XML과 같은 Collection 데이터 모델 구조를 채택하고 있다. Mongo DB, Cough DB가 이 종류에 해당된다.

4) Graph DB

Nodes, Relationship, Key-Value 데이터 모델을 채용하고 있다. Neo4J 등의 제품이 있다.


MongoDB

몽고 DB란?

NoSQL 중 하나로 도큐먼트 저장 형식을 가진 데이터베이스 이다. 각 종 값들을 JSON형태로 저장하고 실제로 많이 쓰이고 있는 NoSQL이다

설치

Mac OSX 기준

먼저 Homebrew를 다운받자. (MAC OS에는 기본적으로 ruby가 설치되어 있다)

$ ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go/install)"

그리고 Homebrew에서 공식 mongoDB에 접근하기 위해서는 아래의 커맨드를 입력해야한다

$ brew tap mongodb/brew

다음 mongoDB를 설치하면 된다

$ brew install mongodb-community@4.2

환경설정

먼저 DB를 저장할 폴더를 만들자
터미널에 아래의 코드를 입력하면 된다

mkdir -p /data/db

다음 이 폴더에 파일의 소유자 권한을 줘야한다

sudo chown $USER /data/db

DB서버 실행

mongoDB서버는 mongod 명령어를 통해 실행시킬 수 있다. 기본 포트는 27017

$ mongod

다른 포트를 이용하고 싶다면 아래와 같이 포트를 옵션으로 입력해주면 된다

$ mongod --port 99999

DB 클라이언트 접속

터미널에 mongo 라고 입력하면 DB 클라이언트에 접속할 수 있다

스크린샷 2019-07-06 오후 10.24.22.png

위 처럼 입력할 수 있게 커서가 변경되면 접속 성공한 것이다

참고로 mongoDB의 설정을 변경하지 않는다면 27017 포트를 사용한다

DB서버 종료

DB서버는 해당 터미널 창을 닫으면 종료가 되지만, 혹시나 따로 종료가 필요하다면 DB 클라이언트에 접속에서 아래처럼 입력하면 종료된다

> use admin;
> db.shutdownServer();