### 요약
- PostgreSQL은 RDBMS로 빠른 성능, 연결, 데이터 구조가 중요하며 수직적 확장을 함. (최근 분산DB 기능 강화)
- MongoDB는 수평적 확장을 하며 NoSQL 방식이며, BSON으로 쿼리를 구성해 직관적임. 빅데이터 분석 등에 활용 가능
>[!내 결론]
>PostgreSQL을 먼저 사용해봄으로써 SQL 쿼리를 익히고 기본적인 DB 구조를 이해하는 게 필요함
---
MongoDB와 PostgreSQL은 모두 데이터베이스 관리 시스템(DBMS)이지만, 여러 가지 면에서 차이가 있습니다. 두 시스템의 주요 차이점을 이해하면, 특정 용도에 어떤 시스템이 더 적합한지 결정하는 데 도움이 됩니다.
### MongoDB와 PostgreSQL의 주요 차이점
1. **데이터 모델**
- **MongoDB**: NoSQL 데이터베이스로, 문서 지향(Document-Oriented) 데이터 모델을 사용합니다. JSON과 유사한 BSON(Binary JSON) 형식으로 데이터를 저장합니다. 각 문서는 키-값 쌍의 컬렉션이며, 구조가 고정되어 있지 않아 매우 유연합니다.
- **PostgreSQL**: 관계형 데이터베이스(RDBMS)로, 테이블 기반 데이터 모델을 사용합니다. 각 테이블은 고정된 스키마를 가지며, 데이터는 행과 열로 구성됩니다. 엄격한 데이터 무결성을 유지합니다.
2. **스키마 및 유연성**
- **MongoDB**: 스키마가 없는 구조로, 동일한 컬렉션 내의 문서가 서로 다른 필드를 가질 수 있습니다. 스키마 변경이 필요할 때 유연하게 대응할 수 있습니다.
- **PostgreSQL**: 스키마가 고정되어 있어 데이터 구조가 엄격하게 정의됩니다. 스키마 변경이 비교적 번거로울 수 있습니다.
3. **확장성**
- **MongoDB**: 수평적 확장성(Horizontal Scalability)에 강점을 가지며, 샤딩을 통해 데이터를 여러 서버에 분산하여 저장할 수 있습니다.
- **PostgreSQL**: 수직적 확장성(Vertical Scalability)에 더 적합하며, 클러스터링과 리플리케이션 기능을 통해 데이터베이스의 성능을 확장할 수 있습니다. 최근에는 분산 데이터베이스 기능도 강화되고 있습니다.
4. **데이터 무결성 및 ACID 특성**
- **MongoDB**: 기본적으로 Eventual Consistency를 지향하며, 트랜잭션 지원은 제한적이었습니다. 최근 버전에서는 다중 문서 트랜잭션을 지원하지만, RDBMS만큼 강력하지는 않습니다.
- **PostgreSQL**: 완전한 ACID(Atomicity, Consistency, Isolation, Durability) 준수를 통해 강력한 데이터 무결성을 제공합니다. 트랜잭션을 매우 강력하게 지원합니다.
5. **쿼리 언어**
- **MongoDB**: JSON과 유사한 문서 쿼리 언어를 사용합니다. 쿼리가 직관적이고 유연합니다.
- **PostgreSQL**: 표준 SQL(Structured Query Language)을 사용합니다. SQL은 강력하고, 복잡한 쿼리를 작성할 수 있습니다.
6. **성능 및 사용 사례**
- **MongoDB**: 대규모 데이터 처리, 유연한 데이터 모델이 필요한 경우, 자주 변하는 스키마를 가진 애플리케이션에 적합합니다. 예를 들어, 콘텐츠 관리 시스템, 빅 데이터 애플리케이션, 실시간 분석 등에 적합합니다.
- **PostgreSQL**: 복잡한 트랜잭션, 강력한 데이터 무결성이 필요한 경우, 고정된 스키마와 관계형 데이터 모델이 필요한 애플리케이션에 적합합니다. 예를 들어, 금융 애플리케이션, ERP 시스템, 데이터 웨어하우스 등에 적합합니다.
### MongoDB와 PostgreSQL의 비교 표
| 특징 | MongoDB | PostgreSQL |
| -------------- | ------------------------------ | --------------------- |
| 데이터 모델 | NoSQL, 문서 지향 | 관계형 |
| 스키마 | 스키마리스 | 고정 스키마 |
| 확장성 | 수평적 확장 | 수직적 확장 |
| 데이터 무결성 및 ACID | 제한적 ACID, Eventual Consistency | 완전한 ACID, 강력한 데이터 무결성 |
| 쿼리 언어 | JSON 기반 쿼리 언어 | 표준 SQL |
| 성능 및 사용 사례 | 빅 데이터, 실시간 분석 | 복잡한 트랜잭션, 데이터 무결성 |
| 트랜잭션 지원 | 제한적, 다중 문서 트랜잭션 지원 | 강력한 트랜잭션 지원 |
### 결론
- **MongoDB**: 유연한 스키마와 수평적 확장이 필요하고, 빠른 개발과 대규모 데이터 처리가 필요한 경우 적합합니다.
- **PostgreSQL**: 강력한 데이터 무결성, 복잡한 트랜잭션 처리, 표준 SQL을 필요로 하는 경우 적합합니다.
프로젝트의 요구 사항과 데이터 특성에 따라 적절한 데이터베이스를 선택하는 것이 중요합니다. 필요하다면 두 가지 데이터베이스를 함께 사용하여 각 시스템의 장점을 살릴 수도 있습니다.