【アパッチドルイド】
Apache Druid とは?
最終更新:
💡 取り込み中のデータと蓄積したデータを、分散して分析するDB
ストリーミングとバッチのデータを取り込み、分析クエリに使う列指向の分散データベース。セグメント(segment)・インデックス・分散実行などで分析の応答を速めることを目指す。応答時間や取り込み遅延は構成と負荷による。
📌 このページのポイント
- KafkaやKinesisからのストリーミング取り込みと、バッチ取り込みに対応する
- 取り込み中のデータを、確定segmentになる前にも問い合わせられる
- 列指向segment・インデックス・対象の絞り込みで分析を効率化する
- Brokerが問い合わせを振り分け、各処理の結果をまとめて返す
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のプロジェクトとして開発されているデータベースの名前だよ。