Aplikasi perlu memiliki data yang lebih baru diperbarui dari database mungkin. Dalam kasus seperti itu, apakah ada cara lain untuk mendapatkan data, selain dari penghitung waktu berbasis database (polling)?
Saya bekerja dengan MS SQL Server 2008 (dan aplikasi .NET + Kerangka Entitas), tetapi saya ingin mengetahui tentang jenis-jenis database lain juga.
Jawaban:
Pialang Layanan untuk SQL Server 2005+ dapat melakukan ini.
Maaf, saya tidak yakin dengan RDBMS lainnya
sumber
Di Oracle Anda dapat menggunakan paket DBMS_ALERT bawaan untuk memfasilitasi ini.
sumber
Vendor basis data tertentu juga menyediakan bus pesan terintegrasi yang hanya dapat dilanggan oleh aplikasi Anda:
Alternatifnya adalah dengan merute data ke dalam database di tempat pertama melalui bus pesan seperti Tibco / RV dan cukup "cabang" itu, on stream pergi ke DB dan satu pergi ke aplikasi Anda, atau menggunakan lapisan caching seperti Coherence antara aplikasi Anda dan DB.
sumber
DENGARKAN / PEMBERITAHUAN untuk PostgreSQL
http://www.postgresql.org/docs/current/static/sql-notify.html
dalam database ...
atau dalam suatu fungsi / pemicu:
di klien basis data:
Klien LISTEN akan menerima ID proses PostgreSQL, nama saluran, dan nilai pesan.
Driver JDBC standar untuk PostgreSQL tidak suka notifikasi, namun Anda dapat menggunakan https://github.com/impossibl/pgjdbc-ng driver untuk tujuan ini
sumber
Solusi Oracle lainnya: Kami telah mengembangkan aplikasi menggunakan kerangka kerja dotnet dari Microsoft yang memanfaatkan fitur Pemberitahuan Perubahan Database Oracle bersama dengan ODP.Net (penyedia data Oracle untuk dotnet). Dengan menggunakan ini, database sebenarnya memberitahukan aplikasi dotnet ketika data baru telah tiba memungkinkan kita untuk menghindari polling yang konstan. Tautan yang saya referensi di atas adalah tutorial Oracle untuk melakukan hal itu. Semoga ini bisa membantu Anda.
Tidak tahu tentang RDBMS lainnya.
sumber
Untuk salah satu aplikasi kami (diakses melalui Chrome dan ONLY Chrome), kami menggunakan MySQL dengan sys_exec UDF . Pada dasarnya, mengapa Chrome - karena dukungan WebSocket.
Setelah pembaruan / masukkan / hapus yang kritis terjadi, program eksternal dijalankan melalui fungsi sys_exec yang baru ditambahkan yang tertanam dalam pemicu tertentu. Pada saat itu, kami memiliki semua yang kami butuhkan untuk menyampaikan pesan ke setiap klien yang terhubung tanpa perlu polling atau beberapa pertanyaan karena semuanya terjadi secara real-time.
sumber
Kami menggunakan kombinasi Oracle GoldenGate dan Java Persistence API (JPA) untuk melakukan ini dengan database Oracle, tetapi juga dengan DB2, Sybase, Microsoft SQL Server, MySQL, Teradata, dll. Fitur ini dijelaskan di sini: http: // docs .oracle.com / middleware / 1212 / coherence / COHIG / golden_g.htm
Apa yang dilakukan GoldenGate adalah mengubah log transaksi basis data menjadi aliran peristiwa yang dapat difilter yang dapat dikonsumsi di mana saja di seluruh jaringan. Kami menggunakannya untuk mengubah transaksi yang relevan menjadi pembaruan cache atau pembatalan cache, yang keduanya dapat memicu peristiwa tingkat aplikasi, misalnya mendorong data sepenuhnya ke aplikasi desktop atau HTML5 websocket.
(Untuk pengungkapan penuh, saya bekerja di Oracle pada salah satu produk menggunakan GoldenGate.)
sumber