メインコンテンツまでスキップ
バージョン: 4.x

レイクハウス概要

lakehouseは、データレイクとデータウェアハウスの利点を組み合わせた現代的なビッグデータソリューションです。データレイクの低コストと高いスケーラビリティを、データウェアハウスの高性能と強力なデータガバナンス機能と統合し、ビッグデータ時代における様々なデータの効率的で安全、かつ品質管理された保存と処理分析を可能にします。標準化されたオープンデータフォーマットとメタデータ管理により、リアルタイム履歴データ、バッチ処理ストリーム処理を統合し、企業ビッグデータソリューションの新しい標準として徐々に確立されています。

Doris Lakehouseソリューション

Dorisは、拡張可能なコネクタフレームワーク、コンピュート・ストレージ分離アーキテクチャ、高性能データ処理エンジン、およびデータエコシステムの開放性を通じて、ユーザーに優れたlakehouseソリューションを提供します。

doris lakehouse architecture

柔軟なデータアクセス

Dorisは拡張可能なコネクタフレームワークを通じて主流のデータシステムとデータフォーマットアクセスをサポートし、SQLベースの統合データ分析機能を提供することで、ユーザーが既存のデータを移動することなく、クロスプラットフォームデータクエリと分析を簡単に実行できます。詳細については、Catalog Overviewを参照してください

データソースコネクタ

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

lakehouseシステムについて、DorisはHive Metastore、AWS Glue、Unity Catalogなどのメタデータサービスからデータテーブルの構造と分散情報を取得し、合理的なクエリ計画を実行し、MPPアーキテクチャを活用した分散コンピューティングを行います。

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

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

Dorisは、開発者が企業内の独自のデータソースに迅速に接続し、高速なデータ相互運用性を実現するための優れた拡張性フレームワークを提供します。

Dorisは3つのレベルの標準Catalog、Database、Tableを定義し、開発者が必要なデータソースレベルに簡単にマップできるようにします。Dorisはまた、メタデータサービスとストレージサービスアクセスのための標準インターフェースを提供し、開発者は対応するインターフェースを実装するだけでデータソース接続を完了できます。

DorisはTrino Connectorプラグインと互換性があり、TrinoプラグインパッケージをDorisクラスタに直接デプロイでき、最小限の設定で対応するデータソースにアクセスできます。DorisはすでにKuduBigQueryDelta 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の組み込みjob scheduling機能と組み合わせることで、スケジュールされたタスクを作成してシステムの複雑さをさらに簡素化することもできます。例えば、ユーザーは上記のクエリの結果を1時間ごとに実行される定期タスクとして設定し、各結果を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はLakehouseデータ処理と計算において数多くの最適化を行い、豊富なクエリ高速化機能を提供します:

  • 実行エンジン

    Doris実行エンジンはMPP実行フレームワークとPipelineデータ処理モデルに基づいており、マルチマシン、マルチコア分散環境で大量のデータを迅速に処理することができます。完全なベクトル化実行オペレーターのおかげで、DorisはTPC-DSなどの標準ベンチマークデータセットにおいて計算性能で優位に立っています。

  • クエリオプティマイザー

    Dorisはクエリオプティマイザーを通じて複雑なSQLリクエストを自動的に最適化し処理することができます。クエリオプティマイザーはマルチテーブル結合、集約、ソート、ページネーションなどの様々な複雑なSQLオペレーターを深く最適化し、コストモデルと関係代数変換を完全に活用して、より良いまたは最適な論理および物理実行プランを自動的に取得し、SQLの記述難易度を大幅に削減し、使いやすさとパフォーマンスを向上させます。

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

    外部データソースへのアクセスは通常ネットワークアクセスであり、高いレイテンシと低い安定性を持つ可能性があります。Apache Dorisは豊富なキャッシュメカニズムを提供し、キャッシュタイプ、適時性、戦略において数多くの最適化を行い、メモリとローカル高速ディスクを完全に活用してホットデータの分析パフォーマンスを向上させます。さらに、Dorisは高スループット、低IOPS、高レイテンシなどのネットワークIO特性に対して的を絞った最適化を行い、ローカルデータに匹敵する外部データソースアクセス性能を提供します。

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

    Dorisは豊富なマテリアライズドビューの更新戦略を提供し、完全およびパーティションレベルの増分リフレッシュをサポートして構築コストを削減し、適時性を向上させます。手動リフレッシュに加えて、Dorisはスケジュールリフレッシュとデータ駆動リフレッシュもサポートし、メンテナンスコストをさらに削減し、データの一貫性を向上させます。マテリアライズドビューは透明な高速化機能も持ち、クエリオプティマイザーが適切なマテリアライズドビューに自動的にルーティングしてシームレスなクエリ高速化を実現できます。さらに、Dorisのマテリアライズドビューは高性能ストレージフォーマットを使用し、カラムストレージ、圧縮、インテリジェントインデックス技術を通じて効率的なデータアクセス機能を提供し、データキャッシュの代替として機能してクエリ効率を向上させます。

以下に示すように、Icebergテーブルフォーマットに基づく1TB TPCDSの標準テストセットにおいて、Dorisの99クエリの全体実行時間はTrinoの1/3にすぎません。

doris-tpcds

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

doris-performance

便利なサービス移行

複数のデータソースを統合しLakehouse変換を実現する過程において、システム間のSQL方言の構文と関数サポートの違いにより、SQLクエリをDorisに移行することは課題となります。適切な移行プランがなければ、ビジネス側は新しいシステムのSQL構文に適応するために大幅な修正を必要とする可能性があります。

この問題に対処するため、DorisはSQL Dialect Conversion Serviceを提供し、ユーザーが他のシステムのSQL方言を直接使用してデータクエリを行えるようにします。変換サービスはこれらのSQL方言をDoris SQLに変換し、ユーザーの移行コストを大幅に削減します。現在、DorisはPresto/Trino、Hive、PostgreSQL、Clickhouseなどの一般的なクエリエンジンのSQL方言変換をサポートし、一部の実際のユーザーシナリオでは99%を超える互換性を実現しています。

モダンな展開アーキテクチャ

バージョン3.0以降、Dorisはクラウドネイティブなコンピュート・ストレージ分離アーキテクチャをサポートします。このアーキテクチャは低コストと高い弾力性により、リソース使用率を効果的に向上させ、コンピュートとストレージの独立したスケーリングを可能にします。

compute-storage-decouple

上図はDorisのコンピュート・ストレージ分離のシステムアーキテクチャを示しており、コンピュートとストレージを分離しています。コンピュートノードはもはやプライマリデータを保存せず、基盤となる共有ストレージ層(HDFSとオブジェクトストレージ)が統一されたプライマリデータストレージスペースとして機能し、コンピュートとストレージリソースの独立したスケーリングをサポートします。コンピュート・ストレージ分離アーキテクチャは、Lakehouseソリューションに重要な利点をもたらします:

  • 低コストストレージ: ストレージとコンピュートリソースを独立してスケーリングできるため、企業はコンピュートリソースを増やすことなくストレージ容量を増やすことができます。さらに、クラウドオブジェクトストレージを使用することで、企業はより低いストレージコストとより高い可用性を享受でき、比較的少ない割合のホットデータに対してローカル高速ディスクをキャッシュとして使用できます。

  • Single Source of Truth: すべてのデータが統一されたストレージ層に保存されるため、同じデータが異なるコンピュートクラスターによってアクセス・処理され、データの一貫性と整合性を確保し、データ同期と重複ストレージの複雑さを削減します。

  • ワークロード多様性: ユーザーは異なるワークロードニーズに基づいてコンピュートリソースを動的に割り当てることができ、バッチ処理、リアルタイム分析、機械学習などの様々なアプリケーションシナリオをサポートします。ストレージとコンピュートを分離することで、企業はより柔軟にリソース使用を最適化し、異なる負荷下での効率的な動作を確保できます。

さらに、ストレージ・コンピュート結合アーキテクチャにおいても、elastic computing nodesを使用してLakeハウスデータクエリシナリオで弾性コンピュート機能を提供できます。

開放性

Dorisはオープンなレイクテーブルフォーマットへのアクセスをサポートするだけでなく、自身が保存するデータに対しても優れたオープン性を持ちます。DorisはオープンなストレージAPIを提供し、Arrow Flight SQLプロトコルに基づく高速データリンクを実装し、Arrow Flightの速度の利点とJDBC/ODBCの使いやすさを提供します。このインターフェースに基づいて、ユーザーはPython/Java/Spark/FlinkのABDCクライアントを使用してDorisに保存されたデータにアクセスできます。

オープンなファイルフォーマットと比較して、オープンなストレージAPIは基盤となるファイルフォーマットの具体的な実装を抽象化し、Dorisが豊富なインデックスメカニズムなどのストレージフォーマットの高度な機能を通じてデータアクセスを高速化できるようにします。さらに、上位層のコンピュートエンジンは基盤となるストレージフォーマットの変更や新機能に適応する必要がなく、サポートされるすべてのコンピュートエンジンが新機能から同時に恩恵を受けることができます。

Lakehouse ベストプラクティス

Lakehouseソリューションにおいて、Dorisは主にLakehouseクエリ高速化マルチソース連合分析、およびLakehouseデータ処理に使用されます。

Lakehouse クエリ高速化

このシナリオでは、Dorisはコンピュートエンジンとして機能し、Lakehouseデータのクエリ分析を高速化します。

lakehouse query acceleration

キャッシュ高速化

HiveやIcebergなどのLakehouseシステムに対して、ユーザーはローカルディスクキャッシュを設定できます。ローカルディスクキャッシュは、クエリで使用するデータファイルを自動的にローカルキャッシュディレクトリに保存し、LRU戦略を使用してキャッシュ退避を管理します。詳細については、Data Cacheドキュメントを参照してください。

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

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

この機能は実行時の計算を削減することでクエリパフォーマンスを大幅に向上させることができます。また、ビジネスが意識することなく透明な書き換えを通じてマテリアライズドビュー内のデータにアクセスできます。詳細については、Materialized Viewsドキュメントを参照してください。

マルチソース連携分析

Dorisは統一SQLクエリエンジンとして機能し、異なるデータソースを接続して連合分析を行い、データサイロを解決できます。

federated analysis

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

Lakehouse データ処理

このシナリオでは、Dorisはデータ処理エンジンとして機能し、Lakehouseデータを処理します。

lakehouse data processing

タスクスケジューリング

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

データモデリング

ユーザーは通常、データレイクを使用して生データを保存し、これを基盤として階層化されたデータ処理を実行し、異なるレイヤーのデータを異なるビジネスニーズに利用可能にします。Dorisのマテリアライズドビュー機能は外部データソースに対するマテリアライズドビューの作成をサポートし、マテリアライズドビューに基づくさらなる処理をサポートして、システムの複雑さを削減しデータ処理効率を向上させます。

データ書き戻し

データ書き戻し機能は、DorisのLakehouseデータ処理機能のクローズドループを形成します。ユーザーはDorisを通じて外部データソースに直接データベースとテーブルを作成し、データを書き込むことができます。現在、JDBC、Hive、Icebergデータソースがサポートされており、将来的にはより多くのデータソースが追加される予定です。詳細については、対応するデータソースのドキュメントを参照してください。