ほとんどのデータベースは毎回クエリを最初から再実行するため、読み取りレイテンシはクエリの複雑さとデータサイズに比例します。Readysetは異なるアプローチを取ります:各クエリをデータフローグラフ(結合、フィルター、集約、射影のオペレーターネットワーク)にコンパイルし、データが変化するにつれてクエリの結果を継続的に維持します。上流で行が挿入、更新、または削除されると、変更はグラフを通じて伝播し、キャッシュされた結果がインクリメンタルに更新されます。読み取りは完全なクエリ実行ではなく、事前計算されたマテリアライズドビューへのルックアップになります。
このアーキテクチャはSQLに構造的制約を課します。バイナリ結合には等価述語が必要です;範囲述語や式ベースの結合キーはサポートされていません。相関サブクエリは同等の結合に書き換える必要があります。データフローには外部行ごとの実行がないためです。派生テーブルはサポートされていますが、完全にマテリアライズされた中間ノードにコンパイルされます;書き換えパイプラインは安全な場所でそれらを積極的にインライン化します。
サポートされる結合タイプにはINNER、LEFT OUTER、CROSSが含まれます;RIGHTとFULL OUTERは欠落した一致を追跡する難しさのためサポートされていません。集約には明示的なGROUP BY列参照と少なくとも1つの集約派生射影が必要です。
トレードオフは、クエリをデータフローエンジンがコンパイルできる形式(標準SQLよりも制限的)で表現する必要があることですが、見返りはインクリメンタルなメンテナンスとより高速な読み取りです。
出典: Hacker News · 要約:HeadlinesBriefing