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

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 倍以上向上します。

ストレージとコンピュートの分離

storage-compute separation architecture は 3.0 から導入されました。このアーキテクチャでは、コンピューティングとストレージが分離され、リソースの分離、コンピュートノードの弾力的なスケーリング、高性能なクエリが実現されます。ストレージとコンピュートの分離により、StarRocks はより柔軟性が高く、パフォーマンスとデータの可用性が向上し、コストが低減されます。

shared-data

ストレージとコンピュートの分離モードでは、コンピューティングとストレージが分離され、独立してスケーリングできるため、コンピュートノードを追加するたびにストレージをスケールする必要があるストレージとコンピュートが結合されたモードで長く存在するコストを排除します。さらに、コンピューティングは数秒以内に動的にスケールし、特にトラフィックのピークと谷が顕著な場合にリソースの利用率を向上させます。

ストレージ層は、オブジェクトストレージのほぼ無制限の容量と高い信頼性を活用して、大量のデータストレージとデータの永続性を実現します。StarRocks は、AWS S3、Google Cloud Storage、Azure Blob Storage、HDFS、MinIO などの S3 互換ストレージなど、さまざまなオブジェクトストレージシステムと連携できます。

ユーザーは、StarRocks をパブリッククラウド、プライベートクラウド、またはオンプレミスのデータセンターにデプロイすることを選択できます。StarRocks は Kubernetes ベースのデプロイメントをサポートし、ストレージとコンピュートが分離されたクラスターの自動デプロイメントのための Operator を提供します。

ストレージとコンピュートの分離モードの StarRocks は、ストレージとコンピュートが結合されたモードと同じ機能を提供します。データの書き込みとホットデータのクエリパフォーマンスも同様です。ユーザーは、ストレージとコンピュートが結合されたモードと同様に、データの更新、データレイク分析、マテリアライズドビューのアクセラレーションを実行できます。

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

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 の利点を最大限に活用し、データレイク分析のパフォーマンスを大幅に向上させます。