メインコンテンツまでスキップ
に最終更新

レイクハウスの概要

レイクハウスは、データレイクとデータウェアハウスの利点を組み合わせた、現代的なビッグデータソリューションです。データレイクの低コストと高い拡張性に、データウェアハウスの高性能と強力なデータガバナンス機能を組み合わせることで、ビッグデータ時代のさまざまなデータを効率的かつ安全に、品質を管理しながら保存、処理、分析できます。標準化されたオープンなデータ形式とメタデータ管理を通じて、リアルタイムデータと履歴データ、バッチ処理とストリーム処理を統合し、企業向けビッグデータソリューションの新たな標準になりつつあります。

Doris のレイクハウスソリューション​

Doris は、拡張可能なコネクターフレームワーク、コンピュートとストレージを分離したアーキテクチャ、高性能なデータ処理エンジン、データエコシステムに対するオープン性を通じて、優れたレイクハウスソリューションを提供します。

Doris のレイクハウスアーキテクチャ

柔軟なデータアクセス​

Doris は、拡張可能なコネクターフレームワークを通じて主要なデータシステムやデータ形式へのアクセスをサポートし、SQL に基づく統一されたデータ分析機能を提供します。既存のデータを移動せずに、異なるプラットフォームにまたがるデータのクエリや分析を容易に実行できます。詳しくは、Catalog の概要を参照してください。

データソースコネクター​

Hive、Iceberg、Hudi、Paimon、JDBC プロトコルをサポートするデータベースシステムなどに、Doris は容易に接続し、効率的にデータへアクセスできます。

レイクハウスシステムでは、Doris は Hive Metastore、AWS Glue、Unity Catalog などのメタデータサービスからデータテーブルの構造と分布に関する情報を取得し、適切なクエリ計画を立て、MPP アーキテクチャを活用して分散計算を実行できます。

詳しくは、Iceberg Catalogなど、各 Catalog のドキュメントを参照してください。

拡張可能なコネクターフレームワーク​

Doris は、開発者が企業固有のデータソースへ迅速に接続し、データ連携を実現できる拡張フレームワークを提供します。

Doris は Catalog、Database、Table という三つの階層の標準を定義しており、開発者は必要なデータソースの階層へ容易に対応付けられます。また、メタデータサービスとストレージサービスへアクセスするための標準インターフェースも提供します。開発者は対応するインターフェースを実装するだけで、データソースへの接続を完成できます。

Doris は Trino Connector プラグインと互換性があり、Trino のプラグインパッケージを Doris クラスターへ直接デプロイできます。最小限の設定で、対応するデータソースへアクセスできます。Doris はすでに Kudu、BigQuery、Delta Lake などのデータソースへの接続に対応しています。新しいプラグインを自分で適合させることもできます。

データソースをまたぐ便利なデータ処理​

Doris は、実行時に複数のデータ Catalog を作成し、SQL を使用してそれらのデータソースに対するフェデレーションクエリを実行できます。たとえば、Hive のファクトテーブルのデータと MySQL のディメンションテーブルのデータを結合してクエリできます。

SELECT h.id, m.name
FROM hive.db.hive_table h JOIN mysql.db.mysql_table m
ON h.id = m.id;

Doris に組み込まれたジョブスケジューリング機能と組み合わせれば、定期タスクを作成してシステムの複雑さをさらに軽減できます。たとえば、上記のクエリを毎時実行する定期タスクを設定し、毎回の結果を Iceberg テーブルに書き込めます。

CREATE JOB schedule_load
ON SCHEDULE EVERY 1 HOUR DO
INSERT INTO iceberg.db.ice_table
SELECT h.id, m.name
FROM hive.db.hive_table h JOIN mysql.db.mysql_table m
ON h.id = m.id;

高性能なデータ処理​

分析用データウェアハウスとして、Doris はレイクハウスのデータ処理と計算に多くの最適化を施し、豊富なクエリ高速化機能を提供します。

  • 実行エンジン

    Doris の実行エンジンは MPP 実行フレームワークと Pipeline データ処理モデルに基づき、複数マシン・複数コアの分散環境で大量のデータを高速に処理できます。演算子を全面的にベクトル化しているため、TPC-DS などの標準ベンチマークデータセットで高い計算性能を発揮します。

  • クエリオプティマイザ

    Doris はクエリオプティマイザを通じて、複雑な SQL リクエストを自動的に最適化、処理できます。複数テーブルの結合、集約、ソート、ページネーションなどの複雑な SQL 演算子を詳細に最適化します。コストモデルと関係代数の変換を十分に活用して、より良い、または最適な論理実行計画と物理実行計画を自動的に導き、SQL の記述を容易にするとともに、使いやすさと性能を向上させます。

  • データキャッシュと IO の最適化

    外部データソースへのアクセスは通常ネットワーク経由となるため、レイテンシが高く、安定性が低い場合があります。Apache Doris は豊富なキャッシュ機構を提供し、キャッシュの種類、有効期間、戦略について多くの最適化を施しています。メモリとローカルの高速ディスクを十分に活用し、頻繁に参照されるデータの分析性能を高めます。さらに、スループットが高い、IOPS が低い、レイテンシが高いといったネットワーク IO の特性に合わせて最適化することで、ローカルデータに匹敵する外部データソースへのアクセス性能を提供します。

  • マテリアライズドビューと透過的な高速化

    Doris は、全量更新とパーティション単位の増分更新に対応する、多様なマテリアライズドビューの更新方式を提供します。これにより、構築コストを抑え、データの鮮度を高められます。手動更新に加えて、定期更新とデータ駆動型の更新にも対応し、保守コストをさらに削減してデータの一貫性を向上させます。マテリアライズドビューには透過的な高速化機能もあり、クエリオプティマイザが適切なマテリアライズドビューへ自動的にルーティングして、クエリをシームレスに高速化します。また、Doris のマテリアライズドビューは高性能なストレージ形式を使用します。列指向ストレージ、圧縮、インテリジェントなインデックス技術によって効率的なデータアクセスを実現し、データキャッシュの代替手段としてもクエリ効率を向上させます。

以下に示すように、Iceberg テーブル形式を使用した 1TB の TPCDS 標準テストデータセットでは、Doris が 99 件のクエリ全体を実行する時間は Trino のわずか 1/3 です。

Doris の TPCDS ベンチマーク結果

実際のユーザー環境では、Doris は Presto と比較して、半分のリソースで平均クエリレイテンシを 20%、95 パーセンタイルのレイテンシを 50% 削減し、ユーザー体験を向上させながらリソースコストを大幅に削減します。

Doris の性能比較

容易なサービス移行​

複数のデータソースを統合してレイクハウスへ移行する過程では、システムごとに SQL の構文や関数のサポートが異なるため、SQL クエリを Doris へ移行することが課題になります。適切な移行計画がなければ、移行先システムの SQL 構文に適合させるために、業務側で大幅な変更が必要になる場合があります。

モダンなデプロイアーキテクチャ​

Doris はバージョン 3.0 以降、クラウドネイティブなコンピュートとストレージを分離したアーキテクチャをサポートしています。このアーキテクチャは、低コストと高い伸縮性によってリソース使用率を効果的に改善し、コンピュートとストレージを個別にスケールできるようにします。

コンピュートとストレージを分離したアーキテクチャ

上の図は、コンピュートとストレージを分離した Doris のシステムアーキテクチャを示しています。コンピュートノードはプライマリデータを保持せず、基盤となる共有ストレージ層(HDFS とオブジェクトストレージ)が統一されたプライマリデータの保存先となります。これにより、コンピュートとストレージのリソースを個別にスケールできます。このアーキテクチャは、レイクハウスソリューションに次のような大きな利点をもたらします。

  • 低コストのストレージ:ストレージとコンピュートのリソースを個別にスケールできるため、企業はコンピュートリソースを増やさずにストレージ容量を増やせます。また、クラウドのオブジェクトストレージを利用すれば、低いストレージコストと高い可用性を得ながら、比較的少量の頻繁に参照されるデータのキャッシュにはローカルの高速ディスクを引き続き使用できます。

  • 信頼できる唯一のデータソース:すべてのデータを統一されたストレージ層に保存することで、異なるコンピュートクラスターから同じデータにアクセスして処理できます。これにより、データの一貫性と完全性を確保し、データ同期や重複保存の複雑さを軽減できます。

  • 多様なワークロード:バッチ処理、リアルタイム分析、機械学習などのさまざまな用途をサポートするため、ユーザーはワークロードごとのニーズに応じてコンピュートリソースを動的に割り当てられます。ストレージとコンピュートを分離することで、企業はリソース使用をより柔軟に最適化し、異なる負荷の下でも効率的に運用できます。

また、ストレージとコンピュートを結合したアーキテクチャでも、エラスティックコンピュートノードを使用して、レイクハウスのデータクエリに伸縮性のあるコンピュート能力を提供できます。

オープン性​

Doris はオープンなレイクテーブル形式へのアクセスをサポートするだけでなく、Doris 自体に保存したデータにもオープンにアクセスできます。Doris はオープンなストレージ API を提供し、Arrow Flight SQL プロトコルに基づく高速なデータ接続を実装しています。Arrow Flight の速度上の利点と JDBC/ODBC の使いやすさを兼ね備えています。このインターフェースを使用すると、Python/Java/Spark/Flink の ABDC クライアントから Doris に保存されたデータへアクセスできます。

オープンなファイル形式と比較して、オープンなストレージ API は基盤となるファイル形式の具体的な実装を抽象化します。そのため、Doris は豊富なインデックス機構など、ストレージ形式の高度な機能を使ってデータアクセスを高速化できます。さらに、上位のコンピュートエンジンは基盤となるストレージ形式の変更や新機能に個別に対応する必要がなく、サポートされるすべてのコンピュートエンジンが新機能の恩恵を同時に受けられます。

レイクハウスのベストプラクティス​

レイクハウスソリューションでは、Doris は主にレイクハウスクエリの高速化、複数データソースのフェデレーション分析、レイクハウスのデータ処理に使用されます。

レイクハウスクエリの高速化​

このシナリオでは、Doris はコンピュートエンジンとして機能し、レイクハウスのデータに対するクエリ分析を高速化します。

レイクハウスクエリの高速化

キャッシュによる高速化​

Hive や Iceberg などのレイクハウスシステムでは、ローカルディスクキャッシュを設定できます。ローカルディスクキャッシュは、クエリで使用するデータファイルをローカルのキャッシュディレクトリへ自動的に保存し、LRU 戦略でキャッシュからの削除を管理します。詳しくは、データキャッシュのドキュメントを参照してください。

マテリアライズドビューと透過的な書き換え​

Doris は、外部データソースに対するマテリアライズドビューの作成をサポートします。マテリアライズドビューは、SQL 定義文に基づいて事前計算した結果を Doris の内部テーブル形式で保存します。また、Doris のクエリオプティマイザは、SPJG(SELECT-PROJECT-JOIN-GROUP-BY)パターンに基づく透過的な書き換えアルゴリズムをサポートします。このアルゴリズムは SQL の構造を分析し、透過的な書き換えに適したマテリアライズドビューを自動的に見つけ、クエリ SQL への応答に最適なマテリアライズドビューを選択します。

この機能は、実行時の計算を減らしてクエリ性能を大幅に向上させます。また、アプリケーション側が意識することなく、透過的な書き換えを通じてマテリアライズドビューのデータへアクセスできます。詳しくは、マテリアライズドビューのドキュメントを参照してください。

複数データソースのフェデレーション分析​

Doris は統一された SQL クエリエンジンとして、異なるデータソースを接続してフェデレーション分析を実行し、データサイロを解消できます。

フェデレーション分析

ユーザーは Doris で複数の Catalog を動的に作成して、異なるデータソースへ接続できます。SQL 文を使用し、異なるデータソースのデータに対して任意の結合クエリを実行できます。詳しくは、Catalog の概要を参照してください。

レイクハウスのデータ処理​

このシナリオでは、Doris はデータ処理エンジンとして機能し、レイクハウスのデータを処理します。

レイクハウスのデータ処理

タスクスケジューリング​

Doris は Job Scheduler 機能を導入し、効率的で柔軟なタスクスケジューリングを可能にするとともに、外部システムへの依存を減らします。データソースコネクターと組み合わせることで、外部データの定期的な処理と保存を実現できます。詳しくは、Job Schedulerを参照してください。

データモデリング​

ユーザーは通常、データレイクに生データを保存し、そのデータを基に階層的な処理を行って、各階層のデータを異なる業務上のニーズに利用します。Doris のマテリアライズドビュー機能では、外部データソースに対するマテリアライズドビューを作成し、そのビューを基にさらに処理できます。これにより、システムの複雑さを軽減し、データ処理効率を高められます。

データの書き戻し​

データの書き戻し機能によって、Doris のレイクハウスデータ処理機能は一連の処理を完結できます。ユーザーは Doris から外部データソースに直接データベースとテーブルを作成し、データを書き込めます。現在は JDBC、Hive、Iceberg のデータソースをサポートしており、今後さらに対応するデータソースを追加する予定です。詳しくは、対応するデータソースのドキュメントを参照してください。