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 구조 (데이터베이스, 컬렉션, 문서)
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의 유연성을 이해하고 활용하려면, 컬렉션과 문서의 설계를 잘 이해하는 것이 중요합니다.
<h3>카테고리 다른 글</h3>
Date | Title | Author |
---|---|---|
Jan 1, 3000 | 전체 카테고리 | |
Dec 9, 2024 | SQL의 WHERE 절, 조건부 조회 | |
Dec 8, 2024 | SQL 기본 SELECT 문법 이해하기 | |
Dec 7, 2024 | SQLite 설치 및 테스트 데이터를 생성 | |
Dec 1, 2024 | SQL에서 VIEW를 이용해 테이블을 안전하게 검색하기 | |
Oct 8, 2024 | RESTful API와 PyMongo 통합 방법 | |
Sep 29, 2024 | MongoDB에서의 데이터 모델링 원칙 | |
Sep 28, 2024 | Pymongo 컬렉션 선택 및 생성하기 | |
Sep 28, 2024 | PyMongo 데이터 삽입 | |
Sep 28, 2024 | PyMongo 데이터 수정 | |
Sep 28, 2024 | PyMongo 데이터 삭제 | |
Sep 27, 2024 | Pymongo 데이터베이스 선택 및 생성 | |
Sep 25, 2024 | Pymongo 연결하기 | |
Sep 22, 2024 | Pymongo 데이터베이스 선택 및 생성 | |
Sep 21, 2024 | WSL에서 docker-compose 사용하기 | |
Aug 28, 2024 | SQLite 데이터베이스 생성하기 | |
Aug 27, 2024 | 액셀 데이터를 SQL로 저장하기 | |
Jan 5, 2024 | SQL 정렬 명령 order by | |
Dec 6, 2023 | MySQL 도커로 설치하고 테스트 DB 사용하기 | |
Nov 28, 2023 | mongoDB 서비스 시작/종료/상태확인 | |
Nov 15, 2023 | MongoDB 설치 및 명령어 정리하기 | |
Nov 14, 2023 | Pymongo 명령어 정리하기 |
No matching items