🔷 오픈소스 비관계형 데이터베이스 관리 시스템(DBMS)으로, 테이블과 행 대신 유연한 문서를 활용해 다양한 데이터 형식을 처리하고 저장한다.
redis
와 마찬가지로 NoSQL DB이다.이진 JSON이 무엇인지는 아래에서 다룬다.
BSON(Binary JSON)
이라는 독자적인 형식으로 사용하는데, 데이터의 타입까지 포함되어 이진형태로 인코딩되어 저장하기 때문에 JSON과는 다른 차이점이 있다.💡 BSON
컴퓨터의 언어에 가까운 이진법에 기반을 둔 표현법이다. 따라서 JSON 보다 메모리 사용이 효율적이며 빠르고, 가볍고, 유연하다. 뿐만 아니라, BSON의 사용으로 더 많은 데이터 타입을 사용할 수 있다. 하위 비트부터 바이트 단위로 저장하는 방식인리틀 엔디안
방식을 사용한다.
MongoDB는 가장 기본적인 데이터를 Document
라고 부른다. 이는 MySQL같은 RDBMS에서는 row
에 해당된다. 이 Document
의 집합을 Collection
이라고 하는데, RDBMS에서는 테이블(Table)
에 해당된다. Collection
의 집합은 DB
이고, 이는 RDBMS에서도 동일하다.
ACID
가 지켜지지 않는다. 특히 데이터 일관성(Consistency)이 거의 없는 수준이라 은행 데이터 같이 일관성이 매우 중요한 작업에는 MongoDB를 쓰기 매우 힘들다.
💡 ACID
트랜잭션이 제공하는 안전성 보장인원자성(Atomicity)
,일관성(Consistency)
,격리성(Isolation)
,지속성(Durability)
을 의미한다.
💡
로드 밸런싱
애플리케이션 가용성을 최적화하고 긍정적인 최종 사용자 경험을 제공하기 위해 여러 서버에 네트워크 트래픽을 효율적으로 분산하는 프로세스, 처리해야 할 업무나 요청을 중앙처리장치 또는 저장 장치와 같은 컴퓨터 자원에 작업을 분산하는 것.
임시 데이터베이스 쿼리
타사 데이터베이스와 차별화되는 MongoDB의 최대 장점 중 하나는 바로 임시 쿼리를 처리하는데 사전 정의된 스키마가 필요하지 않다는 점이다. MongoDB 데이터베이스는 SQL 데이터베이스와 유사한 쿼리 언어를 사용하므로 초보 개발자나 고급 개발자 모두에게 매우 용이한 접근성을 제공한다. 이러한 접근성 덕분에 일반적인 지원 방법과 간단한 셸 명령만으로 손쉽게 데이터 푸시, 쿼리, 정렬, 업데이트, 내보내기 기능을 수행할 수 있다.
다중 언어 지원
MongoDB는 이미 여러 버전으로 출시된 바 있으며 Python
, PHP
, Ruby
, Node.js
, C++
, Scala
, JavaScript
등 대중적인 프로그래밍 언어에 대한 드라이버 지원을 통해 지속적인 개발을 수행하고 있다.
속도
똑같은 조건으로 설계되었을 시 기존 RDBMS보다 속도가 굉장히 빠르다는 장점이 있다. 위에서 언급했던 ACID를 포기함으로써 얻어낸 장점이다.
🔷 우리 프로젝트인 '아이디어 회의 툴'은 Web Socket과 Web RTC 기술을 이용하는데, DB에 저장된 탬플릿을 불러오거나 새로 만들기를 통해 일단 아이디어 회의에 들어가면 모든 참여자가 실시간으로 동시에 피그마처럼 자유롭게 무언가를 그리거나 도형을 붙이는 등의 작업을 하게 된다. 그런 점을 고려한다면...
1. 아이디어 회의 작업물과 탬플릿이 JSON(혹은 BSON)파일 형태의 비정형 데이터이다.
2. Redis의 단점인 휘발성을 커버한다.
3. 속도가 생명인 실시간 서비스에 적합하다.
4. 트래픽 분산이 훌륭하다.