Presto には複数のコネクタがあります。コネクタは読み取りおよび書き込み操作を実装していますが、私が読んだすべてのチュートリアルから、コネクタは通常、読み取り専用のデータ ソースとして使用されているようです。たとえば、netflixでは Amazon S3 に「10 ペタバイト」のデータがあり、Presto ワーカー ノードではディスク (および HDFS) が使用されていないと明示的に述べています。記載されているユース ケースは、「アドホック インタラクティブ」クエリです。
また、Amazon Athena は本質的に S3+Presto であり、同様のユース ケースが付属しています。
これが実際にどのように機能するのか、私は困惑しています。当然のことながら、すべてのクエリで 10 PB のデータを読み取る必要はありません。したがって、データベースのインデックスなど、以前にフェッチしたデータをメモリに保持したいと考えています。ただし、データとクエリに制約がないため、これがどのように効率的であるかを理解できません。
ユース ケース 1: ダッシュボードにメトリックを表示するなど、同じクエリを頻繁に実行します。Presto は、既に「既知」のデータ ポイントの再スキャンを回避しますか?
ユース ケース 2: 大規模なデータ セットを分析しています。各クエリはわずかに異なりますが、共通のサブクエリがあるか、データの共通のサブセットにフィルターをかけます。Presto は以前のクエリから学習し、中間結果を引き継いでいますか?
または、そうでない場合は、中間結果をどこかに保存することをお勧めしますか (たとえば、CREATE TABLE AS ...)?