HeadlinesBriefing HeadlinesBriefing.com

Penulisan Ulang SQL Readyset: Pipeline Aliran Data

Hacker News •
×

Sebagian besar basis data mengeksekusi ulang kueri dari awal setiap kali, membuat latensi baca sebanding dengan kompleksitas kueri dan ukuran data. Readyset mengambil pendekatan yang berbeda: ia mengompilasi setiap kueri menjadi grafik aliran data—jaringan operator (gabungan, filter, agregasi, proyeksi) yang terus-menerus memelihara hasil kueri saat data berubah. Ketika sebuah baris disisipkan, diperbarui, atau dihapus di hulu, perubahan tersebut menyebar melalui grafik, dan hasil yang di-cache diperbarui secara inkremental. Pembacaan menjadi pencarian ke tampilan materialisasi yang telah dihitung sebelumnya, bukan eksekusi kueri penuh.

Arsitektur ini memberlakukan batasan struktural pada SQL. Gabungan biner memerlukan predikat kesetaraan; predikat rentang atau kunci gabungan berbasis ekspresi tidak didukung. Subkueri berkorelasi harus ditulis ulang menjadi gabungan yang setara, karena aliran data tidak memiliki eksekusi per baris luar. Tabel turunan didukung tetapi dikompilasi menjadi node perantara yang sepenuhnya dimaterialisasi; pipeline penulisan ulang secara agresif inline mereka di tempat yang aman.

Jenis gabungan yang didukung termasuk INNER, LEFT OUTER, dan CROSS; RIGHT dan FULL OUTER tidak didukung karena sulitnya melacak kecocokan yang hilang. Agregasi memerlukan referensi kolom GROUP BY yang eksplisit dan setidaknya satu proyeksi turunan agregasi.

Tradeoff-nya adalah bahwa kueri harus dinyatakan dalam bentuk yang dapat dikompilasi oleh mesin aliran data—lebih restriktif daripada SQL standar—tetapi imbalannya adalah pemeliharaan inkremental dan pembacaan yang lebih cepat.

Sumber: Hacker News · Diringkas oleh HeadlinesBriefing