メインコンテンツまでスキップ

Features

機能

StarRocksは、スケールの大きなデータに対する高速なリアルタイム分析体験を提供するための豊富な機能を提供しています。

MPPフレームワーク

StarRocksは、大規模並列処理(MPP)フレームワークを採用しています。クエリリクエストは複数の物理計算ユニットに分割され、複数のマシンで並列に実行されます。各マシンには専用のCPUとメモリリソースがあります。MPPフレームワークでは、CPUコアとマシンのリソースを最大限に活用しています。クラスタのスケールアウトに伴い、単一のクエリのパフォーマンスは持続的に向上します。

MPP

上の図では、StarRocksはSQL文を文のセマンティクスに基づいて複数の論理実行ユニット(クエリフラグメント)にパースします。それぞれのフラグメントは計算の複雑さに基づいて1つまたは複数の物理実行ユニット(フラグメントインスタンス)によって実装されます。物理実行ユニットは、StarRocksにおける最小のスケジューリング単位です。実行ユニットはバックエンド(BE)にスケジュールされて実行されます。1つの論理実行ユニットには、スキャン、プロジェクト、集計などのオペレータが含まれることがあります。右側の図に示されています。各物理実行ユニットはデータの一部のみを処理し、その結果はマージされて最終的なデータを生成します。論理実行ユニットの並列実行は、すべてのCPUコアと物理マシンのリソースを最大限に活用し、クエリの処理速度を加速します。

MPP

他の多くのデータ分析システムで使用されるScatter-Gatherフレームワークとは異なり、MPPフレームワークはより多くのリソースを利用してクエリリクエストを処理することができます。Scatter-Gatherフレームワークでは、Gatherノードのみが最終的なマージ操作を行うことができます。MPPフレームワークでは、データがマージ操作のために複数のノードにシャッフルされます。高基数フィールドや大規模テーブルの結合などの複雑なクエリに対しては、StarRocksのMPPフレームワークがScatter-Gatherフレームワークよりも明らかなパフォーマンスの利点を持っています。

完全なベクトル化実行エンジン

完全なベクトル化実行エンジンは、CPUの処理能力を効率的に活用するために、データをカラム指向で組織化し処理するエンジンです。具体的には、StarRocksはデータをカラム指向で格納し、メモリ内でデータを組織化し、SQLオペレータをカラム指向で計算します。カラム指向の組織化はCPUキャッシュを最大限に利用します。カラム指向の計算は仮想関数呼び出しや分岐判断の回数を減らし、より効率的なCPU命令フローをもたらします。

ベクトル化実行エンジンは、SIMD命令も効果的に活用することができます。このエンジンは、より少ない命令でより多くのデータ操作を完了することができます。標準データセットに対するテストでは、このエンジンはオペレータの全体的なパフォーマンスを3倍から10倍向上させることが示されています。

オペレータのベクトル化に加えて、StarRocksはクエリエンジンのために他の最適化も実装しています。例えば、StarRocksは符号化データ上で直接オペレータを実行するための「エンコードデータ上の操作」技術を使用しています。これにより、デコードが不要になりSQLの複雑性が劇的に低減し、クエリの速度が2倍以上向上します。

コストベースの最適化

複数のテーブルの結合クエリのパフォーマンスを最適化することは困難です。単独の実行エンジンでは優れたパフォーマンスを提供することができません。というのも、複数のテーブルの結合クエリのシナリオでは、実行計画の複雑さは数桁以上にわたって異なる場合があります。関連するテーブルが多ければ多いほど、実行計画も複雑になり、最適な計画を選択することはNP困難となります。優れたクエリオプティマイザーのみが効率的な複数テーブル分析に対して比較的最適なクエリプランを選択することができます。

StarRocksは、最適化と革新を多数備えたベクトル化実行エンジンに特化した新しいCBOを設計しています。このCBOはカスケードのようなフレームワークを採用し、共通テーブル式 (CTE) の再利用、サブクエリの書き換え、Lateral Join、結合のリオーダー、分散結合の実行戦略の選択、低基数最適化などの最適化を行います。CBOは合計99のTPC-DS SQLステートメントに対応しています。

CBOにより、StarRocksは競合他社に比べて特に複雑な複数テーブル結合クエリにおいて優れたパフォーマンスを実現します。

リアルタイムで更新可能なカラムストアエンジン

StarRocksは、データを同じ型に連続的に格納することができるカラムストアエンジンです。カラムストアでは、データをより効率的に符号化することができ、圧縮率を高め、ストレージコストを低減します。カラムストアはまた、総データ読み取りI/Oを減らし、クエリのパフォーマンスを向上させます。さらに、ほとんどのOLAPシナリオでは、特定の列のみがクエリ対象となります。カラムストアにより、ユーザーは列の一部のみをクエリできるため、ディスクI/Oを大幅に削減することができます。

StarRocksは、数秒でデータをロードしてリアルタイム分析を行うことが可能です。StarRocksのストレージエンジンは、各データロード操作のアトミック性、整合性、分離性、耐久性(ACID)を保証します。データロードトランザクションでは、トランザクション全体が成功するか失敗します。並行トランザクションは互いに影響を及ぼさず、トランザクションレベルの分離性を提供します。

リアルタイム

StarRocksのストレージエンジンでは、デリート&インサートパターンを使用して、効率的な部分更新とUpsert操作を行うことができます。ストレージエンジンは、プライマリキーインデックスを使用してデータを迅速にフィルタリングし、データの読み取り時にソートやマージ操作が必要なくなります。また、セカンダリインデックスも十分に活用することができます。これにより、膨大なデータの更新においても高速で予測可能なクエリパフォーマンスを提供します。

インテリジェントなマテリアライズドビュー

StarRocksは、インテリジェントなマテリアライズドビューを使用してクエリとデータウェアハウスのレイヤーを高速化します。他の類似製品のマテリアライズドビューとは異なり、StarRocksのマテリアライズドビューはベーステーブルのデータ変更に応じて自動的にデータを更新するため、追加のメンテナンス操作は不要です。また、マテリアライズドビューの選択も自動的です。StarRocksがクエリのパフォーマンスを向上させるために適切なマテリアライズドビュー(MV)を特定すると、自動的にクエリをMVを利用するように書き換えます。このインテリジェントなプロセスにより、手動介入なしでクエリの効率を劇的に向上させることができます。

StarRocksのMVは、伝統的なETLデータモデリングプロセスを置き換えることができます。上流アプリケーションでデータを変換する代わりに、StarRocks内でMVでデータを変換するオプションがあり、データ処理のパイプラインをシンプルにすることができます。

例えば、図に示すように、データレイク上の生データは外部MVを基に正規化テーブルを作成するために使用できます。正規化テーブルから非正規化テーブルを非同期マテリアライズドビューを介して作成することもできます。また、正規化テーブルから別のMVを作成して高同時性のクエリとより高いクエリパフォーマンスをサポートすることもできます。

MV

データレイク分析

ローカルデータの効率的な分析に加えて、StarRocksはApache Hive、Apache Iceberg、Apache Hudi、Delta Lakeなどのデータレイクに格納されたデータを分析するためのコンピューティングエンジンとして機能します。StarRocksの重要な機能の1つは外部カタログで、外部で管理されるメタストアとの連携を提供します。この機能により、ユーザーはデータの移行が必要なく、HDFSやAmazon S3などのさまざまなシステムから、Parquet、ORC、CSVなどのさまざまなファイル形式でデータを分析することができます。

上の図は、StarRocksがデータの計算と分析を担当し、データレイクがデータの格納、組織、およびメンテナンスを担当するデータレイク分析のシナリオを示しています。データレイクでは、柔軟なスキーマを使用してデータをオープンストレージ形式で保管し、BI、AI、アドホックおよびレポート用途など、さまざまなユースケースで「真の単一の情報源」に基づいたレポートを生成することができます。StarRocksは、ベクトル化エンジンとCBOの利点を最大限に活用し、データレイク分析のパフォーマンスを大幅に向上させます。