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

Features

StarRocks は、スケールされたデータに対して非常に高速でリアルタイムな分析体験を提供する豊富な機能を備えています。

MPP フレームワーク

StarRocks は、マッシブリー・パラレル・プロセッシング (MPP) フレームワークを採用しています。1 つのクエリリクエストは、複数の物理的な計算ユニットに分割され、複数のマシンで並行して実行されます。各マシンには専用の CPU とメモリリソースがあります。MPP フレームワークは、すべての CPU コアとマシンのリソースを完全に活用します。クラスターをスケールアウトすることで、単一クエリのパフォーマンスを継続的に向上させることができます。

MPP

上の図では、StarRocks は SQL ステートメントをその意味に基づいて複数の論理実行ユニット(クエリフラグメント)に解析します。各フラグメントは、計算の複雑さに基づいて、1 つまたは複数の物理実行ユニット(フラグメントインスタンス)によって実装されます。物理実行ユニットは StarRocks における最小のスケジューリングユニットです。これらはバックエンド(BEs)にスケジュールされて実行されます。1 つの論理実行ユニットは、Scan、Project、Agg オペレーターなど、1 つ以上のオペレーターを含むことができます。各物理実行ユニットはデータの一部のみを処理し、結果は最終データを生成するためにマージされます。論理実行ユニットの並列実行は、すべての CPU コアと物理マシンのリソースを完全に活用し、クエリ速度を加速します。

MPP

他の多くのデータ分析システムで使用される Scatter-Gather フレームワークとは異なり、MPP フレームワークはクエリリクエストを処理するためにより多くのリソースを利用できます。Scatter-Gather フレームワークでは、最終的なマージ操作を実行できるのは Gather ノードのみです。MPP フレームワークでは、データはマージ操作のために複数のノードにシャッフルされます。高カーディナリティフィールドの Group By や大規模テーブルのジョインなどの複雑なクエリにおいて、StarRocks の MPP フレームワークは Scatter-Gather フレームワークに比べて顕著なパフォーマンスの利点があります。

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

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

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

オペレーターのベクトル化に加えて、StarRocks はクエリエンジンに対して他の最適化も実施しています。たとえば、StarRocks は Operation on Encoded Data 技術を使用して、エンコードされた文字列上でオペレーターを直接実行し、デコードの必要をなくしています。これにより、SQL の複雑さが顕著に減少し、クエリ速度が 2 倍以上向上します。

コストベースオプティマイザ

CBO

複数テーブルジョインクエリのパフォーマンスを最適化するのは難しいです。実行エンジンだけでは優れたパフォーマンスを提供できません。なぜなら、複数テーブルジョインクエリのシナリオでは、実行プランの複雑さが数桁異なる可能性があるからです。関連するテーブルが多いほど、実行プランも多くなり、最適なプランを選ぶのが NP 困難になります。優れたクエリオプティマイザだけが、効率的な複数テーブル分析のために比較的最適なクエリプランを選択できます。

StarRocks はゼロから新しい CBO を設計しました。この CBO はカスケードのようなフレームワークを採用し、ベクトル化実行エンジンに深くカスタマイズされた多くの最適化と革新を備えています。これらの最適化には、共通テーブル式(CTE)の再利用、サブクエリの書き換え、Lateral Join、Join Reorder、分散ジョイン実行の戦略選択、低カーディナリティ最適化が含まれます。CBO は合計 99 の TPC-DS SQL ステートメントをサポートしています。

CBO は、特に複雑な複数テーブルジョインクエリにおいて、StarRocks が競合他社よりも優れた複数テーブルジョインクエリパフォーマンスを提供できるようにします。

リアルタイムで更新可能な列指向ストレージエンジン

StarRocks は、同じタイプのデータを連続して保存できる列指向ストレージエンジンです。列指向ストレージでは、データをより効率的にエンコードでき、圧縮率を高め、ストレージコストを下げることができます。列指向ストレージは、総データ読み取り I/O を削減し、クエリパフォーマンスを向上させます。さらに、ほとんどの OLAP シナリオでは、特定の列のみがクエリされます。列指向ストレージは、ユーザーが特定の列のみをクエリできるようにし、ディスク I/O を大幅に削減します。

StarRocks は、ほぼリアルタイムの分析のために数秒以内にデータをロードできます。StarRocks のストレージエンジンは、各データ取り込み操作の原子性、一貫性、分離性、耐久性(ACID)を保証します。データロードトランザクションでは、トランザクション全体が成功するか失敗するかのいずれかです。並行トランザクションは互いに影響を与えず、トランザクションレベルの分離を提供します。

Realtime

StarRocks のストレージエンジンは、Delete-and-insert パターンを使用しており、効率的な部分更新とアップサート操作を可能にします。ストレージエンジンは、プライマリキーインデックスを使用してデータを迅速にフィルタリングし、データ読み取り時にソートやマージ操作を必要としません。このエンジンはまた、セカンダリインデックスを最大限に活用します。大量のデータ更新でも高速で予測可能なクエリパフォーマンスを提供します。

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

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

StarRocks の MV は、従来の ETL データモデリングプロセスを置き換えることができます。上流アプリケーションでデータを変換する代わりに、StarRocks 内で MV を使用してデータを変換するオプションがあり、データ処理パイプラインを簡素化します。

たとえば、図では、データレイク上の生データを使用して、外部 MV に基づいて正規化テーブルを作成できます。非正規化テーブルは、非同期マテリアライズドビューを通じて正規化テーブルから作成できます。別の MV は、正規化テーブルから作成され、高コンカレンシークエリとより良いクエリパフォーマンスをサポートします。

MV

データレイク分析

DLA

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

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