Evolusi Database Jenis Baru - ksqlDB

Notification

×

Evolusi Database Jenis Baru - ksqlDB

05/03/2023 | Maret 05, 2023 WIB Last Updated 2023-03-05T03:14:32Z

Sumber Gambar: docs.ksqldb.io

ksqlDB adalah open source event streaming database yang dirilis oleh Confluent pada tahun 2017.  


ksqlDB adalah teknologi untuk menyederhanakan cara pemrosesan stream aplikasi dari mulai built, deployed, dan maintained, dengan mengintegrasikan dua komponen khusus dalam ekosistem Kafka, yaitu Kafka Connect dan Kafka Streams dalam satu sistem.


Dengan highlevel SQL interface untuk berinteraksi dengan komponen-komponen ini. Beberapa hal yang dapat dilakukan dengan ksqlDB adalah:

  • Data model sebagai stream atau tabel (sekumpulan yang ada di dalam ksqlDB) menggunakan SQL.
  • Memberlakukan sejumlah besar konstruksi SQL (misalnya untuk menggabungkan, aggregating, trans‐forming, filtering, dan windowing data) sehingga memungkinkan untuk membuat representasi turunan baru dari data tanpa menyentuh sebaris kode Java (JVM).
  • Query stream dan tabel menggunakan push query yang berjalan terus menerus, memancarkan atau mendorong hasil ke klien dari setiap data baru yang datang, mendorong kueri dikompilasi ke dalam aplikasi Kafka Streams dan ideal untuk eventdriven microservices yang memerlukan observabilty dan bereaksi terhadap even dengan cepat.
  • Buat view yang terwujud dari stream dan tabel, dan query view menggunakan pull query.
  • Pull query mirip dengan cara kerja keyed-lookups Database SQL tradisional, memanfaatkan Kafka Stream dan menyimpan state.
  • Pull query dapat digunakan oleh klien yang perlu bekerja dengan ksqlDB dalam sinkronisasi atau on-demand workflow.
  • Tentukan konektor untuk mengintegrasikan ksqlDB dengan penyimpanan data eksternal, memungkinkan mudah membaca dari dan menulis ke berbagai sumber data dan sinks. Juga bisa untuk menggabungkan konektor dengan tabel dan stream dalam membuat ETL1 streaming end-to-end pipelines.

Beberapa alasan menggunakan ksqlDB
  • Workfows lebih interaktif berkat managed runtime yang dapat menyusun dan mendekonstruksi stream pemrosesan aplikasi sesuai permintaan menggunakan CLI dan layanan REST untuk mengirimkan query.
  • Lebih sedikit kode yang harus di maintain karena topologi pemrosesan stream diekspresikan menggunakan SQL bukan bahasa JVM.
  • Lower barrier dan konsep baru yang harus dipelajari terutama bagi mereka yang akrab terbiasa menggunakan Database SQL tradisional tetapi baru dalam pemrosesan stream.  Hal ini meningkatkan project onboarding untuk developer baru dan juga maintainability.
  • Menyederhanakan arsitektur, karena interface yang mengelola konektor (untuk integrasi dengan datasource external kedalam Kafka) dan transformasi data digabungkan menjadi satu sistem.  Ada juga pilihan untuk menjalankan Kafka Connect dari JVM yang sama yaitu ksqlDB.2.
  • Meningkatkan produktifitas developer karena membutuhkan lebih sedikit kode untuk mengekspresikan aplikasi pengolah dan kompleksitas dari lower-level system tersembunyi dibalik layer abstraksi baru.  
  • Interaktif workflow diterjemahkan menjadi loop feedback yang lebih cepat dan terdapat test harness yang membuat query diverifikasi.  Sangat sederhana sehingga proses development lebih menyenangkan dan produktif.
  • Cross-project consistency.  Berkat sintaks deklaratif SQL, pemrosesan stream aplikasi yang diekspresikan dalam wujud SQL lebih kecil kemungkinannya mengalami spesiasi (yaitu, mengembangkan fitur unik yang membedakannya dari proyek yang serupa).
  • Setup yang mudah dan penyebaran turnkey berkat beberapa pilihan distribusi, termasuk Docker Image yang didukung secara resmi.
  • Dukungan yang lebih baik untuk eksplorasi data. ksqlDB memudahkan untuk membuat daftar dan mencetak konten topik, dan dengan cepat membuat dan menanyakan tampilan data yang terwujud.  Kasus penggunaan eksplorasi data semacam ini jauh lebih cocok untuk ksqlDB.

Salah satu fitur terbesar dan kekuatan dari ksqlDB adalah kemampuannya untuk memperluas pustaka fungsi bawaan dengan fungsi kustom berbasis Java.  

Jika ingin beroperasi di tingkat JVM yang sangat sering untuk kumpulan aplikasi/kueri tertentu, ada baiknya untuk mengevaluasi apakah akan beroperasi pada tingkat abstraksi yang tepat atau tidak (misalnya lebih masuk akal untuk menggunakan Kafka Streams).

Beberapa kasus lebih baik menggunakan Kafka Stream
  • Memerlukan lower-level access ke status aplikasi,  sehingga perlu menjalankan secara berkala sebuah fungsi terhadap data aplikasi.
  • Perlu bekerja dengan format data yang tidak didukung ksqlDB
  • Membutuhkan lebih banyak fleksibilitas dengan pembuatan profil/pemantauan aplikasi misalnya didistribusikan pelacakan, pengumpulan metrik khusus, dll., atau memiliki banyak logika bisnis yang tidak mudah diekspresikan dalam SQL.