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

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

多くの他のデータ分析システムで 使用される 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 はより柔軟で高性能、データの可用性が向上し、コストが低減されます。

ストレージとコンピュートの分離モードでは、コンピューティングとストレージが分離され、独立してスケールできます。これにより、ストレージとコンピュートが結合されたモードで、ユーザーがコンピュートノードを追加したいときにストレージをスケールしなければならないという長年のコストが排除されます。さらに、コン ピューティングは数秒以内に動的にスケールでき、特にトラフィックのピークと谷が顕著な場合にリソースの利用率を向上させます。
ストレージ層は、オブジェクトストレージのほぼ無制限の容量と高い信頼性を活用して、大量のデータストレージとデータの永続性を実現します。StarRocks は、AWS S3、Google Cloud Storage、Azure Blob Storage、HDFS、その他の S3 互換ストレージ(MinIO など)など、さまざまなオブジェクトストレージシステムと連携できます。
ユーザーは、StarRocks をパブリッククラウド、プライベートクラウド、またはオンプレミスのデータセンターにデプロイすることができます。StarRocks は Kubernetes ベースのデプロイメントをサポートし、ストレージとコンピュートが分離されたクラスターの自動デプロイメントのための Operator を提供します。
ストレージとコンピュートの分離モードの StarRocks は、ストレージとコンピュートが結合されたモードと同じ機能を提供します。データの書き込みとホットデータのクエリパフォーマンスも同様です。ユーザーは、ストレージとコンピュートが結合されたモードと同様に、データの更新、データレイク分析、マテリアライズドビューの加速を行うことができます。
コストベースオプティマイザ

複数テーブルジョインクエリのパフォーマンスを最適化するのは難しいです。実行エンジンだけでは、実行プランの複雑さが複数テーブルジョインクエリシナリオで数桁異なる可能性があるため、優れたパフォーマンスを提供することはできません。関連するテーブルが多いほど、実行プランも多くなり、最適なプランを選択するのが NP 難しい問題になります。効率的な複数テーブル分析のためには、優れたクエリオプティマイザだけが、比較的最適なクエリプランを選択できます。
StarRocks は、ゼロから新しい CBO を設計しました。この CBO は、カスケード型フレームワークを採用し、ベクトル化実行エンジンに深くカスタマイズされ、多くの最適化と革新を備えています。これらの最適化には、共通テーブル式(CTE)の再利用、サブクエリの書き換え、Lateral Join、Join Reorder、分散ジョイン実行の戦略選択、低カーディナリティの最適化が含まれます。CBO は、合計 99 の TPC-DS SQL ステートメントをサポートしています。
CBO により、StarRocks は、特に複雑な複数テーブルジョインクエリにおいて、競合他社よりも優れた複数テーブルジョインクエリパフォーマンスを提供します。