← 목록

MongoDB 데이터 모델링의 기초와 개념

작성: 2024년 08월 03일읽기: 약 3분

MongoDB는 매우 유연한 NoSQL 데이터베이스입니다. 데이터를 저장하고 관리하는 방법에 있어서 많은 자유를 제공합니다. 이번 포스팅에서는 MongoDB 데이터 모델링의 기초와 개념에 대해 알아보겠습니다.

MongoDB에서 데이터는 문서(document) 형태로 저장됩니다. 이 문서들은 JSON과 유사한 형식인 BSON(Binary JSON)으로 표현됩니다. 각 문서는 다양한 필드(field)를 가질 수 있으며, 이 필드들은 서로 다른 데이터 타입을 가질 수 있습니다.

문서(Document)와 컬렉션(Collection)

MongoDB에서는 데이터를 문서 형태로 저장합니다. 각 문서는 유니크한 ID를 가지며, 이는 문서를 식별하는 데 사용됩니다.

{
  "_id": ObjectId("507f1f77bcf86cd799439011"),
  "name": "John Doe",
  "age": 30,
  "email": "john.doe@example.com"
}

문서들은 컬렉션(Collection) 내에 저장됩니다. 컬렉션은 SQL 데이터베이스의 테이블과 유사한 개념입니다. 하지만, 컬렉션은 스키마를 고정하지 않기 때문에, 같은 컬렉션 내의 문서들은 서로 다른 구조를 가질 수 있습니다.

데이터 모델링

MongoDB에서 데이터 모델링을 할 때는 몇 가지 중요한 고려 사항이 있습니다.

1. 임베디드(Embedded) 문서 vs 참조(Reference)

문서 내에 다른 문서를 임베딩하는 것은 MongoDB의 강력한 기능 중 하나입니다. 이를 통해 관련 데이터를 함께 저장하고 쿼리할 수 있습니다. 하지만, 모든 상황에 임베디드 문서를 사용하는 것이 최선은 아닙니다. 때로는 문서의 ID만 참조하는 것이 더 효율적일 수 있습니다.

임베디드 문서 예시

{
  "_id": ObjectId("507f1f77bcf86cd799439011"),
  "name": "John Doe",
  "address": {
    "street": "123 Elm St",
    "city": "Anytown",
    "state": "NY",
    "zip": "12345"
  }
}

참조 예시

{
  "_id": ObjectId("507f1f77bcf86cd799439011"),
  "name": "John Doe",
  "address_id": ObjectId("507f191e810c19729de860ea")
}

2. 스키마 디자인

MongoDB는 스키마리스(schema-less)이지만, 이는 스키마에 대해 전혀 고려하지 않아도 된다는 의미는 아닙니다. 어떻게 데이터를 구조화할지, 어떤 필드가 필요한지, 어떤 타입을 사용할지 등을 신중하게 고려해야 합니다.

3. 쿼리 성능

데이터 모델링을 할 때는 쿼리 성능도 중요한 고려 사항입니다. 자주 사용되는 쿼리의 종류와 패턴을 고려하여, 데이터를 효율적으로 쿼리할 수 있는 구조로 모델링하는 것이 중요합니다.

MongoDB 데이터 모델링은 유연성과 강력함을 제공합니다. 임베디드 문서와 참조를 적절히 사용하고, 스키마 디자인과 쿼리 성능을 고려하여 효율적인 데이터 모델을 설계해 보세요.