카우치베이스 카펠라

JSON에서 실시간 분석 간소화하기: 카펠라 컬럼형 대 ClickHouse

데이터의 원활한 흐름을 보장하는 것은 효과적인 분석과 의사결정을 위해 매우 중요합니다. 오늘날에는 데이터가 비정형화되고 중첩되는 경우가 많기 때문에 데이터베이스 선택이 처리 효율성과 쿼리 성능을 최적화하는 데 중요한 역할을 합니다.

이 블로그 게시물에서는 NoSQL 데이터베이스인 MongoDB에서 관계형 데이터베이스인 ClickHouse로 데이터를 수집하는 프로세스를 살펴봅니다. 카우치베이스 카펠라 컬럼라는 NoSQL 분석 데이터베이스를 사용합니다. 필요한 전처리, 수집 후 조인을 위한 쿼리 효율성, 실시간 데이터 변경을 처리하는 방식에 초점을 맞출 것입니다. 또한, 중첩된 데이터 작업을 간소화하여 ClickHouse와 같은 관계형 데이터베이스의 복잡성에 비해 저장과 쿼리가 더 쉬워지는 Capella Columnar의 활용 방법을 보여드리겠습니다.


TL;DR

ClickHouse는 중첩된 데이터의 중첩 해제로 인해 데이터 수집을 위한 광범위한 전처리가 필요하며, 새 필드를 추가하려면 추가 테이블을 만들어야 할 수 있습니다. 단일 몽고DB 컬렉션의 데이터를 별도의 테이블로 분할해야 하므로 쿼리를 위해 조인이 필요하며, 이는 리소스 집약적일 수 있습니다. 또한 중첩된 새 필드를 실시간으로 추가하려면 별도의 테이블을 다시 만들고 스키마를 업데이트해야 하므로 파이프라인이 중단될 가능성이 있고 수동 개입이 필요합니다. 반면, Capella Columnar는 중첩된 데이터에 대한 전처리가 필요하지 않아 프로세스를 간소화합니다. 별도의 테이블이나 조인 없이도 MongoDB 컬렉션에서 직접 수집할 수 있으며, 추가 처리 없이 중첩된 새 필드 추가와 같은 실시간 변경 사항을 자동으로 반영합니다.


카펠라 컬럼이란 무엇인가요?

이 마이그레이션 데모를 살펴보기 전에 Capella Columnar에 대한 심층적인 개요 동영상을 시청하거나 다음 내용을 읽어보실 수 있습니다. 최근 발표 운영 및 실시간 분석 워크로드를 통합하는 이 새로운 기술을 소개합니다:

샘플 몽고DB 데이터

이 데모의 범위에서는 샘플 MongoDB 컬렉션을 사용했습니다. 극장sample_mflix 데이터베이스. 

다음은 극장 컬렉션의 샘플 문서입니다:

몽고DB에서 카펠라 컬럼으로 데이터 수집

카펠라 컬럼러의 카프카 링크를 활용하여 몽고DB 컬렉션의 데이터가 이미 게시되어 있는 카프카 주제에서 데이터를 수집할 수 있습니다. 이를 위해서는 사용자가 Kafka 파이프라인을 설정해야 하며, 여기서 MongoDB 데이터를 Kafka 토픽으로 퍼널링해야 합니다.

1단계 - 몽고DB를 Kafka에 연결하기

    • 다운로드 데베지움 몽고DB 소스 커넥터
    • 독립형 또는 분산 모드에서 Kafka Connect 실행하기
    • 연결에 필요한 연결 속성과 함께 POST 요청을 보내세요.
      MongoDB

컬 요청의 자리 표시자를 대괄호(예: 대괄호로 표시됨)로 바꾸어 주세요, <value>)를 특정 사용 사례에 적합한 값으로 설정하세요.

그 후에는 데이터가 Kafka 토픽으로 이동합니다. 데이터는 Confluent Kafka 주제에 표시됩니다. mongo_columnar_topic.sample_mflix.theaters:

이제 카프카 토픽의 데이터를 카펠라 컬럼을 사용하여 카프카 토픽의 데이터를 컬렉션으로 가져올 수 있습니다.

2단계 - 카펠라 컬럼에서 링크 만들기

이 예에서는 Confluent Kafka를 Kafka 플레이버로 사용하고 있으며, Capella Columnar는 Amazon MSK도 지원합니다.

3단계 - 링크된 컬렉션 만들기

링크를 만든 후에는 데이터가 저장될 링크된 컬렉션을 만들어야 합니다:

필드는 자체 설명이 필요 없으며, 필드 기본 키는 Kafka 주제에 있는 MongoDB 문서의 기본 키 경로입니다. 주어진 예제에서 MongoDB 문서의 기본 키는 다음과 같습니다. objectId:

CDC를 활성화하면 Capella Columnar 엔진이 이해하는 문서 형식에 대한 합의가 이루어집니다. 현재는 소스 커넥터로 Debezium만 지원합니다.

4단계 - 링크 연결

컬렉션을 만든 후에는 다음을 수행해야 합니다. 연결 링크를 클릭합니다.

링크가 연결되면 아래 쿼리에서 볼 수 있듯이 데이터가 유입되어야 합니다.

MongoDB에서 Capella Columnar로의 데이터 수집은 원활하고 직관적이었습니다. 이제 ClickHouse와 같은 관계형 데이터베이스에서 직면하는 문제에 주목해 보겠습니다.

MongoDB에서 ClickHouse로의 데이터 마이그레이션

ClickHouse는 관계형 데이터베이스로, 문서 기반 및 중첩된 데이터 구조로 인해 MongoDB에서 직접 데이터를 마이그레이션할 수 없습니다. 이를 위해서는 추가적인 데이터 변환 단계가 필요합니다. MongoDB 데이터가 중첩이 심하거나 추가 필드가 도입된 경우 이러한 변환의 복잡성이 증가하며, 이러한 변경 사항을 관리하기 위해 추가 테이블을 만드는 등의 조정이 필요합니다.

ClickHouse에서 MongoDB 컬렉션용 테이블 만들기

ClickHouse에 매핑되는 테이블을 만들려면 다음과 같이 하세요. MongoDB 컬렉션에는 다음 구문을 사용합니다:

여기서 참조하는 몽고DB 컬렉션은 다음과 같아야 합니다. 중첩되지 않음 를 가리키기 전에

우리는 극장 컬렉션에 저장하며, 우리의 목표는 이 데이터를 ClickHouse에서 구조화된 관계형 형식으로 표현하는 것입니다.

ClickHouse는 중첩된 필드를 지원하지 않으므로, 중첩된 필드를 처리하기 위해 세 개의 테이블을 만들어야 합니다. 극장 데이터에 이러한 스키마를 적용합니다:

    • 극장: _id, theaterId
    • 극장_위치_주소: 거리1, 도시, 주, 우편번호
    • 극장_위치_지역유형, 좌표

전처리

데이터를 준비하기 위해 먼저 MongoDB 측에서 전처리를 수행하여 필요한 필드의 중첩을 해제합니다. 여기에는 중첩된 필드를 추출하여 별도의 컬렉션으로 플랫화하기 위한 MongoDB 파이프라인을 생성하는 작업이 포함됩니다. 주소 그리고 지리적극장 테이블을 직접 만들 수 있습니다.

MongoDB용 파이프라인 주소 컬렉션:

다음 대상 파이프라인 지리적 컬렉션:


ClickHouse에서 테이블 만들기

전처리가 완료되면 ClickHouse에서 해당 테이블 3개를 생성합니다:

생성할 쿼리 극장:

생성할 쿼리 극장의_위치_주소:

생성할 쿼리 극장_위치_지역:

MongoDB에서 ClickHouse로 데이터 수집을 완료했으니, 이제 두 시스템에서 실시간 데이터 변경이 어떻게 처리되는지 살펴보겠습니다. ClickHouse에서 직면한 문제와 비교하여 Capella Columnar에서 이러한 변경 사항을 관리하는 것이 얼마나 쉬운지 살펴보겠습니다.

실시간 변경 사항은 어떻게 처리되나요?

몽고DB 측에서 수정

MongoDB에서 문서 하나를 변경하고 중첩된 소유자 필드를 추가해 보겠습니다.

카펠라 컬럼의 실시간 CDC 변경 사항

추가 단계가 필요하지 않습니다. 특정 문서를 쿼리하면 변경 사항이 반영되는 것을 확인할 수 있습니다:

ClickHouse 설정

ClickHouse는 변경 사항을 직접 가져오려고 할 때 파이프라인이 끊어지기 때문에 실시간 변경에 어려움을 겪고 있습니다.

업데이트된 데이터를 가져오려면 소유자 필드를 사용하려면 ClickHouse에 다른 테이블을 만들어야 합니다. 먼저, 새 몽고DB 컬렉션을 만들고 여기에 소유자 필드가 중첩되지 않은 경우 ClickHouse에서 해당 테이블을 정의합니다.

소유자 컬렉션을 생성하기 위한 MongoDB의 파이프라인:

생성하기 소유자 테이블을 클릭합니다:

이제 데이터를 쿼리하는 단계로 넘어가면서, ClickHouse에서는 간단한 쿼리라도 실행하려면 원본 데이터의 중첩을 해제하기 위해 서로 다른 테이블을 생성했기 때문에 데이터를 서로 연결해야 한다는 점에 유의해야 합니다. 반면, Capella Columnar는 이러한 쿼리를 손쉽게 처리하므로 추가 단계가 필요하지 않습니다.

카펠라 컬럼형과 클릭하우스에서 데이터 쿼리하기

모든 theaterId 그리고 street1 여기서 geo 유형포인트 클릭하우스와 카펠라 컬럼에서 모두 사용할 수 있습니다.

카펠라 컬럼에 대한 쿼리:

ClickHouse에 대한 쿼리:

ClickHouse와 카펠라 컬럼 비교

매개변수 ClickHouse 카펠라 칼럼
데이터 수집 중첩된 데이터의 중첩 해제로 인해 광범위한 사전 처리가 필요하며, 필드를 열에 추가하면 추가 테이블을 만들어야 할 수 있습니다. 중첩된 데이터에는 전처리가 필요하지 않습니다.
스키마 및 데이터 변환 단일 몽고DB 컬렉션의 데이터를 별도의 테이블로 분할해야 하며, 쿼리를 위해 조인이 필요하므로 비용이 많이 들 수 있습니다. 별도의 테이블이나 조인 없이도 MongoDB 컬렉션에서 직접 데이터를 수집할 수 있습니다.
실시간 데이터 변경 사항 중첩된 새 필드를 추가하려면 데이터의 중첩을 해제하기 위해 별도의 테이블을 다시 만들어야 하므로 스키마 업데이트와 복잡한 변환이 필요할 수 있습니다.

이로 인해 파이프라인이 중단되고 수동 개입이 필요합니다.

중첩된 새 필드 추가와 같은 실시간 변경 사항은 추가 처리 없이 자동으로 반영됩니다.

결론

요약하면, Couchbase Capella는 중첩된 MongoDB 데이터를 수집하고 쿼리하는 보다 간소화된 접근 방식을 제공하여 전처리를 최소화하고 실시간 변경 사항을 쉽게 처리할 수 있습니다. 반면, ClickHouse는 광범위한 데이터 변환과 스키마 조정이 필요하므로 복잡한 중첩 구조를 관리하기에는 효율성이 떨어집니다. 실시간 데이터와 중첩된 형식을 다루는 환경에서는 Capella Columnar가 더 유연하고 효율적인 선택임을 입증합니다.

참조

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

작성자

게시자 아유시 트리파티

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.