Apache Druid vs Redshift

Apache Druid vs Redshift

Redshift는 기존 데이터웨어하우스, Druid는 실시간 스트리밍 분석에 강한 OLAP 스토어예요. 이 문서는 실시간 수집, 데이터 분산, 복제, 인덱싱 전략 등 여러 측면을 비교합니다.

출처: 문서

본문

Druid는 Redshift와 어떻게 비교되나요?

차별점을 이야기하자면, Redshift는 원래 ParAccel(Actian)에서 시작한 기술로, Amazon이 라이선스를 받아 크게 수정한 것입니다.

성능 차이 외에도 몇 가지 기능적 차이가 있어요.

실시간 데이터 수집

Druid는 방대한 양의 스트리밍 데이터에 대한 인사이트 제공에 최적화되어 있어서, 데이터를 실시간으로 로드하고 집계할 수 있습니다.

일반적으로 컬럼 스토어를 포함한 전통적인 데이터웨어하우스는 배치 수집만 지원하고, 정기적인 스트리밍 데이터에는 최적화되어 있지 않습니다.

Druid는 읽기 지향적 분석 데이터 스토어

Druid의 쓰기 시맨틱은 그리 유연하지 않고, 전체 조인(full join)을 지원하지 않아요(큰 테이블과 작은 테이블 간 조인은 지원합니다). 반면 Redshift는 조인과 insert/update 문을 포함한 완전한 SQL 지원을 제공합니다.

데이터 분산 모델

Druid의 데이터 분산은 세그먼트 기반이며, S3나 HDFS 같은 고가용성 "딥(deep)" 스토리지를 활용합니다. 확장(스케일 업/다운)에 방대한 복사 작업이나 다운타임이 필요하지 않아요. 실제로 Historical 프로세스를 몇 개 잃어도 데이터 손실이 발생하지 않습니다. 새 Historical 프로세스는 언제든 "딥" 스토리지에서 데이터를 읽어 복구할 수 있기 때문입니다.

대조적으로 ParAccel의 데이터 분산 모델은 hash 기반입니다. 클러스터를 확장하려면 노드 전체에 데이터를 다시 해싱해야 해서, 다운타임 없이 수행하기 어렵습니다. Amazon Redshift는 다음의 다단계 과정으로 이 문제를 우회합니다.

  • 클러스터를 읽기 전용 모드로 설정
  • 클러스터에서 새 클러스터로 데이터를 복사(병렬로 존재)
  • 트래픽을 새 클러스터로 리다이렉트

복제 전략

Druid는 세그먼트 레벨 데이터 분산을 채택해서, 단계적 스왑 없이도 프로세스를 추가하고 리밸런싱할 수 있습니다. 복제 전략은 모든 복제본을 쿼리에 사용 가능하게 해줘요. 복제는 자동으로 수행되며 성능에 아무런 영향을 주지 않습니다.

ParAccel의 hash 기반 분산은 일반적으로 핫 스페어(hot spare)를 통한 복제를 의미합니다. 이는 데이터 손실 없이 잃을 수 있는 노드 수에 숫자상 한계를 두고, 이 복제 전략은 핫 스페어가 쿼리 부하를 나누도록 돕지 못하는 경우가 많아요.

인덱싱 전략

컬럼 지향 구조와 함께 Druid는 필터가 주어졌을 때 쿼리 실행을 빠르게 하기 위한 인덱싱 구조를 사용합니다. 인덱싱 구조는 저장 오버헤드를 늘리고(뮤테이션을 어렵게도 만들지만), 쿼리를 크게 빠르게 해줘요.

ParAccel은 인덱싱 전략을 사용하지 않는 것으로 보입니다.

더 알아보기 (Learn more)

  • Druid의 쿼리 성능 최적화는 querying 문서에서 확인해 보세요.
  • 데이터 스토리지 아키텍처는 segments 문서를 참고하세요.