PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Pemicu postgres untuk memperbarui cache Java

Saya tidak dapat berbicara dengan MyBatis, tetapi saya dapat memberi tahu Anda bahwa PostgreSQL memiliki sistem publikasi/berlangganan, yang memungkinkan Anda melakukan ini dengan lebih sedikit peretasan.

Pertama, siapkan pemicu di widgets yang berjalan pada setiap operasi penyisipan, pembaruan, dan penghapusan. Minta untuk mengekstrak kunci utama dan NOTIFY widgets_changed, id . (Nah, dari PL/pgSQL, Anda mungkin ingin PERFORM pg_notify(...) .) PostgreSQL akan menyiarkan pemberitahuan Anda jika dan ketika transaksi itu dilakukan, membuat pemberitahuan dan perubahan data terkait terlihat oleh koneksi lain.

Di klien, Anda ingin menjalankan utas yang didedikasikan untuk menjaga peta ini tetap mutakhir. Itu akan terhubung ke PostgreSQL, LISTEN widgets_changed untuk mulai mengantri notifikasi, SELECT * FROM widgets untuk mengisi peta, dan menunggu pemberitahuan tiba. (Memeriksa notifikasi ternyata melibatkan polling driver JDBC , yang menyebalkan, tapi tidak seburuk yang Anda bayangkan. Lihat PgNotificationPoller untuk implementasi nyata.) Setelah Anda melihat pemberitahuan, cari catatan yang ditunjukkan dan perbarui peta Anda. Perhatikan bahwa penting untuk LISTEN sebelum SELECT * inisial , karena catatan dapat diubah antara SELECT * dan LISTEN .

Pendekatan ini tidak mengharuskan PostgreSQL untuk mengetahui apa pun tentang aplikasi Anda. Yang harus dilakukan hanyalah mengirim pemberitahuan; aplikasi Anda melakukan sisanya. Tidak ada skrip shell, tidak ada HTTP, dan tidak ada panggilan balik, memungkinkan Anda mengonfigurasi ulang/menerapkan ulang aplikasi Anda tanpa juga harus mengonfigurasi ulang database. Ini hanya database, dan dapat dicadangkan, dipulihkan, direplikasi, dll. tanpa komplikasi tambahan. Demikian pula, aplikasi Anda tidak memiliki kerumitan tambahan:yang dibutuhkan hanyalah koneksi ke PostgreSQL, yang sudah Anda miliki.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa cara paling elegan untuk menyimpan cap waktu dengan nanosec di postgresql?

  2. [Video] Kekuatan Pengindeksan di PostgreSQL

  3. Uji fungsi HASH untuk partisi tabel Postgres

  4. Dapatkan nilai dari baris pertama dan terakhir per grup

  5. Python/Flask:Bagaimana cara mengetahui berapa lama pengguna menghabiskan waktu di halaman? (Aplikasi entri data/log waktu)