Database

Chapter 8-41. NoSQL MongoDB(2/6) MongoDB의 기본 구조

Chansman 2025. 3. 26. 18:05

 

📌 MongoDB의 기본 구조

MongoDB의 구조: - Database - Collection - Document

1. Database (데이터베이스)

  • MongoDB는 여러 개의 데이터베이스를 가질 수 있습니다. 각 데이터베이스는 독립적으로 관리되며 여러 **컬렉션(Collection)**을 포함할 수 있습니다.
  • 데이터베이스는 일반적으로 관련된 데이터를 그룹화하는 데 사용됩니다.

2. Collection (컬렉션)

  • 컬렉션은 **문서(Document)**의 그룹입니다. RDBMS의 테이블과 유사하지만 스키마가 없고 유연한 구조를 가집니다.
  • 서로 다른 문서들이 하나의 컬렉션에 저장될 수 있습니다.

3. Document (문서)

  • 문서는 MongoDB에서의 기본 데이터 단위로, JSON 형태의 키-값 쌍을 갖습니다.
  • 각 문서는 서로 다른 구조를 가질 수 있으며, 필요에 따라 필드를 동적으로 추가할 수 있습니다.
  • 문서컬렉션 내에 저장되며, 각 문서는 고유한 ObjectId를 가집니다.

MongoDB Collection 예시

{
  "collection_name": "users",
  "documents": [
    {
      "_id": ObjectId("5fde7b8e69e01b3f95277b10"),
      "name": "John Doe",
      "age": 30,
      "city": "New York",
      "skills": ["JavaScript", "Python", "MongoDB"],
      "address": {
        "street": "123 Main St",
        "city": "New York",
        "zipcode": "10001"
      }
    },
    {
      "_id": ObjectId("5fde7c1569e01b3f95277b11"),
      "name": "Jane Smith",
      "age": 25,
      "city": "San Francisco",
      "skills": ["Java", "C++", "SQL"],
      "address": {
        "street": "456 Oak St",
        "city": "San Francisco",
        "zipcode": "94105"
      }
    }
  ]
}

MongoDB Document 예시

{
  "_id": ObjectId("5fde7b8e69e01b3f95277b10"),
  "name": "John Doe",
  "age": 30,
  "city": "New York",
  "skills": ["JavaScript", "Python", "MongoDB"],
  "address": {
    "street": "123 Main St",
    "city": "New York",
    "zipcode": "10001"
  }
}

RDBMS의 구조와의 비교:

1. Database (데이터베이스)

  • RDBMS에서의 Database는 정형화된 테이블들을 그룹화하고, 각 테이블은 고정된 스키마를 가집니다.

2. Table (테이블)

  • RDBMS에서의 Table은 정해진 스키마를 가진 **열(Columns)**과 **행(Rows)**으로 이루어져 있습니다. 각 테이블은 미리 정의된 에 맞춘 데이터를 저장합니다.

3. Row (레코드)

  • Row는 RDBMS에서 하나의 행을 나타내며, 각 레코드는 테이블의 스키마에 맞춘 고정된 구조를 가지고 있습니다.

차이점 및 장점:

1. 유연성과 동적 스키마

  • MongoDB는 동적 스키마를 허용하여 데이터 구조가 유연하게 변할 수 있습니다.
  • 반면, RDBMS정적인 스키마를 가지고 있어 데이터 모델을 변경하려면 일정한 절차가 필요합니다.

2. 수평적 확장

  • MongoDB는 수평적 확장이 가능하여, 여러 서버에 데이터를 분산시켜 대용량 데이터를 처리할 수 있습니다.
  • RDBMS는 수직적 확장이 일반적이며, 서버의 성능을 업그레이드하는 방식으로 확장됩니다.

📊 MongoDB의 기본 명령어 (데이터베이스, 컬렉션 관련)

데이터베이스 관련 명령어

  1. 데이터베이스 생성 또는 전환
    • use [데이터베이스 이름]
    • 데이터베이스를 전환하거나 새로 생성합니다.
  2. 현재 데이터베이스 확인
    • db
    • 현재 사용 중인 데이터베이스를 표시합니다.
  3. 데이터베이스 목록 조회
    • show dbs
    • 서버에 존재하는 모든 데이터베이스 목록을 보여줍니다.
  4. 데이터베이스 삭제
    • db.dropDatabase()
    • 현재 데이터베이스를 삭제합니다.
  5. 데이터베이스 상태 확인
    • db.stats()
    • 데이터베이스의 통계 정보를 제공합니다.

컬렉션 관련 명령어 예제

  1. 컬렉션 생성
db.createCollection("users", { capped: false })

 

  • capped 옵션을 사용하여 컬렉션을 용량 제한 여부를 설정합니다.

2.컬렉션 목록 조회

show collections

현재 데이터베이스 내 모든 컬렉션을 표시합니다.

 

3.컬렉션 이름 변경

db.users.renameCollection("customers")

users 컬렉션의 이름을 **customers**로 변경합니다.

 

4. 컬렉션 삭제

db.customers.drop()

customers 컬렉션을 삭제합니다.

 

MongoDB의 데이터 타입

데이터 타입설명예시
String 텍스트 데이터 "Hello World"
Integer 정수 데이터 25, -85
Boolean 참/거짓 값 true, false
Double 부동 소수점 숫자 3.14, -123.45
ObjectId 고유 식별자 "507f1f77bcf86cd799439011"
Date 날짜 및 시간 데이터 ISODate("2023-12-13T12:00:00Z")
Array 값의 배열 ["apple", "banana", "cherry"]
Object 중첩된 문서 또는 JSON 객체 { "name": "John", "age": 30 }
Binary Data 바이너리 데이터 (이미지 또는 파일의 바이너리 데이터)
Undefined 정의되지 않은 값 undefined (권장되지 않음)
Null 값이 없음 null
Regular Expression 정규 표현식 /{pattern}/
JavaScript 실행 가능한 JavaScript 코드 function() { return "Hello World"; }
Symbol 문자열과 유사한 데이터 Symbol("mySymbol") (덜 일반적)
Min/Max keys 최소/최대값을 나타냄 MinKey, MaxKey

이 구조와 명령어를 통해 MongoDB의 기본적인 데이터베이스, 컬렉션, 문서를 이해하고 활용할 수 있습니다. MongoDB는 유연성확장성 덕분에 다양한 애플리케이션에서 뛰어난 성능을 발휘합니다.