EventQL: Bahasa Kueri yang Dirancang Khusus untuk Event Sourcing Memicu Diskusi Developer

Tim Komunitas BigGo
EventQL: Bahasa Kueri yang Dirancang Khusus untuk Event Sourcing Memicu Diskusi Developer

Dalam dunia pengembangan perangkat lunak, event sourcing telah muncul sebagai pola yang kuat untuk membangun aplikasi yang tangguh. Alih-alih hanya menyimpan status data saat ini, pendekatan ini merekam setiap perubahan sebagai peristiwa yang tidak dapat diubah. Hal ini menciptakan jejak audit lengkap dari segala sesuatu yang telah terjadi dalam suatu sistem. Tantangannya selalu adalah bagaimana menanyakan log peristiwa yang terus bertumbuh ini dengan efektif. Perkenalan baru-baru ini tentang EventQL, bahasa kueri khusus yang dirancang khusus untuk sistem event-sourced, telah memicu percakapan menarik di kalangan komunitas pengembang tentang masa depan penelusuran peristiwa.

Filosofi di Balik Pembuatan Bahasa Kueri Baru

Ketika tim EventSourcingDB mulai menciptakan event store mereka, mereka menghadapi keputusan mendasar: mengadopsi standar kueri yang ada seperti SQL atau membangun sesuatu yang benar-benar baru. Mereka memilih jalur yang terakhir, dengan argumen bahwa SQL tradisional memiliki ketidakcocokan konseptual dengan aliran peristiwa. SQL berevolusi untuk tabel relasional dengan rekaman yang dapat diubah, sementara event sourcing berurusan dengan fakta yang tidak dapat diubah yang disusun dalam urutan kronologis. Tim tersebut juga mempertanyakan struktur dasar SQL, dengan mencatat bahwa memulai kueri dengan SELECT terasa terbalik ketika secara konseptual Anda mulai dengan mendefinisikan sumber data Anda.

EventQL membalik pendekatan konvensional ini. Kueri dimulai dengan klausa FROM, mencerminkan bagaimana pengembang secara alami berpikir tentang mengeksplorasi aliran peristiwa. Anda mulai dengan menentukan peristiwa apa yang Anda periksa, lalu menyaringnya, dan akhirnya memproyeksikan hasilnya ke dalam format yang Anda inginkan. Desain yang disengaja ini meluas ke pilihan terminologi - menggunakan PROJECT INTO alih-alih istilah teknis seperti map untuk menekankan tujuan di balik operasi tersebut daripada sekadar transformasi mekanis.

Saat Anda memiliki kemampuan untuk secara deklaratif menentukan jaringan proyeksi hilir, Anda dapat menukarnya secara panas, mengontrol versinya, dan melakukan perjalanan waktu sepanjang dimensi-waktu-versi-kode dan dimensi-waktu-data secara independen - yang bisa sangat luar biasa.

Perbandingan Sintaks EventQL vs SQL

Aspek EventQL SQL Tradisional
Awal Query Klausa FROM Klausa SELECT
Proyeksi Hasil PROJECT INTO SELECT
Model Data Aliran event Tabel relasional
Penggunaan Utama Analisis ad-hoc, debugging Query tujuan umum
Pengetikan Ketat, konversi eksplisit Sering kali konversi implisit

Reaksi Komunitas dan Pendekatan Alternatif

Komunitas pengembang telah merespons dengan rasa ingin tahu dan analisis yang bijaksana. Beberapa komentator langsung membuat perbandingan dengan sistem lain di ruang ini, khususnya Temporal, yang juga berurusan dengan aliran peristiwa dan pemutaran ulang yang deterministik. Hal ini memicu diskusi tentang apakah EventSourcingDB mewakili pendekatan yang benar-benar baru atau mengikuti pola yang mapan dengan pilihan implementasi yang berbeda.

Pengembang lain menunjuk ke teknologi alternatif yang mengatasi tantangan serupa dari sudut yang berbeda. Sistem seperti Materialize dan Feldera disebutkan sebagai contoh pendekatan yang secara matematis solid untuk membuat tampilan materialisasi waktu-nyata menggunakan SQL. Sistem-sistem ini dapat mempertahankan hierarki kompleks dari tampilan turunan yang diperbarui secara otomatis saat data dasar berubah, mirip dengan bagaimana spreadsheet menghitung ulang ketika sel input dimodifikasi. Teknologi kunci di balik sistem ini - DBSP (Delta Binary Synchronization Process) dan Differential Dataflow - mewakili penelitian akademis yang sekarang menemukan aplikasi praktis.

Aplikasi Praktis dan Pertimbangan Kinerja

EventQL memposisikan dirinya sebagai solusi untuk kasus penggunaan tertentu daripada bahasa kueri yang cocok untuk semua keadaan. Ia unggul dalam situasi di mana proyeksi yang sudah dibangun sebelumnya akan berlebihan: men-debug masalah produksi, mengeksplorasi data historis untuk analisis satu kali, atau menyelidiki pola yang tidak diantisipasi selama desain sistem awal. Bahasa ini mencakup fitur seperti beberapa klausa FROM untuk menggabungkan aliran, kemampuan pengelompokan dan agregasi, serta subkueri untuk penyaringan yang kompleks.

Namun, tim EventSourcingDB transparan tentang keterbatasan kinerja. Sistem ini terutama mengindeks metadata seperti jenis peristiwa, subjek, dan stempel waktu daripada struktur muatan JSON yang mendalam. Kueri yang menyaring berdasarkan bidang muatan arbitrer dapat memicu pemindaian penuh dari log peristiwa. Pendekatan jujur terhadap pertukaran ini telah dicatat secara positif dalam diskusi komunitas, dengan para pengembang menghargai panduan yang jelas tentang kapan menggunakan EventQL versus kapan membangun proyeksi yang dioptimalkan untuk data yang sering diakses.

Kasus Penggunaan EventQL

  • Direkomendasikan Untuk:

    • Debugging masalah produksi
    • Eksplorasi data satu kali
    • Analisis batas konsistensi dinamis
    • Query kustom sesekali
  • Tidak Direkomendasikan Untuk:

    • Operasi baca frekuensi tinggi
    • Jalur latensi kritis
    • Query produksi berulang

Masa Depan Alat Penelusuran Peristiwa

Perkenalan EventQL mencerminkan tren yang lebih luas dalam desain basis data: menciptakan alat khusus untuk pola data tertentu daripada mencoba memaksakan solusi serba guna. Seperti yang diamati oleh salah satu anggota komunitas, ada potensi signifikan untuk alat di masa depan yang menjembatani kesenjangan antara analisis eksplorasi dan tampilan materialisasi tingkat produksi. Kemampuan untuk secara deklaratif menentukan jaringan proyeksi yang dapat dikontrol versi, ditukar secara panas, dan melakukan perjalanan waktu mewakili arah yang menarik untuk sistem event-sourced.

Sementara EventQL mewakili solusi yang terfokus untuk EventSourcingDB, diskusi komunitas menunjukkan bahwa evolusi penelusuran peristiwa baru saja dimulai. Seiring lebih banyak organisasi mengadopsi pola event sourcing, permintaan untuk alat kueri khusus kemungkinan akan tumbuh, berpotensi mengarah pada upaya standardisasi atau munculnya beberapa pendekatan bersaing yang disesuaikan dengan kasus penggunaan dan persyaratan kinerja yang berbeda.

Pengembangan EventQL menyoroti pematangan penting dalam ekosistem event sourcing. Alih-alih memperlakukan event store sebagai log sederhana yang hanya dapat ditambahkan, pengembang sekarang membangun alat yang canggih untuk mengekstrak wawasan yang berarti dari aliran peristiwa. Kemajuan dari penyimpanan dasar ke kemampuan penelusuran yang cerdas ini menunjukkan bahwa event sourcing berevolusi dari pola arsitektur niche menjadi pendekatan mainstream dengan rangkaian alat khususnya sendiri.

Referensi: Designing EventQL, an Event Query Language