DataBase/MongoDB 8

MongoDB Compound Index 제대로 이해하고 성능까지 비교해보자.

NoSQL은 유연한 스키마와 수평 확장이 강점인 데이터베이스입니다.하지만 대용량 데이터를 효과적으로 처리하고, 원하는 쿼리 성능을 확보하기 위해서는 관계형 데이터베이스와 마찬가지로 인덱스 설계가 매우 중요하다고 생각합니다.특히, 하나의 조건만으로는 부족할 때 여러 필드를 동시에 고려할 수 있는 `Compound Index`(복합 인덱스)는 매우 강력한 도구가 될 수 있습니다. Compound Index(복합 인덱스) 란? 🤔복합 인덱스는 말 그대로 두 개 이상의 필드를 조합해서 만든 인덱스입니다.MongoDB에서는 다음과 같이 생성할 수 있습니다.db.order.createIndex({ userId: 1, orderDate: -1 })(이 인덱스는 userId를 오름차순, orderDate를 내림차..

DataBase/MongoDB 2025.06.21

[MongoDB] Single Purpose Aggregation: 간단한 집계 작업

MongoDB의 Aggregation 방식 중 간단한 함수 작업이 가능한 Single Purpose Aggregation Methods에 대해 알아보겠습니다. ✍️  Single Purpose Aggregation Methods란?Single Purpose Aggregation Methods는 MongoDB에서 특정한 집계 작업을 간단하고 효율적으로 수행하기 위해 제공되는 집계 메서드입니다.이 메서드들은 단일 작업에 초점을 맞추며, 복잡한 파이프라인을 구성하지 않고도 간단한 집계 작업을 처리할 수 있습니다.대표적인 Single Purpose Aggregation Methods는 다음과 같습니다:count()distinct()group()mapReduce() (이전 글에서 다룬 내용) 각 메서드에 대한 설..

DataBase/MongoDB 2024.12.31

[MongoDB] Map-Reduce: 대량 데이터 처리의 유연한 방법

이번 글에서는 MongoDB Map-Reduce 방식에 대해 알아보겠습니다.👀 Map-Reduce란?Map-Reduce는 대량의 데이터를 병렬로 처리하고 요약하는 데 사용하는 데이터 처리 방식입니다.MongoDB에서 Map-Reduce는 데이터를 그룹화하거나 집계하는데 활용되며, JavaScript 함수를 사용해 데이터를 변환(map)하고, 결과를 결합(reduce)하여 최종 결과를 생성합니다.Map-Reduce의 기본 구조Map-Reduce는 크게 두 단계로 구성됩니다.Map 단계데이터를 특정 키와 값으로 매핑합니다. 각 문서가 처리되어 키-값 쌍이 생성됩니다.Reduce 단계Map 단계에서 생성된 데이터를 키별로 그룹화하고 요약 작업을 수행합니다.간단한 Map-Reduce 예제아래 예제는 Mongo..

DataBase/MongoDB 2024.12.29

[MongoDB]Aggregation Framework: 효율적인 데이터 처리와 분석

MongoDB Aggregation은 데이터를 효율적으로 처리하고 분석할 때 매우 강력한 도구입니다.이 글에서는 Aggregation에 대해 정리해 보겠습니다. 👩🏻‍💻 Aggregation이란?Aggregation은 데이터를 가공하거나 요약하여 원하는 결과를 얻는 작업을 말합니다.SQL에서는 GROUP BY, HAVING, SUM() 같은 명령어로 비슷한 작업을 할 수 있지만, MongoDB는 Aggregation Framework를 통해 훨씬 유연하고 강력한 방식으로 데이터를 처리할 수 있습니다.  Aggregation의 주요 방식Aggregation Framework: 단계별로 데이터를 처리하는 파이프라인 방식.Map-Reduce: 대량의 데이터를 병렬로 처리하는 방식.Single Purpos..

DataBase/MongoDB 2024.12.27

MongoDB 인덱스와 인덱싱 전략 이해하기

데이터가 많아질수록 찾고자 하는 특정 데이터를 빠르게 조회하는 것이 중요해집니다.만약 인덱스가 없다면, 데이터베이스는 모든 문서를 처음부터 끝까지 읽어가며 일일이 비교해야 합니다. 이렇게 되면 데이터가 많을 때는 조회 속도가 매우 느려지겠죠?🤔 인덱스가 있으면 지정한 필드에 대한 위치를 미리 알고 있기 때문에 빠르게 찾을 수 있습니다.이 글에서 MongoDB의 인덱스에 대해 알아보겠습니다.  동작 원리MongoDB의 인덱스는 B-트리 구조로 만들어집니다.이는 데이터가 오름차순이나 내림차순으로 정렬된 트리 구조로 특정 값에 접근할 때 트리의 높이에 비례하여 빠르게 이동할 수 있습니다. 이렇게 만들어진 인덱스 덕분에 특정 값을 탐색하거나 범위 조회가 가능해지며 이 과정에서 많은 시간을 절약할 수 있습니다...

DataBase/MongoDB 2024.10.31

[MongoDB] Spring Boot에서 임베디드 MongoDB를 사용하는 방법

MongoDB를 사용하며 Test 할 때 어떻게 작업할지 고민하다가 Embedded MongoDB가 있다는 사실을 알고 적용해 보았습니다. 임베디드 MongoDB란?임베디드 MongoDB는 테스트 환경에서 MongoDB를 별도로 설치하지 않고도 MongoDB 서버를 실행할 수 있는 라이브러리입니다.이를 통해 단위 테스트 및 통합 테스트를 보다 간편하게 작성할 수 있습니다. 의존성 추가하기Spring Boot 프로젝트에 임베디드 MongoDB를 추가하려면 build.gradle 파일에 다음 의존성을 추가합니다.dependencies { // Other dependencies... testImplementation 'de.flapdoodle.embed:de.flapdoodle.embed.mongo..

DataBase/MongoDB 2024.06.30

[MongoDB] _class 필드 개념과 제거 방법

MongoDB 에서 데이터를 입력하는데 _class라는 값이 입력되었다. (이게 모지😮)_class에 대해 알아보고 제거하는 방법도 알아보겠습니다! '_class' 필드란 무엇인가?MongoDB는 NoSQL 데이터베이스로 JSON과 유사한 BSON 형식으로 데이터를 저장합니다.MongoDB는 스키마가 없으므로 데이터를 유연하게 저장할 수 있지만, 애플리케이션의 객체 지향 구조와 MongoDB의 문서 구조를 매핑하는 과정에서 추가적인 메타 데이터가 필요할 수 있습니다. 그중 하나가 '_class' 필드입니다. '_class' 필드의 역할객체 매핑'_class' 필드는 Spring Data MongoDB와 같은 ODM(Object-Document Mapping) 프레임워크에서 사용됩니다.이 필드는 Mong..

DataBase/MongoDB 2024.06.29

MongoDB란?

MongoDB 란?MongoDB는 NoSQL 데이터베이스 중 하나로 문서 지향(Document-Oriented) 데이터베이스입니다.데이터를 JSON과 유사한 BSON(Binary JSON) 형식으로 저장합니다.MongoDB는 유연한 스키마 설계와 수평적 확장이 용이한 특성 덕분에 대규모 데이터 처리와 복잡한 데이터 구조를 다루기 적합합니다.  MongoDB 주요 용어문서(Document)MongoDB에서 데이터는 BSON 형식의 문서로 저장됩니다.각 문서는 필드와 값의 쌍으로 이루어지며, 값은 다른 문서, 배열, 기본 데이터 타입 등을 포함할 수 있습니다.JSON과 유사하지만, BSON은 바이너리 형식으로 저장되어 더 빠른 접근과 더 많은 데이터 타입을 지원합니다.컬렉션(Collection)컬렉션은 여러..

DataBase/MongoDB 2024.06.16