【アパッチドルイド】

Apache Druid とは?

最終更新:
💡 取り込み中のデータと蓄積したデータを、分散して分析するDB

ストリーミングとバッチのデータを取り込み、分析クエリに使う列指向の分散データベース。セグメント(segment)・インデックス・分散実行などで分析の応答を速めることを目指す。応答時間や取り込み遅延は構成と負荷による。

📌 このページのポイント
Apache Druid:取り込みと問い合わせ Druid(主な処理を抜粋) Kafka等 取り込みタスク 到着データを扱う セグメントを保存 deep storage経由で Historicalへ読み込み Historical 列 Broker 問合せ を配分 橙:取り込み側・Historicalへ問い合わせ Brokerがそれぞれの結果を集計して返す
青の矢印はデータの取り込みとセグメントの保存・読み込み、橙は問い合わせの配分。保存先や管理サービスを簡略化し、Historicalへ保存されるまで問い合わせを待つ図にはしていない。応答時間の保証ではない。
ひよこ ひよこ
Apache DruidってClickHouseと何が違うの?
ペンギン先生 ペンギン先生
どちらも分析に使えるけれど、ClickHouseにもKafkaのデータを取り込む仕組みがあるよ。Druidだけがストリーミングに対応する、という区別ではない。Druidは取り込み、segmentの保存、分散した問い合わせ処理を組み合わせて分析に使うDBなんだ。
ひよこ ひよこ
取り込み中のデータも調べられるの?
ペンギン先生 ペンギン先生
ストリーミング取り込みでは、取り込み側が到着したデータへの問い合わせにも応答できるよ。segmentを保存してHistoricalへ引き継ぐ前のデータも分析に使える、ということだね。ただし、到着から反映までの時間が完全にゼロになるわけではないんだ。
ひよこ ひよこ
速く集計するために、どんな工夫があるの?
ペンギン先生 ペンギン先生
データをsegmentという単位に分け、列ごとに保存する。時間や条件で読むsegmentを絞り、インデックスで該当する行を探し、必要な列を読むんだ。複数の処理先へ問い合わせを振り分けることもできる。ただし、何十億行でも必ず1秒未満、と保証するものではないよ。
ひよこ ひよこ
BrokerとHistoricalは何をするの?
ペンギン先生 ペンギン先生
Brokerは問い合わせを受け、対象のデータを扱う処理先へ分配し、結果をまとめる。Historicalは保存済みのsegmentを読み込み、問い合わせを処理するよ。取り込みの仕事を割り当てるOverlord、配置を管理するCoordinatorなどもあり、役割が分かれた構成なんだ。
ひよこ ひよこ
ダッシュボードに使えば、どんな分析でも最適?
ペンギン先生 ペンギン先生
アクセス数やイベントの集計など、継続的に入るデータを分析する用途があるよ。ただし、問い合わせの形、データ量、取り込み方法、運用できる構成などを確かめて選ぶ。ClickHouseとの柔軟性や速さの優劣を、用途や条件を決めずに断定することはできないね。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Apache Druid」って出てきたら「流れ込むデータと蓄積したデータを分析する分散DB」と思えばだいたいOK!
📖 おまけ:英語の意味
「Apache Druid」 = アパッチ・ドルイド(データベースの名前)
💬 Apache Software Foundationのプロジェクトとして開発されているデータベースの名前だよ。

参考資料

← 用語集にもどる