Apache Doris は、レポート分析、アドホッククエリ、データレイク上のフェデレーテッドクエリの高速化に優れた、高性能なリアルタイム分析データベースです。
背景情報
Apache Doris の詳細については、「Apache Doris の概要」をご参照ください。
利用シーン
さまざまなソースからのデータが統合および処理された後、通常は Doris などのリアルタイムデータウェアハウスや、Hive、Iceberg、Hudi などのオフラインデータレイクハウスにロードされます。次の図は、このプロセスを示しています。
Apache Doris は、以下のシナリオで広く使用されています:
-
レポート分析
-
リアルタイムダッシュボード
-
社内のアナリストおよびマネージャー向けレポート
-
高同時実行レポート分析 (Customer Facing Analytics):例えば、Web サイトオーナー向けのサイト分析や、広告主向けの広告レポートなどです。通常、ミリ秒レベルのレイテンシーで数千の 1 秒あたりのクエリ数 (QPS) が必要です。
-
-
アドホッククエリ:さまざまなクエリパターンを持つアナリスト向けのセルフサービス分析で、高スループットが求められます。
-
統合データウェアハウスの構築:Doris は、統合データウェアハウスを構築するための単一プラットフォームとして機能し、Spark、Hive、Kudu、Hbase、Phoenix で構成される従来のアーキテクチャを置き換え、ビッグデータソフトウェアスタックを大幅に簡素化します。
-
データレイクフェデレーテッドクエリ:外部テーブルにより、データをコピーすることなく Hive、Iceberg、Hudi 内のデータに対してフェデレーテッド分析を実行でき、クエリパフォーマンスが大幅に向上します。
技術概要
次の図は、2 種類のプロセスのみで構成される Doris アーキテクチャを示しています:
-
フロントエンド (FE):クライアントリクエスト、クエリの解析と計画、メタデータ、ノード管理を処理します。
-
バックエンド (BE):データストレージを管理し、クエリプランを実行します。
両方のプロセスタイプは水平方向にスケールし、クラスタあたり数百台のマシンと数十ペタバイトのストレージをサポートします。整合性プロトコルにより、サービスの高可用性 (HA) とデータの高信頼性が保証され、統合されたアーキテクチャにより、分散システムの運用保守 (O&M) コストが削減されます。
Doris の技術には、5 つの重要な側面があります:
-
Doris は MySQL プロトコルを使用し、MySQL 構文と高い互換性があり、標準 SQL をサポートします。これにより、さまざまなクライアントツールで Doris にアクセスでき、ビジネスインテリジェンス (BI) ツールとシームレスに統合できます。
-
Doris は、列単位でデータをエンコード、圧縮、読み取るカラムナストレージエンジンを使用します。これにより、非常に高い圧縮率が実現され、無関係なデータのスキャンが削減され、I/O と CPU の使用がより効率的になります。
Doris は、データスキャンを削減するための豊富なインデックス構造もサポートしています:
-
ソート済み複合キーインデックス:最大 3 列を複合ソートキーとしてサポートし、高同時実行レポートシナリオで効果的なデータクリッピングを実現します。
-
Z オーダーインデックス:データモデル内のフィールドの任意の組み合わせに対して、範囲クエリを効率的に実行します。
-
Min/Max:数値型の等価クエリや範囲クエリを効果的にフィルタリングします。
-
ブルームフィルター:高カーディナリティ列に対する等価フィルタークリッピングに非常に効果的です。
-
転置インデックス:任意のフィールドを高速に検索できます。
-
-
Doris は、さまざまなシナリオに最適化された複数のストレージモデルをサポートしています:
-
集約キーモデル:同じキーを持つ値列をマージします。このモデルは、事前集約によりパフォーマンスを大幅に向上させます。
-
ユニークキーモデル:キーは一意です。同じキーを持つデータは上書きされるため、行レベルでのデータ更新が可能です。
-
複製キーモデル:ファクトテーブルの詳細情報を保存するためのデータモデルです。
Doris は、手動介入なしで自動的に更新および選択される、強い整合性を持つマテリアライズドビューもサポートしており、メンテナンスコストを大幅に削減します。
-
-
Doris は、超並列処理 (MPP) モデルを使用します。実行は、ノード間およびノード内で並列化されます。また、複数の大規模テーブルの分散シャッフル結合をサポートし、複雑なクエリをより適切に処理します。次の図は、クエリエンジンを示しています。

Doris クエリエンジンは、ベクトル化エンジンです。すべてのメモリ構造は列形式で配置されます。この設計により、仮想関数呼び出しが大幅に削減され、キャッシュヒット率が向上し、SIMD 命令が効率的に使用されます。ワイドテーブル集約シナリオでは、そのパフォーマンスは非ベクトル化エンジンの 5 ~ 10 倍優れています。
-
Doris は、ルールベースオプティマイザ (RBO) とコストベースオプティマイザ (CBO) を組み合わせたハイブリッド最適化戦略を使用します。RBO は、定数畳み込み、サブクエリの書き換え、述語プッシュダウンをサポートします。CBO は、結合の並べ替えをサポートします。CBO は継続的に最適化されており、より正確な統計の収集と導出、およびより精密なコストモデル推定に焦点を当てています。
Doris は、適応的クエリ実行テクノロジーを使用して、ランタイム統計に基づいて実行プランを動的に調整します。例えば、ランタイムフィルターは、実行時にフィルターを生成し、プローブ側にプッシュします。フィルターは、プローブ側の最下位レベルのスキャンノードに自動的にプッシュダウンすることもでき、データ量を大幅に削減し、結合パフォーマンスを高速化します。次のフローチャートをご参照ください。
Doris ランタイムフィルターは、In、Min、Max、ブルームフィルターをサポートします。
このトピックのコンテンツと画像は、「Apache Doris の概要」を出典としています。