Post

MongoDB 개요

MongoDB

개요

하드웨어에 대한 발달과 컴퓨터 공학에 대한 발달로 빅데이터에 대한 수요가 점점 늘어나면서 기존의 SQL DB로는 빅데이터 처리에 대한 수요를 제대로 처리할 수 없게 되었다. 그렇기 때문에 수 많은 NOSQL 솔루션들이 나왔는데 MongoDB 역시 그 솔루션들중 하나이다.

언제 쓰는가?

빅데이터를 사용하거나 혹은 SQL을 사용하기 어려운 형태의 데이터를 다루는 솔루션이 필요할 때 주로 사용한다. 초기에 MongoDB가 나왔을 때는 쓰지 말라는 여론도 있었지만 지금은 꽤나 인기있는 솔루션중 하나로 NOSQL 항목에서 4위를 차지하기도 했다.

무엇이 강점인가?

  • 스키마에서 자유롭고, 언제든 구조를 바꿀수있다.

    사실 이건 강점이자 단점인데, 개발간 구조가 바뀐다는건 이후에 유지보수를 해야할때 이전 부분까지 다 고려해서 만들어야하는 것으로 이러한 부분이 좀 힘들다. 그래서 NOSQL이지만 SQL같이 모델링해서 쓸수있도록해주는 드라이버를 지원한다.

  • 수평 확장성이 뛰어나다.

    미리 크기를 정의해두고 들어가야하는 SQL DB의 경우에는 수평확장이 매우 어렵다. 하지만 MongoDB의 경우 수평확장에 용이한 SHARD 기능을 지원한다. SQL DB도 DB 앞단에 해싱을 통한 샤딩을 할 수 있으나 DB에서 자체적으로 지원하는게 아니기 때문에 어렵고, 서비스를 유지하면서 샤딩을 할 순 없다. MongoDB에서는 샤딩 세팅을 하면 서비스는 서비스대로 돌아가되 데이터는 옮겨지며 샤딩이 된다.

지원하는 형태가 어떻게 되는가?

서비스 제공 구조

  • SaaS

    MongoDB Atlas라는 이름으로 지원한다. AWS 서버 기반이며 사용한 만큼 과금된다. WEB UI를 통한 세팅을 지원하기 때문에 아무래도 관련 지식이 적어도 사용하기에 많이 용이하다. 혹은 NAVER CLOUD에서 Cloud for MongoDB라는 SaaS 형태의 서비스도 지원한다. 아무래도 Atlas보다는 사용하기 불편하나 NCP에서 서비스간 결합에는 용이하다.

  • 설치형 서비스

    Community

    기본적으로 무료로 제공하는 버전이다. 암호화 및 여타 다른 기능을 쓰지 않은 것이라면 해당 버전을 사용해도 무방하면 암호화의 경우 DB insert나 find 이전에 전처리과정만 거치면 Enterprise를 쓰지 않고도 가능하긴 하다.

    Enterprise

    돈을 주고 써야하는 유료라이선스로 Community 버전과 달리 보안기능 및 여타 몇가지 기능이 추가 및 강화되었다.

지원 드라이브

  • JAVA, .net, C, C++, Javascript, Python, Swift, Haskell, Go, Ruby, Nodejs, Scala, PHP
  • 특히 Nodejs에서는 MongoDB 공식 Driver도 있지만 Mongoose라고 별도의 드라이버도 지원한다.
This post is licensed under CC BY 4.0 by the author.