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 구조 (데이터베이스, 컬렉션, 문서)
MongoDB 구조 (데이터베이스, 컬렉션, 문서)
Database
Pymongo
MongoDB 구조 (데이터베이스, 컬렉션, 문서)
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을 이용해 시각화한 다이어그램입니다.
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:
Table1
은Users
테이블을,Table2
는Orders
테이블을 나타냅니다. - Columns
- 각 테이블의 열(Column) 정보를 노드로 추가하였습니다.
Users
테이블의 열:User ID
,Name
,Age
Orders
테이블의 열:Order ID
,Date
,User ID
- 데이터베이스와 테이블 간의 연결을 표현하고, 각 테이블의 열과의 관계도 설정하였습니다.
- 외래 키 관계를 통해
Orders
테이블의User ID
가Users
테이블의User ID
를 참조함을 명시하였습니다.
4. 결론
MongoDB는 SQL과 비교했을 때 데이터 구조와 관리 방식이 매우 유연하며, 특히 복잡한 관계를 내장 문서나 참조 관계를 통해 손쉽게 표현할 수 있습니다. 반면, SQL은 고정된 스키마와 강력한 관계 모델을 제공하지만, 데이터 구조 변경이 어렵습니다.
이러한 차이점을 이해하면 각 데이터베이스의 장단점을 파악하고, 프로젝트의 요구 사항에 맞는 데이터베이스를 선택하는 데 도움이 될 것입니다. MongoDB의 유연성을 이해하고 활용하려면, 컬렉션과 문서의 설계를 잘 이해하는 것이 중요합니다.