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

柔軟なデータアクセス
Dorisは、拡張可能なコネクターフレームワークを通じて主要なデータシステムとデータフォーマットアクセスをサポートし、SQLベースの統一されたデータ分析機能を提供します。これにより、ユーザーは既存のデータを移動することなく、クロスプラットフォームのデータクエリと分析を容易に実行できます。詳細については、Catalog Overviewを参照してください。
データソースコネクター
Hive、Iceberg、Hudi、Paimon、またはJDBCプロトコルをサポートするデータベースシステムなど、Dorisは容易に接続し、効率的にデータにアクセスできます。
lakhouseシステムについて、DorisはHive Metastore、AWS Glue、Unity Catalogなどのメタデータサービスからデータテーブルの構造と分散情報を取得し、合理的なクエリプランニングを実行し、MPPアーキテクチャを活用した分散コンピューティングを行います。
詳細については、Iceberg Catalogなど、各catalogドキュメントを参照してください。
拡張可能なコネクターフレームワーク
Dorisは優れた拡張性フレームワークを提供し、開発者が企業内の独自のデータソースに迅速に接続し、高速なデータ相互運用性を実現することを支援します。
Dorisは、Catalog、Database、Tableの3つのレベルの標準を定義し、開発者が必要なデータソースレベルに容易にマッピングできるようにします。Dorisはまた、メタデータサービスとストレージサービスアクセス用の標準インターフェースを提供し、開発者は対応するインターフェースを実装するだけでデータソース接続を完了できます。
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に内蔵されたjob scheduling機能と組み合わせることで、スケジュールされたタスクを作成してシステムの複雑さをさらに簡素化することもできます。例えば、ユーザーは上記のクエリの結果を毎時実行される定期タスクとして設定し、各結果を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リクエストを自動的に最適化・処理することができます。クエリオプティマイザは、マルチテーブルjoin、集約、ソート、ページネーションなどの様々な複雑なSQL演算子を深く最適化し、コストモデルと関係代数変換を完全に活用して、より良い、または最適な論理・物理実行計画を自動的に取得し、SQL記述の難易度を大幅に軽減し、使いやすさとパフォーマンスを向上させます。
-
データキャッシュとIO最適化
外部データソースへのアクセスは通常ネットワークアクセスとなり、高レイテンシと安定性の低さが問題となることがあります。Apache Dorisは豊富なキャッシュメカニズムを提供し、キャッシュタイプ、適時性、戦略において数多くの最適化を行い、メモリとローカル高速ディスクを十分に活用してホットデータの分析パフォーマンスを向上させます。さらに、Dorisは高スループット、低IOPS、高レイテンシといったネットワークIO特性に対してターゲット最適化を行い、ローカルデータに匹敵する外部データソースアクセス性能を提供します。
-
マテリアライズドビューと透過的高速化
Dorisは豊富なマテリアライズドビュー更新戦略を提供し、完全更新とパーティションレベルの増分更新をサポートして構築コストを削減し、適時性を向上させます。手動更新に加えて、Dorisはスケジュール更新とデータ駆動更新もサポートし、メンテナンスコストをさらに削減し、データ一貫性を向上させます。マテリアライズドビューには透過的高速化機能もあり、クエリオプティマイザが適切なマテリアライズドビューに自動的にルーティングして、シームレスなクエリ高速化を実現します。さらに、Dorisのマテリアライズドビューは高性能ストレージフォーマットを使用し、カラムストレージ、圧縮、インテリジェントインデックス技術を通じて効率的なデータアクセス機能を提供し、データキャッシュの代替として機能し、クエリ効率を向上させます。
以下に示すように、Icebergテーブルフォーマットに基づく1TB TPCDSの標準テストセットにおいて、Dorisの99クエリ全体の実行時間はTrinoの1/3にすぎません。

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

便利なサービス移行
複数のデータソースを統合しlakehouse変換を実現するプロセスにおいて、SQLクエリをDorisに移行することは、システム間でのSQL方言の構文と関数サポートの違いにより課題となります。適切な移行計画がないと、ビジネス側は新しいシステムのSQL構文に適応するために大幅な修正が必要になる場合があります。
モダンなデプロイメントアーキテクチャ
バージョン3.0以降、Dorisはクラウドネイティブな計算・ストレージ分離アーキテクチャをサポートします。このアーキテクチャは、低コストと高い弾力性により、リソース使用率を効果的に改善し、計算とストレージの独立したスケーリングを可能にします。

上記の図は、Dorisの計算・ストレージ分離のシステムアーキテクチャを示しており、計算とストレージを分離しています。計算ノードはもはやプライマリデータを格納せず、基盤となる共有ストレージ層(HDFSとオブジェクトストレージ)が統一されたプライマリデータストレージ空間として機能し、計算とストレージリソースの独立したスケーリングをサポートします。計算・ストレージ分離アーキテクチャは、lakehouseソリューションに重要な利点をもたらします:
-
低コストストレージ:ストレージと計算リソースを独立してスケーリングでき、企業は計算リソースを増やすことなくストレージ容量を増やすことができます。さらに、クラウドオブジェクトストレージを使用することで、企業はより低いストレージコストとより高い可用性を享受でき、同時に比較的少ない割合のホットデータのキャッシュにはローカル高速ディスクを使用できます。
-
単一の情報源:すべてのデータは統一されたストレージ層に格納され、同じデータを異なる計算クラスタがアクセス・処理でき、データの一貫性と整合性を保証し、データ同期と重複ストレージの複雑さを軽減します。
-
ワークロードの多様性:ユーザーは異なるワークロードニーズに基づいて計算リソースを動的に割り当て、バッチ処理、リアルタイム分析、機械学習などの様々なアプリケーションシナリオをサポートできます。ストレージと計算を分離することで、企業はより柔軟にリソース使用を最適化し、異なる負荷の下で効率的な運用を保証できます。
さらに、ストレージ・計算結合アーキテクチャの下では、弾性計算ノードを使用してlakeウェアハウスデータクエリシナリオで弾性計算機能を提供することも可能です。
オープン性
Dorisはオープンlakeテーブルフォーマットへのアクセスをサポートするだけでなく、独自に格納されたデータに対しても良好なオープン性を持っています。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データのクエリ分析を高速化します。

キャッシュ高速化
HiveやIcebergなどのlakehouseシステムに対して、ユーザーはローカルディスクキャッシュを設定できます。ローカルディスクキャッシュは、クエリで使用されるデータファイルをローカルキャッシュディレクトリに自動的に格納し、LRU戦略を使用してキャッシュ削除を管理します。詳細については、データキャッシュドキュメントを参照してください。
マテリアライズドビューと透過的リライト
Dorisは外部データソースに対するマテリアライズドビューの作成をサポートします。マテリアライズドビューは、SQL定義文に基づいて事前計算された結果をDoris内部テーブルフォーマットとして格納します。さらに、Dorisのクエリオプティマイザは、SPJG(SELECT-PROJECT-JOIN-GROUP-BY)パターンに基づく透過的リライトアルゴリズムをサポートします。このアルゴリズムはSQLの構造情報を分析し、透過的リライトに適したマテリアライズドビューを自動的に見つけ、クエリSQLに応答する最適なマテリアライズドビューを選択できます。
この機能は、実行時計算を削減することでクエリパフォーマンスを大幅に向上させることができます。また、ビジネス側の認識なしに透過的リライトを通じてマテリアライズドビュー内のデータにアクセスすることも可能にします。詳細については、マテリアライズドビュードキュメントを参照してください。
マルチソース連合分析
Dorisは統一SQLクエリエンジンとして機能し、異なるデータソースを接続して連合分析を行い、データサイロの問題を解決できます。

ユーザーはDorisで複数のカタログを動的に作成して異なるデータソースに接続できます。SQL文を使用して異なるデータソースからのデータに対して任意のjoinクエリを実行できます。詳細については、カタログ概要を参照してください。
Lakehouseデータ処理
このシナリオでは、Dorisがデータ処理エンジンとして機能し、lakehouseデータを処理します。

タスクスケジューリング
DorisはJob Scheduler機能を導入し、効率的で柔軟なタスクスケジューリングを可能にし、外部システムへの依存を削減します。データソースコネクタと組み合わせることで、ユーザーは外部データの定期処理と格納を実現できます。詳細については、Job Schedulerを参照してください。
データモデリング
ユーザーは通常、データレイクを使用して生データを格納し、これを基盤として階層化データ処理を実行し、異なる層のデータを異なるビジネスニーズに対応させます。Dorisのマテリアライズドビュー機能は、外部データソースに対するマテリアライズドビューの作成をサポートし、マテリアライズドビューに基づくさらなる処理をサポートし、システムの複雑さを軽減し、データ処理効率を向上させます。
データ書き戻し
データ書き戻し機能は、Dorisのlakehouseデータ処理機能のクローズドループを形成します。ユーザーはDorisを通じて外部データソースにデータベースとテーブルを直接作成し、データを書き込むことができます。現在、JDBC、Hive、Icebergデータソースがサポートされており、今後さらに多くのデータソースが追加される予定です。詳細については、対応するデータソースのドキュメントを参照してください。