Sebagian besar pipeline data streaming memerlukan transformasi data. Beberapa pengguna lebih suka mentransformasi data setelah mencapai tujuannya dalam pipeline ekstrak, muat, transformasi (ELT), sementara yang lain memilih untuk mentransformasi data sebelum penyerapan dalam pipeline ekstrak, transformasi, dan muat (ETL). Biasanya, arsitektur ini memerlukan pipeline yang kompleks dengan alat seperti Dataflow atau Apache Flink untuk melakukan transformasi data.
Pub/Sub menawarkan Transformasi Pesan Tunggal (SMT) untuk menyederhanakan transformasi data untuk pipeline streaming. SMT memungkinkan modifikasi ringan pada data dan atribut pesan secara langsung dalam Pub/Sub. SMT menghilangkan kebutuhan akan langkah-langkah pemrosesan data tambahan atau produk transformasi data terpisah.
Saat SMT dijalankan, SMT akan mengambil pesan Pub/Sub sebagai input, termasuk data dan atribut pesan. Outputnya adalah pesan Pub/Sub yang telah ditransformasi, dengan modifikasi pada data atau atribut. SMT diintegrasikan ke dalam Pub/Sub API, sehingga Anda dapat mengelolanya sebagai bagian dari konfigurasi topik atau langganan.
Kasus penggunaan SMT
Pertimbangkan untuk mendesain toko online yang ingin memberikan rekomendasi produk yang dipersonalisasi kepada pelanggan saat mereka menjelajahi situs. Untuk melakukannya, Anda dapat menggunakan Pub/Sub untuk mengumpulkan data real-time tentang aktivitas pelanggan di situs. Hal ini mencakup data tentang produk yang dilihat, produk yang ditambahkan ke keranjang, dan rating yang diberikan untuk produk.
Namun, data mentah ini sering kali memerlukan beberapa penyesuaian sebelum dapat digunakan untuk membuat rekomendasi. Misalnya, data mentah mungkin berisi detail yang tidak relevan untuk kasus penggunaan Anda. Contoh detail tersebut adalah jenis browser pelanggan atau waktu mereka mengunjungi situs. Data mungkin juga tidak dalam format yang diperlukan untuk sistem rekomendasi. Misalnya, stempel waktu mungkin dalam format yang berbeda, atau ID produk mungkin perlu dikonversi ke jenis yang berbeda.
Anda dapat menggunakan SMT Pub/Sub untuk melakukan transformasi data seperti berikut:
Hapus informasi identitas pribadi (PII), seperti nama lengkap dan alamat, untuk melindungi privasi pelanggan.
Pertahankan hanya peristiwa yang relevan dengan rekomendasi, seperti penayangan dan pembelian produk, dan hapus peristiwa lainnya, seperti perubahan profil pelanggan.
Pastikan semua stempel waktu, nilai mata uang, dan ID produk mematuhi format dan jenis yang konsisten yang kompatibel dengan sistem rekomendasi.
Buat kolom data baru dari data mentah, seperti nilai total keranjang belanja atau waktu tunggu halaman produk.
Tambahkan inferensi dari model Vertex AI ke data peristiwa, seperti klasifikasi, prediksi, sentimen, atau penyematan.
Singkatnya, SMT memungkinkan berbagai kasus penggunaan, termasuk:
Penyemaran dan penyuntingan data: Lindungi data sensitif dengan menyamarkan atau menyunting kolom seperti nomor kartu kredit atau PII, sehingga membantu kepatuhan terhadap peraturan privasi data.
Konversi format data: Mengubah data antara format yang berbeda untuk memastikan kompatibilitas dengan sistem hilir.
Pemfilteran pesan: Hanya memproses pesan yang relevan dengan memfilter pesan yang tidak diinginkan berdasarkan konten atau atribut. SMT memungkinkan kondisi pemfilteran yang lebih kompleks daripada filter bawaan Pub/Sub.
Transformasi data sederhana: Lakukan tugas manipulasi data dasar, seperti manipulasi string, pemformatan tanggal, atau operasi matematika.
Inferensi AI: Integrasikan model AI secara lancar ke dalam pipeline Pub/Sub Anda, dengan menggunakan SMT Inferensi AI.
Jenis SMT
Pub/Sub mendukung SMT berikut:
- Inferensi AI: Mendapatkan inferensi pada pesan Pub/Sub dari model Vertex AI.
- User Defined Functions: Memanggil fungsi yang ditentukan pengguna (UDF) JavaScript untuk melakukan transformasi kustom pada pesan Pub/Sub.
Contoh alur pesan untuk SMT
Gambar menunjukkan contoh sistem Pub/Sub dengan SMT yang diterapkan di tingkat topik dan langganan.
Prosedur berikut menunjukkan cara alur pesan dalam sistem Pub/Sub:
Aplikasi penerbit Publisher 1 dan Publisher 2 memublikasikan pesan A dan B masing-masing ke topik Pub/Sub.
SMT topik mengubah pesan A dan B menjadi pesan A' dan B'.
Jika skema dilampirkan ke topik, pesan yang diubah A' dan B' divalidasi berdasarkan skema. Misalnya, jika A' tidak cocok dengan skema, publikasi pesan A akan gagal dengan error.
Pesan yang telah diubah A' dan B' ditulis ke penyimpanan Pub/Sub.
Pub/Sub mengirimkan pesan A' dan B' ke semua langganan yang terlampir, yaitu Subscription 1 dan Subscription 2 seperti yang ditunjukkan pada gambar.
Jika Subscription 1 telah mengonfigurasi filter, pesan A' dan B' akan dievaluasi berdasarkan filter. Hanya pesan yang cocok dengan filter yang akan dilanjutkan ke langkah berikutnya. Pesan lainnya dikonfirmasi secara otomatis oleh Pub/Sub.
Jika Subscription 2 memiliki filter yang dikonfigurasi, pesan A' dan B' akan dievaluasi berdasarkan filter. Hanya pesan yang cocok dengan filter yang akan dilanjutkan ke langkah berikutnya. Pesan lainnya dikonfirmasi secara otomatis oleh Pub/Sub.
SMT Subscription 1 mengubah pesan A' dan B'. A' menjadi A'' dan B' menjadi B''.
SMT Subscription 2 mengubah pesan A' dan B'. A' tetap sebagai A' dan B' dikecualikan.
Jika Subscription 1 adalah langganan push dengan pembukaan payload yang diaktifkan, pesan A'' dan B'' akan dibuka. Jika Subscription 2 adalah langganan push dengan pembukaan payload yang diaktifkan, A' akan dibuka.
Subscriber 1 menerima pesan B'', Subscriber 2 menerima pesan A'', dan Subscriber 3 menerima pesan A'.
Pelanggan mengonfirmasi pesan yang diterima.
Pub/Sub menghapus pesan yang telah dikonfirmasi dari penyimpanan.
Batasan
Maksimal 5 SMT dapat diaktifkan pada topik atau langganan.
SMT beroperasi pada satu pesan Pub/Sub. Mereka tidak dapat menggabungkan beberapa pesan Pub/Sub.