아파치 드루이드

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

아파치 드루이드는 에릭 체터, 팡진 양, 지안 멀리노, 바딤 오기에베츠키에 의해 2011년 메타마켓츠의 분석 제품을 지원하기 위해 개발된 오픈 소스 데이터베이스이다. 2012년 GPL 라이선스로 공개되었고, 2015년 아파치 라이선스로 변경되었다. 드루이드는 낮은 지연 시간으로 스트리밍 데이터를 수집하고, 1초 미만의 분석 쿼리를 지원하며, 클러스터 구조를 통해 장애 허용 아키텍처를 제공한다. 2019년 벤치마크에서 드루이드는 Hive와 Presto보다 뛰어난 성능을 보였다.

아파치 드루이드 - [IT 관련 정보]에 관한 문서
개요

이미지 준비중입니다.

아파치 드루이드 로고
개발메타마켓
개발자아파치 소프트웨어 재단
저장소github.com/apache/druid
프로그래밍 언어자바
운영 체제크로스 플랫폼
장르분산
실시간
타임 시리즈
컬럼 지향 데이터 스토어
라이선스아파치 라이선스 2.0
웹사이트아파치 드루이드 공식 웹사이트
📚 더 읽어볼만한 페이지
  • NoSQL - 몽고DB
    몽고DB는 2007년 개발되어 2009년 오픈 소스로 전환된 문서 지향적 NoSQL 데이터베이스로, 다양한 데이터 쿼리, 인덱싱, 고가용성, 수평적 확장 기능을 제공하며, 2018년부터 멀티 도큐먼트 ACID 트랜잭션을 지원하고 다양한 에디션과 프로그래밍 언어를 지원한다.
  • NoSQL - 아파치 카산드라
    아파치 카산드라는 아마존 다이나모DB와 구글 빅테이블의 영향을 받아 개발된 오픈 소스 분산 데이터베이스 시스템으로, 가용성과 파티션 허용을 중시하며 선형 확장을 통해 대규모 데이터 처리에 적합하다.
  • 자유 데이터베이스 관리 시스템 - PostgreSQL
    PostgreSQL은 캘리포니아 대학교 버클리 분교의 Ingres 프로젝트에서 시작되어 전 세계 개발자들의 협력을 통해 발전해온 객체 관계형 데이터베이스 관리 시스템(ORDBMS)이다.
  • 자유 데이터베이스 관리 시스템 - SQLite
    SQLite는 D. 리처드 히프가 설계한 서버리스 구조의 임베디드 SQL 데이터베이스 엔진으로, 별도의 DBMS 없이 프로그램에 통합되어 작동하며 전체 데이터베이스를 단일 파일로 저장하는 특징이 있고, 다양한 운영체제와 환경에서 널리 사용된다.
  • 아파치 소프트웨어 재단 프로젝트 - 아파치 루씬
    아파치 루씬은 더그 커팅이 개발한 오픈 소스 전문 검색 라이브러리이며, 텍스트 색인 및 검색 기능을 제공하여 웹 검색 엔진, 퍼지 검색, 추천 시스템 구현 등에 사용된다.
  • 아파치 소프트웨어 재단 프로젝트 - 아파치 하둡
    아파치 하둡은 대용량 데이터를 분산 처리하기 위한 자바 기반의 오픈 소스 프레임워크로, HDFS, 맵리듀스, YARN 등의 모듈로 구성되어 클라우드 환경에서도 사용된다.

2. 역사

드루이드는 2011년 에릭 체터(Eric Tschetter), 팡진 양(Fangjin Yang), 지안 멀리노(Gian Merlino), 바딤 오기에베츠키(Vadim Ogievetsky)에 의해 메타마켓츠(Metamarkets)의 분석 제품을 지원하기 위해 시작되었다. 이 프로젝트는 2012년 10월 GPL 라이선스로 오픈 소스화되었으며, 2015년 2월 아파치 라이선스로 변경되었다.

시간이 지남에 따라 수많은 조직과 기업들이 드루이드를 자사의 백엔드 기술과 연동해왔으며, 커밋 기여자들은 각기 다른 수많은 조직들로부터 유입되었다.

2015년 10월, 임플라이(Imply)는 드루이드로 기업용 제품을 제공하기 시작했다.

2018년 10월, Spicule는 캐노니컬의 주주(Juju) 플랫폼 위에 드루이드의 지원 버전을 출시하였다.

3. 구조

Druid 클러스터 아키텍처
520x520px

드루이드는 완전 배포 시 장애 허용 구조를 지원하는 특수 프로세스(드루이드에서는 '노드'라고 함) 클러스터로 실행되며, 데이터는 중복 저장되어 단일 실패 지점이 없다. 클러스터는 조정 (아파치 주키퍼), 메타데이터 저장 ( MySQL, PostgreSQL, 더비 등), 영구 데이터 백업을 위한 딥 스토리지 시설 ( HDFS, Amazon S3 등)과 같은 외부 종속성을 포함한다.

3.1. 쿼리 관리 (Query Management)

클라이언트 쿼리는 먼저 브로커 노드에 도달하며, 브로커 노드는 해당 쿼리를 적절한 데이터 노드(히스토리컬 노드 또는 실시간 노드)로 전달한다. 드루이드 세그먼트는 분할될 수 있으므로, 들어오는 쿼리는 클러스터의 여러 노드에 저장된 여러 세그먼트 및 파티션(샤딩)의 데이터가 필요할 수 있다. 브로커는 필요한 데이터를 가진 노드를 파악하고, 부분 결과를 병합하여 집계된 결과를 반환한다.

3.2. 클러스터 관리 (Cluster Management)

Architecture of the Druid cluster

완전히 배포(deploy)되는 드루이드는 장애 허용 구조를 지원하기 위한 특수 프로세스(드루이드의 "노드"로 불림)로서 동작하며, 여기서 데이터는 과잉(redundant)하게 저장되며 실패의 단일 지점은 존재하지 않는다. 클러스터에는 조율(아파치 주키퍼), 메타데이터 스토리지(예: MySQL, PostgreSQL, 더비), 딥 스토리지 퍼실리티(예: HFS, 아마존 S3)(영구 데이터 백업용)를 위한 외부 의존성을 포함한다.

과거 노드의 데이터 관리에 관련된 작업은 코디네이터 노드에서 관리한다. 아파치 주키퍼는 모든 노드를 등록하고, 노드 간 통신의 특정 측면을 관리하며, 리더 선출을 제공하는 데 사용된다.

4. 기능 (Features)

* 낮은 지연 시간 (스트리밍) 데이터 수집.
* 임의의 슬라이스 앤 다이스 (slice and dice) 데이터 탐색.
* 1초 미만의 분석 쿼리.
* 근사 및 정확한 계산.

5. 성능 (Performance)

2019년 연구자들은 Hive, Presto, 그리고 드루이드의 성능을 TPC-H 표준을 기반으로 하는 비정규화된 스타 스키마 벤치마크를 사용하여 비교했다. 드루이드는 해시 파티션을 사용하는 테이블을 사용한 "드루이드 최적" 구성과 해시 파티션을 사용하지 않는 "드루이드 비최적" 구성을 모두 사용하여 테스트되었다.

TPC-H 스케일 팩터 30(30GB 데이터베이스), 스케일 팩터 100(100GB 데이터베이스), 스케일 팩터 300(300GB 데이터베이스)을 사용하여 13개의 TPC-H 쿼리를 실행하여 테스트를 수행했다.

👆
좌우로 밀어서 보기
스케일 팩터HivePresto드루이드 최적드루이드 비최적
30256초33초2.09초3.21초
100424초90초6.12초8.08초
300982초452초7.60초20.02초

드루이드의 성능은 드루이드 비최적 구성을 사용했을 때조차 각 시나리오에서 Hive보다 최소 98% 빠르고 Presto보다 최소 90% 빠른 것으로 측정되었다.