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의 기본 명령어 (데이터베이스, 컬렉션 관련)
데이터베이스 관련 명령어
- 데이터베이스 생성 또는 전환
- use [데이터베이스 이름]
- 데이터베이스를 전환하거나 새로 생성합니다.
- 현재 데이터베이스 확인
- db
- 현재 사용 중인 데이터베이스를 표시합니다.
- 데이터베이스 목록 조회
- show dbs
- 서버에 존재하는 모든 데이터베이스 목록을 보여줍니다.
- 데이터베이스 삭제
- db.dropDatabase()
- 현재 데이터베이스를 삭제합니다.
- 데이터베이스 상태 확인
- db.stats()
- 데이터베이스의 통계 정보를 제공합니다.
컬렉션 관련 명령어 예제
- 컬렉션 생성
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는 유연성과 확장성 덕분에 다양한 애플리케이션에서 뛰어난 성능을 발휘합니다.