MongoDB에 대하여

2019-05-13

Mongo DB

Mongo DB란 ?

몽고DB는 JSON 처럼 데이터를 유연하게 저장을 하는데,

이는 다양한 문서와 데이터 구조들이 끊임없이 변경된다는 것을 말합니다.

이는 관계형 데이터베이스인 RDBMS 보다 데이터 저장을 더 유연하게 할 수 있다는 것을 의미 합니다.

몽고DB는 NoSQL 이고 Mysql(Maria DB)는 SQL입니다.

그럼 NoSQLl과 SQL의 차이는 뭐가 있을까요?

SQL vs NoSQL

SQL의 경우에는 시스템이 커져가면서 Scale-Up의 형태로 DB를 증설하게 됩니다.

관계를 갖는 테이블들이 수평적으로 더 커집니다.

이렇게 사용하게 되면 고성능의 DB시스템이 필요하게 됩니다. (지속적인 관계를 맺기때문에 )

반면에 NoSQL은 경우 Scale-Out 형태로 DB를 증설 할 수 있는데,

여러 DB를 나눠서 시스템을 증설할 수 있습니다. (관계형 데이터베이스가 아니기 때문에)

NoSQL은 스타트업 같이 아직 DB의 구조가 나중에 바뀔 가능성이 있는 경우에 사용하면 적합합니다.

맨 위에서 JSON 형태로 데이터를 유연하게 저장한다는 얘기도 이와 같습니다.

왜냐하면 관계를 맺지 않고 데이터베이스 스키마에 대해서도 관대합니다.

반면에 SQL은 데이터베이스 스키마의 구조가 완전히 자리 잡은 경우에 사용하면 좋습니다.

NoSQL을 사용하는 이유

SQL(RDBMS)는 다양한 볼륨의 데이터를 가져올때는 속도가 느려지기 때문입니다.

이런 문제를 해결하기 위해 위에서 말했듯이 Scale-Up의 형태로 업그레이드를 하지만, 이 과정은 비용이 많이 들게 됩니다.

대안적인 방법으로는 여러 개의 호스트에서 데이터베이스를 불러오는 것입니다.

이런 방법을 Scale-Out이라고 표현합니다.

또한 NoSQL는 관계형데이터베이스가 아니기 때문에 SQL보다 scale-out 하기가 쉽습니다.

장점으로는 관계적인 모델을 갖지 않는다는 점, 고정적인 column 방식의 테이블을 안쓰고,

데이터 정규화나 오브젝트-관계가 필요 없습니다. 복잡한 조인문도 없다는것도 장점이 되겠습니다.

그리고 스키마에 대해 자유로운 점도 장점다.

101818_0537_NoSQLTutori3

다음 시간에는 MongoDB 실습을 해보겠습니다.