MongoDB 는 개발자가 최신 애플리케이션을 더 빠르게 빌드 수 있도록 설계된 문서 데이터베이스 입니다. 데이터를 JSON 과 유사한 유연한 문서에 저장하므로 애플리케이션 코드에서 사용하는 것과 동일한 방식으로 데이터를 쉽게 모델링할 수 있습니다. 유연한 스키마 사용하면 다운타임 없이 데이터 모델 발전시키고, 빠르게 반복하고, 비균일 데이터를 쉽게 처리하다 있습니다.
MongoDB 강력한 쿼리 엔진, 수평 확장, 내장 고가용성 제공하므로 래피드 프로토타입 제작부터 대규모 미션 크리티컬 워크로드에 이르기까지 모든 것을 지원 수 있습니다.
MongoDB 는 다음을 포함한 범위 워크로드 유형을 지원하는 완전 트랜잭션 트랜잭션 데이터베이스 입니다.
핵심 아키텍처
MongoDB 는 관계형 데이터베이스와 구별되는 몇 가지 핵심 아키텍처 구성 요소를 기반으로 합니다.
문서 데이터베이스: 유연한 문서 데이터 모델 사용하면 데이터를 애플리케이션의 요구 사항에 매핑할 수 있습니다.
수평적 확장: 샤딩을 사용하면 수평 확장 통해 대규모 데이터 세트와 높은 처리량 처리하다 할 수 있습니다.
문서 데이터베이스
MongoDB의 기록은 필드와 값 쌍으로 구성된 데이터 구조인 문서입니다. MongoDB 문서는 JSON 객체와 유사합니다. 필드 값에는 다른 문서, 배열 및 문서 배열이 포함될 수 있습니다.
MongoDB의 유연한 객체 지향 데이터 모델 사용하면 코드베이스에서 객체 모델을 미러링하는 방식으로 데이터를 구조화할 수 있습니다. 이렇게 하면 관계형 데이터베이스를 사용할 때 필요한 복잡한 객체-관계형 매핑이 필요하지 않습니다.
다음은 문서가 애플리케이션의 객체 모델 미러링하는 형식으로 복잡한 계층적 데이터를 표현하는 방법을 보여주는 MongoDB 문서 의 예시 입니다.
{ _id: ObjectId("507f1f77bcf86cd799439011"), name: "Alice", birthdate: ISODate("1990-01-01T00:00:00Z"), address: { street: "123 Main St", city: "Springfield", state: "IL" }, hobbies: ["reading", "hiking", "coding"] }
문서 데이터 모델 의 추가 이점은 다음과 같습니다.
문서는 다양한 프로그래밍 언어의 기본 데이터 유형에 해당합니다.
내장된 문서와 배열은 성능을 저하시킬 수 있는 값비싼 조인의 필요성을 줄여줍니다.
동적 스키마는 동일한 컬렉션 에 있는 문서 간에 다양한 구조를 허용하는 다형성을 지원 .
MongoDB 컬렉션에 문서를 저장합니다. 컬렉션은 관계형 테이블과 유사하지만 사전에 정의된 엄격한 스키마 시행하다 하지 않습니다.
컬렉션 외에도 MongoDB 읽기 전용 보기를 지원합니다.
트랜잭션
MongoDB 다중 문서 트랜잭션을 지원하므로 여러 읽기 및 쓰기 (write) 작업을 단일 all-or-nothing 이벤트 로 실행 수 있습니다.
주요 트랜잭션 기능은 다음과 같습니다.
ACID 보장: 트랜잭션은 여러 작업에서 원자성, 일관성, 격리 및 내구성을 제공합니다.
다중 문서 작업: 데이터 일관성 유지하면서 여러 문서에 걸쳐 있는 복잡한 작업을 실행 수 있습니다.
분산 트랜잭션 : 동일한 ACID 보장 으로 샤딩된 클러스터 간에 트랜잭션을 조정할 수 있습니다.
자세한 내용은 트랜잭션을 참조하세요.
고가용성
MongoDB의 내장 복제 메커니즘은 자동 페일오버, 데이터 중복성 및 증가된 읽기 용량 제공합니다. 자동 페일오버 사용하면 프라이머리 서버 사용할 수 없게 되면 클러스터 자동으로 새 프라이머리 선택하여 쓰기를 계속 사용할 수 있도록 합니다. 또한 데이터 내구성을 향상시키기 위해 여러 개의 데이터 사본을 서로 다른 서버에 저장합니다.
수평적 확장
MongoDB 기본적으로 샤딩이라는 기술을 통해 수평 확장 지원합니다.
주요 샤딩 기능은 다음과 같습니다.
자동 데이터 배포: MongoDB 샤드 키 기반으로 데이터를 자동으로 분할하고 머신 클러스터 전체에 배포합니다.
구역 샤딩: 지리적 구역을 정의하여 샤드 키 범위를 기반으로 문서 배치를 제어할 수 있습니다.
샤드 키 세분화: 애플리케이션 발전함에 따라 성능을 개선하기 위해 샤드 키 를 세분화할 수 있습니다.