- Artikel ini membahas berbagai cara untuk menangkap perubahan dalam database Postgres.
- Perusahaan bernama Sequin menyinkronkan data dari API pihak ketiga seperti Salesforce dan HubSpot sehingga pengembang dapat membangun data API menggunakan database Postgres mereka.
- Postgres menyediakan beberapa opsi untuk menangkap data yang sedang bergerak, seperti memicu alur kerja berdasarkan perubahan tabel, atau melakukan streaming data secara real-time ke penyimpanan data, sistem, atau layanan lain.
- Pendekatan paling sederhana adalah menggunakan Listen/Notify, fitur komunikasi antarproses milik Postgres. Ini adalah implementasi dari pola publish-subscribe, tetapi memiliki keterbatasan seperti semantik pengiriman "paling banyak sekali" dan batas ukuran payload 8000 byte.
- Metode lain adalah melakukan polling langsung pada tabel, yang mengharuskan setiap tabel memiliki kolom
updated_at atau yang serupa, yang diperbarui setiap kali baris diperbarui. Namun, metode ini tidak dapat mendeteksi saat baris dihapus dan tidak memberikan diff.
- Postgres mendukung streaming replication ke database Postgres lain, dan ini dapat digunakan untuk menangkap perubahan aplikasi. Namun, metode ini kompleks dan mungkin memerlukan penyesuaian
postgresql.conf.
- Perubahan juga dapat ditangkap dari tabel audit yang mencatat perubahan. Pendekatan ini mirip dengan menggunakan replication slot, tetapi lebih manual.
- Ada juga foreign data wrapper (FDW), fitur Postgres yang memungkinkan pembacaan dan penulisan ke sumber data eksternal. Namun, metode ini hanya direkomendasikan dalam situasi yang sangat spesifik.
- Kesimpulannya, cara terbaik untuk menangkap perubahan di Postgres bergantung pada kasus penggunaan. Listen/Notify cocok untuk menangkap peristiwa yang tidak kritis, polling perubahan adalah solusi intuitif untuk kasus penggunaan sederhana, dan replication adalah pilihan terbaik untuk solusi yang tangguh. Jika replication terlalu sulit, tabel audit bisa menjadi solusi tengah yang baik.
1 komentar
Opini Hacker News
pgaudit.