MongoDB 구조 (데이터베이스, 컬렉션, 문서)

MongoDB 구조 (데이터베이스, 컬렉션, 문서)

Database
Pymongo
MongoDB 구조 (데이터베이스, 컬렉션, 문서)
Author

gabriel yang

Published

September 22, 2024


MongoDB는 전통적인 관계형 데이터베이스 시스템(RDBMS)과는 다른 NoSQL 데이터베이스로, 데이터 저장 방식과 구조가 SQL과 크게 다릅니다. 이 글에서는 MongoDB의 데이터베이스, 컬렉션, 문서 구조를 SQL과 비교하고, 이를 시각적으로 표현한 PlantUML 다이어그램을 통해 설명하겠습니다.

1. SQL과 MongoDB의 구조 비교

개념 SQL (RDBMS) MongoDB
데이터베이스 데이터베이스 (Database) 데이터베이스 (Database)
테이블 테이블 (Table) 컬렉션 (Collection)
행(Row) 행 (Row) 문서 (Document)
열(Column) 열 (Column) 필드 (Field)
스키마 고정 스키마 (Fixed Schema) 유연한 스키마 (Flexible Schema)
관계 기본 키, 외래 키, 조인 (Join) 내장 문서, 참조 관계

1.1. 데이터베이스(Database)

  • SQL: 여러 테이블을 포함하는 하나의 데이터베이스.
  • MongoDB: 여러 컬렉션을 포함하는 하나의 데이터베이스.

1.2. 테이블(Table) vs 컬렉션(Collection)

  • SQL: 테이블은 행과 열로 구성된 구조적 데이터 저장소입니다.
  • MongoDB: 컬렉션은 여러 문서를 포함하는 데이터 저장소로, 유사한 구조의 데이터를 그룹화합니다.

1.3. 행(Row) vs 문서(Document)

  • SQL: 테이블의 각 행은 고정된 스키마를 따르는 데이터의 한 레코드입니다.
  • MongoDB: 컬렉션의 각 문서는 유연한 구조를 가지며, JSON 또는 BSON 형식으로 저장됩니다.

1.4. 열(Column) vs 필드(Field)

  • SQL: 열은 데이터의 속성을 나타내며, 모든 행에 대해 동일한 형식입니다.
  • MongoDB: 필드는 문서 내의 키-값 쌍이며, 각 문서의 필드 구조는 다를 수 있습니다.

2. MongoDB 구조의 PlantUML 다이어그램

다음은 MongoDB의 구조를 PlantUML을 이용해 시각화한 다이어그램입니다.

graph TD

%% MongoDB 구조
Database["Database"]
Collection1["Collection: Users"]
Collection2["Collection: Orders"]
Document1["Document 1: { name: 'Alice', age: 30 }"]
Document2["Document 2: { name: 'Bob', age: 25 }"]

%% 관계 설정
Database --> Collection1
Database --> Collection2
Collection1 --> Document1
Collection1 --> Document2

MongoDB 구조:

  • Users, Orders, Products라는 세 개의 컬렉션이 있습니다.
  • 각 컬렉션은 예제 문서와 함께 표현됩니다. 예를 들어, Users 컬렉션의 문서는 _id, name, age 필드를 가집니다.
  • Orders 컬렉션은 user_id 필드를 통해 Users 컬렉션과 관계를 맺고 있습니다.
graph TD
    %% 데이터베이스
    DB["Database: my_database"]

    %% Users 테이블
    UsersTable["Table: Users"]
    UserID["Column: User ID (INT, PK)"]
    UserName["Column: Name (VARCHAR)"]
    UserAge["Column: Age (INT)"]

    %% Orders 테이블
    OrdersTable["Table: Orders"]


    %% 데이터베이스와 테이블 연결
    DB --> UsersTable
    DB --> OrdersTable

    %% 테이블과 열 연결
    UsersTable --> UserID
    UsersTable --> UserName
    UsersTable --> UserAge

SQL 구조:

  • Database :DB는 데이터베이스를 나타내며, 여기서는 my_database라는 이름으로 설정하였습니다.
  • Table: Table1Users 테이블을, Table2Orders 테이블을 나타냅니다.
  • Columns
    • 각 테이블의 열(Column) 정보를 노드로 추가하였습니다.
    • Users 테이블의 열: User ID, Name, Age
    • Orders 테이블의 열: Order ID, Date, User ID
  • 데이터베이스와 테이블 간의 연결을 표현하고, 각 테이블의 열과의 관계도 설정하였습니다.
  • 외래 키 관계를 통해 Orders 테이블의 User IDUsers 테이블의 User ID를 참조함을 명시하였습니다.

4. 결론

MongoDB는 SQL과 비교했을 때 데이터 구조와 관리 방식이 매우 유연하며, 특히 복잡한 관계를 내장 문서나 참조 관계를 통해 손쉽게 표현할 수 있습니다. 반면, SQL은 고정된 스키마와 강력한 관계 모델을 제공하지만, 데이터 구조 변경이 어렵습니다.

이러한 차이점을 이해하면 각 데이터베이스의 장단점을 파악하고, 프로젝트의 요구 사항에 맞는 데이터베이스를 선택하는 데 도움이 될 것입니다. MongoDB의 유연성을 이해하고 활용하려면, 컬렉션과 문서의 설계를 잘 이해하는 것이 중요합니다.