문서지향 데이터베이스
MongoDB는 BSON(Binary JSON)형식으로 문서를 저장한다. BSON은 JSON과 거의 동일한 구조를 가지며, 필드-값 쌍으로 구성되고, 배열이나 중첩된 객체를 포함할 수 있어 유연하다.
문서 기반의 저장 방식 덕분에 MongoDB는 다음과 같은 주요 특징과 장점을 모두 가진다.
- 유연한 스키마 : 데이터를 저장하기 전에 엄격한 스키마를 저장할 필요가 없으며, 문서마다 다른 구조를 가질 수 있다.
- 직관적인 데이터 모델링 : 애플리케이션의 객체 모델과 유사하여 개발자가 다루기 쉽다.
- 수평적 확장성 : 데규모 데이터와 트래픽을 처리하기 위해 서버를 쉽게 추가하여 확장할 수 있다.
- 고성능 읽기 : 관련 데이터가 하나의 문서에 내장되어 있어 조인 없이 빠르게 데이터를 조회할 수 있다.
데이터모델링
NoSQL 데이터 모델링은 전통적인 RDBMS의 데이터 모델링과는 매우 다른 접근 방식을 가진다. RDBMS는 '정규화'와 '관계'에 중점을 두는 반면에 NoSQL은 '애플리케이션 쿼리 패턴'과 '확장성'에 중점을 둔다.
Denormalization
NoSQL 데이터 모델링에서 가장 핵심적인 원칙이자 기본 전략이다. RDBMS가 데이터 중복을 피하기 위해 정규화 하는 것과 달리, NoSQL은 조인이 없거나 매우 제한적으로, 성능 향상을 위해 의도적으로 데이터를 중복 저장하거나 관련된 데이터를 하나의 "문서"또는 "엔티티" 내에 통합하여 저장한다.
Aggregation
여러 문서나 레코드의 데이터를 모아 요약된 결과를 생성하는 프로세스이다. MongoDB는 Aggregation Pipeline이라는 강력한 기능을 제공하여 여러 단계의 파이프라인($match, $group, $project)을 통해 데이터를 필터링하고 변형하며 집계할 수 있다.
join
대부분의 NoSQL 데이터베이스는 RDBMS의 JOIN과 같은 관계형 조인 기능을 직접적으로 제공하지 않습니다. 이는 NoSQL이 수평적 확장을 위해 데이터 분산에 최적화되어있고, 조인 연산이 분산 환경에 매우 비효율적이기 때문이다.
Enumeration-key
몽고DB는 스키마가 없는 문서 지향 데이터베이스이기 때문에, 관계형 데이터베이스나 프로그래밍 언어에서 제공하는 Enum키와 같은 내장된 데이터 타입이나 직접적인 개념은 존재하지 않는다.
따라서 애플리케이션 레벨 또는 몽고DB의 스키마 유효성 검사 기능을 사용하여 유사한 동작을 구현해야 한다.
Dimensionality reduction
Dimensionality reduction(차원 축소)는 주로 데이터 분석, 머신러닝, 통계학 분야에서 사용되는 기술로, 고차원 데이터를 분석하거나 모델링하기 전에 데이터의 복잡성을 줄이기 위해 피처의 수를 줄이는 과정이다.
몽고DB는 데이터 저장소로, 고차원 데이터를 문서 형태로 저장할 수 있다. 실제 차원 축소 알고리즘은 몽고DB 내에서 직접 실행되지 않는다. 대신, 다음과 같은 흐름으로 이루어진다.
데이터 추출 -> 외부 처리 -> 결과 저장
즉 고차원 데이터를 몽고DB에 저장하고 필요에 따라 추출하여 외부의 전문적인 머신러닝/데이터 과학도구를 사용하여 차원 축소를 수행하는 것이 일반적인 워크플로우이다.
Index table
MongoDB는 단일 필드 인덱스, 복합 인덱스, 텍스트 인덱스, 지리 공간 인덱스 등 다양한 유형의 인덱스를 지원한다. _id필드에는 기본적으로 클러스터형 인덱스가 생성된다.
Composite Key(복합 키)
NoSQL에서는 일반적으로 Primary key로 지정하는 개념은 존재하지 않는다. 하지만 논리적으로 유사한 방식으로 여러 필드를 조합하여 데이터를 고유하게 식별하거나, 데이터 분산 및 정렬의 기준으로 사용될 수 있다.
Nested set
Nested set 모델은 RDBMS에서 계층적 데이터를 효율적으로 쿼리하기 위해 고안된 모델이다. NoSQL 데이터베이스에서는 이 모델을 거의 사용하지 않는다. 몽고DB는 계층 구조를 문서 내에 중첩된 객체나 배열로 직접 표현한다.(ex : 카테고리 문서 안에 서브 카테고리를 배열로 포함)
요약 : NoSQL 데이터모델링은 RDBMS의 정규화와 조인 중심의 사고방식에서 벗어나, 애플리케이션의 쿼리 패턴과 확장성을 최우선으로 고려하여 비정규화, 임베딩, 그리고 특정 NoSQL DB가 제공하는 데이터 모델(문서, 칼럼, 그래프 등)의 특성을 최대한 활용하는 것이 핵심이다.
'공부 > DB' 카테고리의 다른 글
몽고DB에 문서 대량 삽입하기 (3) | 2025.08.06 |
---|---|
MongoDB 4장(MongoDB 모델링) (2) | 2025.08.01 |
MongoDB 2장 (3) | 2025.07.30 |
MongoDB 1장 (1) | 2025.07.28 |