すべてのプロダクト
Search
ドキュメントセンター

E-MapReduce:Doris

最終更新日:Aug 15, 2026

Apache Doris は高性能なリアルタイム分析データベースで、レポート分析、アドホッククエリ、およびデータレイク上の連合クエリの高速化に優れています。

背景

Apache Doris の詳細については、「Apache Doris の概要」をご参照ください。

シナリオ

さまざまなソースのデータを統合して処理した後、通常は Doris などのリアルタイムデータウェアハウスと、Hive、Iceberg、Hudi などのオフラインデータレイクハウスにロードします。次の図は、このプロセスを示しています。Apache Doris

Apache Doris は、次のシナリオで広く使用されています。

  • レポート分析

    • リアルタイムダッシュボード。

    • 社内のアナリストおよびマネージャー向けのレポート。

    • 高同時実行のレポート分析 (Customer Facing Analytics): Web サイト運営者向けのサイト分析や、広告主向けの広告レポートなどです。通常、ミリ秒レベルのレイテンシーで数千の秒間クエリ数 (QPS) が必要になります。

  • アドホッククエリ: クエリパターンが可変で高いスループットを必要とする、アナリスト向けのセルフサービス分析。

  • 統合データウェアハウスの構築: Doris は統合データウェアハウスを構築するための単一プラットフォームとして機能し、Spark、Hive、Kudu、HBase、Phoenix で構成される従来のアーキテクチャを置き換えることで、ビッグデータのソフトウェアスタックを大幅に簡素化します。

  • データレイクの連合クエリ: 外部テーブルにより、データをコピーせずに Hive、Iceberg、Hudi のデータ上で連合分析を実行でき、クエリ性能が大幅に向上します。

技術概要

次の図は、2 種類のプロセスのみで構成される Doris アーキテクチャを示しています。Doris架构

  • フロントエンド (FE): クライアントリクエスト、クエリの解析とプランニング、メタデータ、ノード管理を処理します。

  • バックエンド (BE): データストレージを管理し、クエリプランを実行します。

両方のプロセスは水平方向にスケールし、1 クラスターあたり数百台のマシンと数十 PB のストレージをサポートします。整合性プロトコルにより、サービスの高可用性 (HA) とデータの高信頼性が確保されます。また、統合アーキテクチャにより、分散システムの運用保守 (O&M) コストが削減されます。

Doris の技術には、次の 5 つの主要な側面があります:

  • Doris は MySQL プロトコルを使用し、MySQL 構文との高い互換性があり、標準 SQL をサポートします。これにより、さまざまなクライアントツールから Doris にアクセスでき、Business Intelligence (BI) ツールともシームレスに統合できます。

  • Doris は列指向ストレージエンジンを使用し、列単位でデータのエンコード、圧縮、読み取りを行います。これにより非常に高い圧縮率を実現し、無関係なデータのスキャンを削減することで、I/O と CPU をより効率的に使用できます。

    Doris は、データスキャンを削減するための豊富なインデックス構造もサポートしています:

    • 複合ソートキーインデックス: 最大 3 つの列を複合ソートキーとしてサポートし、高同時実行のレポートシナリオにおける効果的なデータクリッピングを可能にします。

    • Z オーダーインデックス: データモデル内の任意のフィールドの組み合わせに対して、範囲クエリを効率的に実行します。

    • Min/Max: 数値型に対する等価クエリおよび範囲クエリを効果的にフィルタリングします。

    • ブルームフィルター: 高カーディナリティ列に対する等価フィルターのクリッピングに非常に効果的です。

    • 転置インデックス: 任意のフィールドで高速な検索を可能にします。

  • Doris は、異なるシナリオに最適化された複数のストレージモデルをサポートしています:

    • 集計キーモデル: 同一キーの値列をマージします。このモデルは、事前集計により性能を大幅に向上させます。

    • 一意キーモデル: キーは一意です。同一キーのデータは上書きされるため、行レベルのデータ更新が可能になります。

    • 重複キーモデル: ファクトテーブルの詳細を格納するためのデータモデルです。

    Doris は、手動操作なしで自動的に更新および選択される強整合性のマテリアライズドビューもサポートしており、保守コストを大幅に削減します。

  • Doris は超並列処理 (MPP) モデルを使用します。実行はノード間および各ノード内で並列化されます。また、複数の大規模テーブル間での分散シャッフル結合もサポートし、複雑なクエリをより適切に処理します。次の図は、クエリエンジンを示しています。Query

    Doris クエリエンジンはベクトル化エンジンです。すべてのメモリ構造は列指向レイアウトで配置されます。この設計により、仮想関数呼び出しが大幅に削減され、キャッシュヒット率が向上し、SIMD 命令を効率的に活用できます。ワイドテーブルの集計シナリオでは、非ベクトル化エンジンと比べて 5~10 倍の性能を発揮します。

  • Doris は、ルールベースオプティマイザ (RBO) とコストベースオプティマイザ (CBO) を組み合わせたハイブリッド最適化戦略を使用します。RBO は、定数畳み込み、サブクエリの書き換え、述語プッシュダウンをサポートします。CBO は結合の並べ替えをサポートします。CBO は継続的に最適化されており、より正確な統計情報の収集と導出、およびより精緻なコストモデル推定に注力しています。

Doris は適応的クエリ実行の技術を使用し、ランタイム統計に基づいて実行プランを動的に調整します。例えば、ランタイムフィルターは実行時にフィルターを生成し、プローブ側へプッシュします。このフィルターは、プローブ側の最下位レベルのスキャンノードへ自動的にプッシュダウンすることもでき、次のフローチャートに示すように、データ量を大幅に削減して結合性能を向上させます。AQE Doris ランタイムフィルターは In、Min、Max、およびブルームフィルターをサポートします。

説明

このトピックの内容および画像は、「Apache Doris の概要」から引用しています。