검색
검색
공개 노트 검색
회원가입로그인

9장: 집계 프레임워크: 데이터 처리와 분석

Aggregation Framework: 데이터 처리와 분석

MongoDB를 실제 업무에서 활용하다 보면 단순한 데이터 조회 이상의 작업, 즉 대규모 데이터 집합에서 의미 있는 정보를 추출해야 하는 상황이 자주 발생합니다. 이런 목적을 위해 MongoDB는 강력한 집계(aggregation) 기능을 지원하며, 그 중심에는 Aggregation Framework가 있습니다. 이 장에서는 Aggregation Framework의 구조와 기본 문법, 그리고 실제로 데이터를 어떻게 분석하는 데에 적용할 수 있는지 실무적으로 안내합니다.

Aggregation Framework의 핵심 개념

Aggregation은 여러 도큐먼트에 분포된 데이터를 가공, 요약, 재조합하여 하나의 통계적 결과나 리포트로 만들어내는 과정입니다. 관계형 데이터베이스의 GROUP BY, SUM(), COUNT()와 유사하지만, MongoDB에서는 이를 더욱 유연하게, 그리고 다양한 스테이지별로 처리할 수 있습니다.

MongoDB는 대표적으로 세 가지 집계 방식을 지원합니다. 그 중 가장 널리 쓰이고 성능이 뛰어난 방식이 바로 'Aggregation Pipeline'입니다. Pipeline 모델은 데이터를 여러 개의 처리 단계(스테이지)로 나누어 순차적으로 가공하는데, 각 스테이지는 작은 명령 단위로 설계되어 있어 복잡한 데이터 분석을 직관적으로 구현할 수 있습니다.

Aggregation Pipeline: 단계별 데이터 가공

Aggregation Pipeline은 일련의 연속된 작업 단계로 구성됩니다. 각 단계는 하나의 작업만 수행하며, 대표적인 스테이지로는 $match, $group, $sort, $project, $limit, $lookup 등이 있습니다.

  • $match: 특정 조건에 맞는 데이터만 선별합니다. 일반적인 find와 유사하게 동작하지만, 집계 파이프라인의 첫 관문으로 자주 사용됩니다.

  • $group: 지정한 필드를 기준으로 데이터를 한데 묶고, 그 안에서 합계, 평균, 최대/최소 등 집계 함수를 적용할 수 있습니다.

  • $sort: 데이터를 정렬합니다. 집계의 마지막 단계에 많이 쓰입니다.

  • $project: 원하는 필드만 골라 새로운 형태의 결과를 만듭니다.

  • $limit & $skip: 결과셋의 개수를 제어하거나, N번째부터 결과를 잘라낼 때 쓰입니다.

  • $lookup: SQL의 JOIN과 유사하게, 다른 컬렉션의 데이터와 결합이 필요할 때 사용됩니다.

단계별로 원하는 만큼 스테이지를 쌓아 복잡한 데이터 변환, 필터링, 통계를 자유롭게 구현할 수 있습니다.

집계 파이프라인 예시

아래는 주문(order) 데이터에서 상태가 '완료'인 주문만 추려 월별로 합계 금액을 집계하는 예시입니다.

// 월별 총 주문 금액 집계 예시

db.orders.aggregate([
  { $match: { status: "completed" } },
  { $group: {
      _id: { month: { $month: "$createdAt" } },
      totalAmount: { $sum: "$amount" },
      count: { $sum: 1 }
    }
  },
  { $sort: { "_id.month": 1 } }
])

이 예제에서 $match 스테이지는 완료된 주문만 선별합니다. $group 스테이지는 각 월(month)별로 총 금액(totalAmount)과 주문 수(count)를 계산합니다. 마지막으로 $sort 스테이지가 월 단위로 결과를 정렬합니다.

Aggregation Framework의 실전 활용 팁

Aggregation Pipeline은 다양한 실전 분석 시나리오에 응용이 가능합니다.

  • 서비스 이용 추이 통계, 매출 분석, 사용자 그룹별 행동 패턴 분석 등 비즈니스 인사이트 도출이 필요할 때 강력합니다.

  • 조인($lookup) 기능을 통하면 여러 컬렉션을 합쳐 복합 리포트나 통합 분석을 쉽게 구현할 수 있습니다.

  • 집계를 통한 데이터 요약 후, 결과를 별도의 컬렉션에 저장하여 대시보드용 데이터 마트를 구축하는 활용도 흔합니다.

파이프라인의 각 스테이지는 독립적으로 설계되어 있어, 단계별로 디버깅과 성능 튜닝도 손쉽게 진행할 수 있습니다. 대용량 데이터 환경에서도 뛰어난 성능을 발휘하며, 기존의 map-reduce나 단일 목적 집계 메소드에 비해 직관적이고 확장성이 뛰어납니다.

MongoDB의 Aggregation Framework를 마스터한다면, 데이터베이스 자체를 하나의 강력한 분석 엔진으로 활용하는 문을 열게 됩니다. 복잡한 쿼리도 파이프라인으로 깔끔하게 설계해, 변화하는 비즈니스 요구를 민첩하게 데이터에서 풀어내는 경험을 할 수 있습니다.

공유하기
카카오로 공유하기
페이스북 공유하기
트위터로 공유하기
url 복사하기
조회수 : 17
heart