MongoDB는 오픈 소스 NoSQL 데이터베이스 시스템으로, 비관계형 데이터베이스 모델을 기반으로 한다. MongoDB는 문서 지향적 데이터베이스로 분류되며, 유연한 스키마를 가지고 있어 다양한 형태의 데이터를 저장하고 처리할 수 있다.
NoSQL?
JSON과 유사한 BSON(Binary JSON) 형식으로 데이터를 저장하며, 대용량 데이터와 빠른 읽기/쓰기를 필요로 하는 웹 애플리케이션과 모바일 앱에서 주로 사용된다.
첫째로, BSON 문서에는 순수한 JSON으로는 표현할 수 없는 날짜(Date)나 이진(Binary) 객체가 포함될 수 있습니다.
둘째로, 각 프로그래밍 언어에는 고유한 개체 의미 체계가 있습니다. 예를 들어 JSON 객체는 순서가 있는 키를 가지지만, Python dictionaries(JavaScript 객체에 가장 유사한 네이티브 데이터 구조)은 순서가 없습니다. 숫자 및 문자열 데이터 유형의 차이도 발생할 수 있습니다.
셋째로, BSON은 JSON에 네이티브로 존재하지 않는 다양한 숫자 유형을 지원하며, 많은 언어에서 이를 다르게 표현합니다.
문서(Document) 단위로 데이터를 저장하며, 여러 필드와 값으로 구성됩니다. 각 문서는 고유한 식별자인 ObjectId를 가지며, 필요에 따라 중첩된 문서와 배열을 포함할 수 있습니다. 이러한 유연한 데이터 모델은 데이터 구조의 변경이 자유롭고, 스키마 마이그레이션 없이 데이터를 업데이트할 수 있게 합니다.
다양한 기능을 제공하여 개발자들이 데이터를 쉽게 다룰 수 있도록 합니다. 강력한 쿼리 기능을 제공하여 데이터를 검색, 정렬, 필터링할 수 있으며, 인덱스를 활용하여 검색 성능을 최적화할 수 있습니다. 또한, 풍부한 집계 기능을 제공하여 데이터의 그룹화, 합계, 평균 등의 계산을 수행할 수 있습니다.
확장성이 우수한 데이터베이스 시스템입니다. 여러 서버로 클러스터를 구성하여 데이터를 분산 저장하고 처리할 수 있으며, 데이터의 복제와 자동 장애 조치 기능을 제공하여 데이터의 가용성과 안정성을 보장합니다. 또한, 클라우드 환경에서 쉽게 배포하고 관리할 수 있도록 클라우드 네이티브 기능을 제공합니다.
다양한 개발 언어와 프레임워크에서 사용할 수 있으며, 활발한 커뮤니티와 풍부한 문서화된 자료, 다양한 도구와 드라이버를 제공하여 개발자들의 편의성을 높여줍니다.
Spring Data MongoDB의 주요 기능 영역은 MongoDB DBCollection과 상호 작용하고 리포지토리 스타일 데이터 액세스 계층을 쉽게 작성하기 위한 POJO 중심 모델입니다.