MongoDB는 최신 애플리케이션 개발 및 클라우드를 위해 설계된 범용 문서 데이터베이스입니다. 데이터베이스의 확장형 아키텍처는 노드를 추가하여 시스템 부하를 분산시킴으로써 증가하는 수요를 충족할 수 있게 해줍니다.
MongoDB를 학습할 때 접하게 될 주요 개념과 용어는 다음과 같습니다.
MongoDB는 데이터를 JSON 문서로 저장합니다.
문서 데이터 모델은 애플리케이션 코드의 객체와 자연스럽게 매핑되어 개발자가 쉽게 학습하고 사용할 수 있습니다.
JSON 문서의 필드는 문서마다 다를 수 있습니다. 이를 기존의 관계형 데이터베이스 테이블과 비교해보면, 필드를 추가한다는 것은 테이블 자체에 열을 추가하는 것을 의미하며 따라서 데이터베이스의 모든 기록에 영향을 미칩니다.
문서는 계층적 관계를 표현하고 배열과 같은 구조를 저장하기 위해 중첩될 수 있습니다.
문서 모델은 다양한 출처에서 오는 복잡하고 빠르게 변화하는 비정형 데이터를 유연하게 처리할 수 있도록 해줍니다. 이는 개발자가 새로운 애플리케이션 기능을 빠르게 제공할 수 있게 해줍니다.
내부적으로 더 빠른 액세스를 가능하게 하고 더 다양한 데이터 유형을 지원하기 위해 MongoDB는 문서를 Binary JSON 또는 BSON이라는 형식으로 변환합니다. 그러나 개발자 입장에서는 MongoDB는 여전히 JSON 데이터베이스로 간주됩니다.
MongoDB에서 컬렉션은 문서의 그룹입니다.
관계형 데이터베이스에 익숙하다면 컬렉션을 테이블로 생각할 수 있습니다. 하지만 MongoDB의 컬렉션은 훨씬 더 유연합니다. 컬렉션은 별도로 설정하지 않는 한 스키마를 적용하지 않으며 동일한 컬렉션 내의 문서들은 서로 다른 필드를 가질 수 있습니다.
각 컬렉션은 하나의 MongoDB 데이터베이스와 연결됩니다. 특정 데이터베이스에 어떤 컬렉션이 있는지 표시하려면 listCollections 명령을 사용하세요.
높은 가용성을 보장하는 중요한 방법 중 하나는 데이터를 여러 복사본으로 유지하는 것입니다. MongoDB는 높은 가용성을 설계에 내장하고 있습니다.
MongoDB에서 데이터베이스를 생성하면 시스템이 자동으로 최소 두 개의 데이터 복사본을 추가로 생성하며 이를 복제본 세트라고 합니다. 복제본 세트는 최소 세 개 이상의 MongoDB 인스턴스로 구성된 그룹으로 인스턴스 간에 데이터를 지속적으로 복제하여 시스템 장애나 계획된 유지 관리 시에도 중복성을 제공하고 가동 중단을 방지합니다.
최신 데이터 플랫폼은 점점 더 큰 소형 머신 클러스터를 활용하여 빠른 쿼리와 방대한 데이터 세트를 처리할 수 있어야 합니다. 샤딩은 데이터를 여러 머신에 지능적으로 분산하는 것을 의미하는 용어입니다.
MongoDB에서 샤딩의 작동 원리 MongoDB는 컬렉션 수준에서 데이터를 샤딩하여 클러스터 내 샤드 전체에 컬렉션의 문서를 분산합니다. 그 결과 대규모의 애플리케이션도 지원할 수 있는 확장형 아키텍처가 만들어집니다.
인덱스는 쿼리의 효율적인 실행을 지원합니다. MongoDB는 다양한 인덱싱 전략을 제공하며 다중 필드에 대한 복합 인덱스도 포함되어 있습니다. 적절한 인덱스를 선택하면 컬렉션의 모든 문서를 읽지 않고 인덱스를 스캔함으로써 쿼리 속도를 높일 수 있습니다.
어떤 쿼리에 인덱스를 추가하면 이점이 있을지 분석하는 작업은 여전히 필요합니다. 이 분석을 돕는 도구가 Performance Advisor로 쿼리를 분석하고 쿼리 성능을 개선할 인덱스를 제안합니다.
MongoDB는 집계 파이프라인이라는 데이터 처리 파이프라인을 구축할 수 있는 유연한 프레임워크를 제공합니다. 수십 개의 단계와 150개 이상의 연산자 및 표현식을 통해 다양한 구조의 데이터를 대규모로 처리, 변환 및 분석할 수 있습니다. 최근 추가된 유니온 단계를 통해 여러 컬렉션의 결과를 유연하게 집계할 수 있습니다.
MongoDB와 함께 사용할 수 있는 언어는 무엇일까요? [지원되는 언어 목록]에는(https://docs.mongodb.com/drivers/) Node.js, C, C++, C#, Go, Java, Perl, PHP, Python, Ruby, Rust, Scala, Swift 등 다양한 언어가 포함되어 있습니다. 각 언어의 라이브러리는 활발하게 유지 관리되며 새로운 기능, 버그 수정, 보안 패치, 성능 개선이 지속적으로 업데이트됩니다.
몇 가지 유틸리티와 명령
만으로도 인스턴스 상태, 클러스터 작업 및 연결 지표, 하드웨어 지표 등을 확인하여 클러스터의 상태와 성능을 모니터링할 수 있습니다. 모니터링을 통해 문제가 심각해지기 전에 실시간 문제를 감지하고 대응할 수 있습니다.
MongoDB는 오픈 소스 데이터베이스로 시작했으며 MongoDB Community Edition을 통해 여전히 오픈 소스로 사용할 수 있습니다.
MongoDB Enterprise Edition에서는 상용 라이선스를 통해 고급 기능을 사용할 수 있습니다.
MongoDB Atlas는 모든 퍼블릭 클라우드에서 제공되는 MongoDB Enterprise Edition의 데이터베이스 서비스(DBaaS) 버전입니다.
MongoDB Atlas는 Atlas Search, Atlas Vector Search와 같은 내장된 통합 기능뿐만 아니라 데이터의 지리적 위치 파악과 백업을 위한 다양한 고급 기능을 통해 여러 방면으로 확장되었습니다.
이제 MongoDB를 배우면서 접하게 될 몇 가지 용어에 익숙해졌으니 바로 MongoDB Atlas를 사용해 시작해보는 것은 어떨까요? 동시에 포럼, 웨비나부터 MongoDB University의 무료 강좌까지 제공하는 MongoDB community에 가입해보세요. 입문 강좌인 MongoDB Basics 과정부터 시작해보세요.
MongoDB는 다양한 사용 사례를 가진 범용 데이터베이스입니다. MongoDB가 여러분의 애플리케이션에 적합한 선택인지 아직 확신이 서지 않는다면 MongoDB를 선택해야 하는 이유라는 글을 살펴보세요.
MongoDB 기본 시리즈에서 더 많은 정보를 알아보세요.