본문 바로가기
Study/mongodb

01. MongoDB(몽고디비) Study - NoSQL 이란? 그리고 MongoDB 소개

by 블리드카가 2017. 10. 9.
728x90






요즘 IT 분야의 화두는 머신러닝, 딥러닝 등의 인공지능 분야이지만, 한 2년 전만 해도 빅데이터가 가장 화두였습니다. 이러한 빅데이터를 처리하는 기술로 NoSQL을 사용하게 됩니다.  그럼 NoSQL 이란 어떤 것일까요?

  1. NoSQL

“Non Relational Operation Database SQL” 의 줄임말로써 “관계형 데이터베이스가 아닌 SQL”  입니다.  

일반적인 관계형 데이터베이스에서는 데이터의 중복을 제거하고 무결성을 보장하기 위해서 정규화를 하게 되는데 이러한 정규화가 과도한 JOIN으로 인해 성능 저하가 있을 수 있습니다. 

하지만 NoSQL은 아래의 그림 처럼 중첩데이터 형태를 띔으로써 불필요한 JOIN 을 최소화시킵니다.



NoSQL의 장점

1) 불필요한 Join의 최소화
2) 유연성있는 서버 구조 제공
3) 비정형 데이터 구조로 설계비용 감소
4) Read/Write가 빠르며 빅데이터 처리가 가능
5) 저렴한 비용으로 분산처리 및 병렬처리 가능

4번 장점의 경우는 반드시는 아닙니다. 일반적인 관계형 데이터베이스가 빠른 경우도 많습니다.
그리고 비정형 데이터로 인해  관계형 데이터베이스보다 1.5배정도 용량을 많이 차지 합니다.

이러한 NoSQL은 크게 4종류의 모델이 있고 대표적인 데이터베이스입니다.

1) KEY-VALUE - Redis , Memcached
2) COLUMN - Hbase, Casandra
3) DOCUMENT - MongoDB, 
4) GRAPH - GraphDB

    2. 관계형 데이터베이스(Relational Database)와 NoSQL 비교

Relational Database
NoSQL
Scale-up - 서버 한대 중심으로 확장 Scale-out - 여러대의 서버를 중심으로 확장
무결성 유연성
데이터 중복 제거 데이터 중복 허용
트랜잭션 빠른 쓰기, 읽기




    3. MongoDB

Json 타입의 Document 방식의 NoSQL 입니다. 특징은 다음과 같습니다.

  • JSON 형식의 데이터구조
  • CRUD위주의 다중 트랜잭션 처리 가능
  • Sharding(분산) / Replica(복제) 기능 제공
  • Memory Mapping기술을 기반으로 빅데이터 처리에 성능이 탁월

관계형데이터베이스가 가지는  여러 특징을 구현 할수 있는 것이 장점이지만, 그런방식을 구현할 시에는 성능적인 면도 고려해야합니다.

    4. 관계형 데이터베이스(Relational Database)와 MongoDB 논리적 구조 비교

Relational Database
MongoDB
Table
Collection
Row
Document
Column
Field
Primary Key
Object_ID Field
Relationship
Embbeded & Link


MongoDB를 공부해본 결과, 관계형 데이터베이스와의 차이점도 존재하지만, 데이터베이스의 본질적인 부분은 유사한 점도 많습니다.

유사점을 살짝 언급 해보면 관계형 데이터베이스에 있는 Join, 파티션, 복제, 힌트,  백업, 복구 등등의 기능을 유사하게 또는 같은 방식으로 그리고 다른 명칭으로 구현하고 있습니다.

다음 글에서 부터 본격적으로 MongoDB를 하나씩 정리를 해보겠습니다. 다음 글은 MongoDB 설치 및 시작




728x90