なぜユーザーはTrinoやPrestoからStarRocksへ移行しているのか

データレイクハウス向けクエリエンジンとして、TrinoとApache Prestoはオープンソースの中でも特に高い人気を誇ります。Hiveのような旧世代のエンジンと比べ、クエリ遅延を数十分から数十秒まで短縮させたことは大きな進歩でした。しかし、数年前に画期的だったその性能も、現代のアナリティクスが求める水準には、もはや達していないのが実情です。
 
特に、アドホッククエリやオペレーショナルアナリティクス、ユーザー向け分析といった即時性が求められる対話的なシナリオでは、多くのユーザーが性能の限界に直面しています。これらの分析を真に実用的なものにするには、サブ秒レベルの応答性能が不可欠だからです。
 
そして、TrinoとPrestoの課題はこれだけにとどまりません。その他にも、主に次のような課題が存在します。
no-highquery

高いクエリレイテンシ

TrinoとPrestoのクエリ性能は、Javaベースのクエリエンジンによって制限されています。C++ベースのエンジンとは異なり、これらのエンジンは最新のCPUによるベクトル化実行の性能を十分に活用することができません。そのため、Trinoはインタラクティブ分析のシナリオにおいて扱いが難しくなります。
no-cloud

リアルタイム分析に非対応

TrinoとPrestoはバッチ分析エンジンとして設計されています。ストリーミングデータはバッチ形式でデータレイクに取り込む必要があります。リアルタイム分析を行うには、別のプラットフォームを導入せざるを得ません。
no-high-concurrency

高い同時実行性への対応が限定的

TrinoとPrestoは、クエリ性能が許容範囲内であっても、同時実行数が増加するにつれてその性能を維持することが困難になります。ユーザーは高い同時実行性が求められるユースケースに対して、別のシステムを併用する必要があることが多く、これにより運用負荷が大幅に増加します。

StarRocks対TrinoおよびPresto

14.6x

StarRocksのネイティブテーブルによる優れたパフォーマンス

5.54x

データレイク上でもStarRocksによる高パフォーマンスを実現

10000QPS

数千人規模の同時ユーザーでも高いパフォーマンスを維持

外部データにクエリ。
データの取り込みは不要。

ローカルデータをより効率的に分析できるだけでなく、StarRocksはApache Hive、Apache Iceberg、Apache Hudi、Delta Lakeなどのデータレイクに保存されたデータを分析するクエリエンジンとしても機能します。

 

StarRocksの外部カタログを使用することで、ユーザーはHDFSやAmazon S3などの異なるシステム上にあるParquet、ORC、CSVといったさまざまなファイル形式のデータに対して、ゼロマイグレーションでシームレスにクエリを実行することが可能です。

なぜ多くのPrestoおよびTrinoユーザーがStarRocksへ移行しているのか

StarRocksの利点は、外部データソースへのクエリにとどまりません。移行を検討すべき優れた理由は他にもあります。
dial-plate

あらゆるシナリオで比類なきパフォーマンスを実現

StarRocksは、データレイク上のクエリ処理においてTrinoおよびPrestoと比較して3倍のパフォーマンスを提供します。
これは、StarRocksが持つ独自のベクトル化実行エンジンによるものであり、C++で実装されているため、最新CPUのSIMD命令を最大限に活用することが可能です。
さらに、StarRocksは最適化されたネイティブストレージエンジンを備えているため、データレイク分析、低レイテンシ、高い同時実行性といったワークロードを、1つのデータベースで統合できます。
cloud-data

データレイク上でも最新データで分析を実行

データ移行を行うことなく、データレイク上でも可能な限り最新のデータに対して分析を実行できます。データレイクのユーザーは、リアルタイム分析のために別途データパイプラインを構築する必要がありません。Apache KafkaなどのソースからのストリーミングデータはStarRocksに取り込まれ、リアルタイムで分析に利用可能になります。
また、StarRocksのストレージエンジンはDelete-and-insertパターンを採用しており、効率的なPartial UpdateおよびUpsert操作を実現します。
bar-graph

インテリジェントマテリアライズドビューで分析を高速化

革新的なIntelligent Materialized View(IMV)技術により、StarRocksはクエリを透過的に高速化し、データパイプラインを簡素化します。IMVは自動でリフレッシュされるため、データの整合性が保証され、クエリは自動的にIMVを活用するよう書き換えられます。コストの高いETLジョブもIMVで代替することで、データパイプラインを簡素化できます。

TrinoおよびPrestoとStarRocksの比較

現代のエンタープライズにおける分析ニーズに対応するために設計されたStarRocksは、優れた機能とパフォーマンスを提供します。TrinoやPrestoには、それと同等の力はありません。
項目

TrinoTrino | Presto

 starrocksStarRocks

クエリエンジン

yesJavaベースのクエリエンジン yesC++ベースの高性能クエリエンジン

クエリ実行

no ベクトル化クエリ実行に非対応

yes完全なベクトル化クエリ実行に対応

リアルタイム分析

noリアルタイム分析に非対応

yesバッチおよびリアルタイム分析に対応

同時実行性のサポート

yes
限られた同時ユーザー数をサポート

yes10,000以上のQPSに対応した高い同時実行性

データレイククエリとローカルストレージのサポート

noローカルストレージ非対応、データレイククエリのみ対応

yesデータレイククエリとローカルストレージの両方に対応

Materialized views

yes基本的なMaterialized viewsのみ対応

yesリアルタイム更新に対応したIntelligent Materialized Views

単一障害点(Point of failure)

noCoordinatorノードに単一障害点あり

yes単一障害点のないMPPアーキテクチャ