• 티스토리 홈
starryeye
  • 프로필사진
    starryeye
    • 분류 전체보기 (189)
      • C++ (17)
      • Java (24)
      • OOP (5)
      • Spring Reactive Stack (12)
        • Reactive Streams (3)
        • Netty (4)
        • Reactor (1)
        • Webflux (3)
        • DB, Cache 연동 (1)
      • Spring (90)
        • Core (17)
        • MVC (33)
        • Client (2)
        • Security (4)
        • DB, Cache 연동 (33)
      • DataBase (12)
        • RDBMS (2)
        • NoSQL (10)
      • Message Broker (6)
      • Web (4)
      • Network (4)
      • 대규모 시스템 설계 (15)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • MongoDB 시작해보기
        2023년 05월 18일
        • starryeye
        • 작성자
        • 2023.05.18.:18
        반응형

        먼저 NoSQL 에 대해 알아보겠다.

         

        NoSQL의 등장 배경

        관계형 DB가 등장할 당시엔 Disk Storage 가 당시 매우 비싸고 용량의 제한이 컷다.

        데이터 중복을 줄여서 용량을 최적으로 사용하는 방향으로 발전 되어 왔기 때문에

        Scale-up, 데이터 정규화 기능에 특화 되어있다.

         

        NoSQL은 데이터의 일관성을 약간 포기한 대신

        여러 대의 컴퓨터에 데이터를 분산하여 저장하는 것(Scale-out)을 목표로 등장하였다.

        NoSQL의 등장으로 작고 값싼 장비 여러 대로

        대량의 데이터와 컴퓨팅 부하를 처리하는 것이 가능하게 되었다.

         

        NoSQL의 종류

        1. Key-value

        2. Document

        3. Column-family

        4. Graph

         

        여기서 MongoDB는 Document 모델에 해당한다.

         

        Document 모델

        데이터는 키와 도큐먼트(Document)의 형태로 저장된다.

        키-값 모델과 다른 점이라면 Value가 계층적인 형태인 도큐먼트로 저장된다는 것이다.

        객체지향에서의 객체와 유사하며, 이들은 하나의 단위로 취급되어 저장된다.

        다시 말해 하나의 객체를 여러 개의 테이블에 나눠 저장할 필요가 없어진다는 뜻이다.

        주요한 특징으로는 객체-관계 매핑이 필요하지 않다.

        객체를 도큐먼트의 형태로 바로 저장 가능하기 때문이다.

        또한 검색에 최적화되어 있는데, 이는 키-값 모델의 특징과 동일하다.

        단점이라면 사용이 번거롭고 쿼리가 SQL과는 다르다는 점이다.

         

        참고>

        경우에 따라 Document 모델로 구분하지 않고 Key-Value 모델로 묶는 경우도 있다.

         

        MongoDB

        이제 구체적으로 알아보자..

        기본적으로 관계형 DB를 개선시키기 위해 나왔다.

        (상위호환의 개념은 아니고 같이 쓰면 좋은 DB이다.)

        관계형 DB와 비교하여 무엇이 다를까..

         

        1. 스키마가 자유롭다.

        -> 스키마 변경에 공수가 적게든다. BSON 문서 형태로 데이터를 저장한다.

         

        2. HA와 Scale-out Solution을 자체적으로 제공하여 확장성과 신속성이 좋다.

        -> 확장시, Application 변경이 필요 없음

         

        3. Secondary Index를 지원하는 NoSQL 이다.

         

        4. 다양한 Index를 지원한다.

         

        5. 응답속도가 빠르다.

        -> 데이터 중복이 있지만, Join 없이 조회되므로 응답속도가 일반적으로 빠르다.

         

        6. 오픈소스이다.

         

        MongoDB는

        대용량 데이터와 트래픽을 분산이 필요한데..

        쉽게 Scale-out을 해야할 필요가 있고

        스키마가 정해져있지 않은데..

        다양하게 쿼리를 해야할 필요가 있을때 MongoDB 를 사용하면 좋다.

         

         

        알면 좋은 추가적 특징

         

        1. 기본적으로 디스크 기반의 데이터 베이스이다. (관계형 데이터 베이스와 동일하게 데이터를 영구적 보관)

         

        2. 데이터의 일부를 메모리에 캐싱하는 구조로 설계되었다.

         

        3. WiredTiger 라는 저장 엔진을 제공한다. 이 엔진은 in-memory storage 옵션을 제공한다.

         

         

        포스팅 하고 있는 날 기준..

        DB 랭킹 5위에 해당한다.

        1~4 위는 모두 관계형 DB에 해당한다.

         

         

        반응형

        'DataBase > NoSQL' 카테고리의 다른 글

        Redis 시작해보기  (0) 2023.06.01
        MongoDB Sharded Cluster  (0) 2023.06.01
        MongoDB Replica Set  (0) 2023.05.20
        MongoDB 3가지 형태  (0) 2023.05.20
        MongoDB 구조  (1) 2023.05.18
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바