해당 블로그는 몽고디비 인 액션 책을 참고하여 작성하였습니다.
http://www.yes24.com/Product/Goods/60659843

NoSQL의 등장배경

  1. 과거의 데이터의 비해 너무나도 많은 데이터를 기존의 RDBMS 방식으로 저장 할수 있는 한계
  2. 새로운 개념 도입

NoSQL = Not Only SQL
단어만 봐도 알 수 있듯이 SQL을 활용하는 형태가 아닌 다른 방식의 저장 기술을 의미

MongoDB란

MongoDB 공홈

  1. MongoDB stores data in flexible, JSON-like documents, meaning fields can vary from document to document and data structure can be changed over time
  • 이는 장점이긴 하나 어플리케이션레이어에서 데이터의 형태가 달라질 경우를 대비하여 마이그레이션이 필요하다 생각합니다.
  1. The document model maps to the objects in your application code, making data easy to work with

  2. Ad hoc queries, indexing, and real time aggregation provide powerful ways to access and analyze your data

  3. MongoDB is a distributed database at its core, so high availability, horizontal scaling, and geographic distribution are built in and easy to use

MongoDB 핵심 기능

1. 도큐먼트 지향적인 데이터베이스

  • JSON document
  • MongoDB는 Binary Json 혹은 BSON의 형태로 도큐먼트를 저장
  • document의 모음과 같이 데이터를 컬렉션에 document로 저장 (mysql의 경우 데이터를 테이블의 행에 저장)
  • 스키마가 없는 모델의 장점 : 데이터 구조 비번히 변경되는 개발 초기 단계에서 새발 속도 단축

2. 애드훅 쿼리 지원

3. 인덱스

MongoDB에서 인덱스는 B-tree로 구현

4. 복제

  • replicat set라고 부르는 구성을 통해 DB 복제 기능을 제공

    • 서버 또는 네트워크 장애 대비
  • 프라이머리 노드 - 세컨더리 - 세컨더리 : 이렇게 구성되어있을 경우 프라이머리가 셧다운 되면 세컨더리가 프라이머리가 된 후 프라이머리는 복구 후 자동으로 세컨더리로 복귀

https://beanbroker.github.io/2020/07/12/Spring/spring_mongodb_docker_replica/ 여기서 테스트 하면 확인 가능

5. 속도와 내구성

  • 속도와 내구성 사이를 선택할수 있는 옵션이 존재
  • 필수적인 데이터에 대해서 안전모드 설정 권장

6. 확장

  • 수평적 확장 용이

MongoDB는 보통 64bit 시스템에서 실행되어야 한다.