(몽고DB 완벽 가이드) Chapter 2. 몽고DB 기본

이재문·2023년 11월 27일
  • RDB 유사 역할
    • 도큐먼트 - DB 행
    • 컬렉션 - 테이블
  • 도큐먼트
    • ex
      {
      	"_id": "f23linff23fkhuh2i23kl", // ObjectId
      	"name": "이재문", // str
      	"age": 28, // int
      	"address": {
      								"City": :"Seoul",
      								"Gu": "Mapo-Gu",
      							} // document
      }
    • key - value의 집합으로 이루어 진 것이 도큐먼트
      • 중복된 Key 존재X
      • 대소문자 구분 O
    • JS 객체로 표현
    • blob 형태가 아님
      • blob은 Binary Large Object의 약자, 큰 객체를 저장하는 것
    • \0(null) .,$ 는 예약어이기에 에러 발생
    • _로 시작하는 경우 예약어 일 경우가 많음
  • 컬렉션
    • 도큐먼트의 모음
    • RDB와 다르게 동적스키마를 가진다. 모든 도큐먼트가 다른 구조를 가질 수 있다.
    • 컬렉션 네이밍
      • 빈 문자열, \0(null) X
      • 예약어
        • “system.” 으로 시작하는 문자
        • $ 포함 된 문자
        • 컬렉션에 access 하는 경우가 아니라면 사용X
    • 컬렉션이 여러개인 이유
      1. 하나의 컬렉션에 다른 종류의 도큐먼트를 저장하면 구분하기 번거롭다.
      2. 같은 종류의 도큐먼트를 하나의 컬렉션에 넣으면 data locality에 좋다. (지역성)
      3. 인덱스를 만들면 도큐먼트는 특정 구조를 만들어야 한다. - mongo의 인덱스에 대한 이해 필요
        1. 인덱스는 컬렉션별로 정의한다.
    • 서브 컬렉션 - 체계화 기능
      • 컬렉션과 서브 컬렉션은 기능적으로 관계가 없음
      • portfolio
        • portfolio
        • portfolio_log
  • 데이터베이스
    • DB 네이밍
      • 빈 문자열
      • \, /, ., ', *, <, >, :, |, ?, $, null
      • 대소문자 구분
      • 최대 64비트
    • admin DB는 인증, 권한 부여 역할
    • local 복제 프로세스에 사용된 데이터 저장
    • config 각 샤드의 정보 저장
    • 도큐먼트 → 컬렉션 → DB
    • 동일한 DB를 사용하면 좋은 이유
      1. 일관성과 효율성: 동일한 데이터베이스에 데이터를 저장하면 여러 애플리케이션이나 서비스에서 데이터를 일관성 있게 사용 가능. 데이터 중복을 피하고 한 곳에서 데이터를 유지함으로써 데이터 일관성을 유지하며 데이터 수정 및 갱신 작업을 효율적으로 관리 가능.
      2. 데이터 중복 최소화: 여러 데이터베이스에 같은 데이터를 중복해서 저장하면 데이터 불일치 문제가 발생 할 수 있다.
      3. 확장성: 동일한 데이터베이스에 데이터를 저장하면 데이터베이스의 확장성을 쉽게 유지할 수 있습니다. 데이터의 양이 증가하면 데이터베이스 클러스터를 확장하거나 분산 데이터베이스 아키텍처를 사용하여 성능을 향상시킬 수 있습니다.
      4. 보안 및 권한 관리: 한 데이터베이스에서 데이터를 관리하면 보안 및 권한 관리가 편리해집니다. 액세스 제어, 권한 부여, 인증 등을 중앙에서 관리하여 보안을 강화할 수 있습니다.
      5. 데이터 분석 및 통합: 동일한 데이터베이스에 저장된 데이터는 데이터 분석 및 통합 작업에 용이합니다. 여러 애플리케이션에서 생성된 데이터를 하나의 공통 데이터 저장소에서 관리하면 데이터를 종합하여 분석하거나 다양한 시각화 및 리포팅 도구를 활용할 수 있습니다.
      6. 유지보수 용이성: 데이터베이스를 한 곳에서 관리하면 유지보수 작업이 용이해집니다. 스키마 변경, 데이터 마이그레이션 등의 작업을 중앙에서 처리함으로써 데이터 일관성을 유지하며 유지보수 비용을 줄일 수 있습니다.
      7. 복구와 백업: 데이터베이스를 한 곳에 유지하면 데이터 백업과 복구 작업이 단순화됩니다. 전체 데이터베이스를 백업하고 복구하는 작업이 간편해져 데이터 손실 위험을 줄일 수 있습니다.
      8. 개발 및 테스트 용이성: 동일한 데이터베이스에 저장된 데이터는 개발 및 테스트 환경에서도 쉽게 활용할 수 있습니다. 데이터의 일관성과 유사성을 유지하면서 개발 및 테스트 작업을 진행할 수 있습니다.
  • 몽고DB 시작
    • JS 모든 기능 사용 가능
    • use user
    • CRUD 가능
      • insert
      • find
      • update
      • delete
  • 몽고DB 셸 소개
  • 데이터형
    • 데이터형
      - null
      - boolean
      - int
      - str
      - date
      - regex
      - list
      - document
      - ObjectId
      - binary
      - js code
      - 날짜 문자열

      배열

    • 배열에 쿼리, 배열 내용을 통해 인덱스 사용가능

      내장 도큐먼트

    • depth가 늘어날 수 있다.

      ObjectId

    • _id의 기본 형태

    • 12byte 스토리지를 사용하여 24자리 16진수 문자열 표현

    • 타임스탬프, 랜덤, 카운터 값으로 생성

  • 몽고DB 셸 사용
profile
이제부터 백엔드 개발자

0개의 댓글