PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

जावा कैशे को अपडेट करने के लिए ट्रिगर पोस्टग्रेज करें

मैं MyBatis से बात नहीं कर सकता, लेकिन मैं आपको बता सकता हूं कि PostgreSQL में एक पब्लिश/सब्सक्राइब सिस्टम बेक किया हुआ है, जो आपको बहुत कम हैकरी के साथ ऐसा करने देगा।

सबसे पहले, widgets . पर एक ट्रिगर सेट अप करें जो हर इंसर्ट, अपडेट और डिलीट ऑपरेशन पर चलता है। इसे प्राथमिक कुंजी निकालने के लिए कहें और NOTIFY widgets_changed, id . (खैर, PL/pgSQL से, आप शायद PERFORM pg_notify(...) चाहते हैं .) पोस्टग्रेएसक्यूएल आपकी सूचना प्रसारित करेगा यदि और जब वह लेन-देन करता है, तो अधिसूचना और संबंधित डेटा दोनों अन्य कनेक्शनों के लिए दृश्यमान होते हैं।

क्लाइंट में, आप इस मानचित्र को अप-टू-डेट रखने के लिए समर्पित एक थ्रेड चलाना चाहेंगे। यह PostgreSQL से कनेक्ट होगा, LISTEN widgets_changed सूचनाओं की कतार शुरू करने के लिए, SELECT * FROM widgets मानचित्र को भरने के लिए, और सूचनाओं के आने की प्रतीक्षा करें। (सूचनाओं के लिए स्पष्ट रूप से जाँच करना JDBC ड्राइवर को मतदान करना शामिल है , जो बेकार है, लेकिन उतना बुरा नहीं जितना आप सोच सकते हैं। देखें PgNotificationPoller एक ठोस कार्यान्वयन के लिए।) एक बार जब आप एक अधिसूचना देखते हैं, तो संकेतित रिकॉर्ड देखें और अपना नक्शा अपडेट करें। ध्यान दें कि LISTEN के लिए यह महत्वपूर्ण है आरंभिक SELECT * . से पहले , चूंकि रिकॉर्ड SELECT * . के बीच बदले जा सकते हैं और LISTEN

इस दृष्टिकोण के लिए आपके आवेदन के बारे में कुछ भी जानने के लिए PostgreSQL की आवश्यकता नहीं है। इसे बस इतना करना है कि सूचनाएं भेजें; आपका आवेदन बाकी करता है। कोई शेल स्क्रिप्ट नहीं है, कोई HTTP नहीं है, और कोई कॉलबैक नहीं है, जिससे आप डेटाबेस को पुन:कॉन्फ़िगर किए बिना अपने एप्लिकेशन को पुन:कॉन्फ़िगर/पुन:नियोजित कर सकते हैं। यह सिर्फ एक डेटाबेस है, और इसका बैकअप लिया जा सकता है, पुनर्स्थापित किया जा सकता है, दोहराया जा सकता है, आदि बिना किसी अतिरिक्त जटिलता के। इसी तरह, आपके एप्लिकेशन में कोई अतिरिक्त जटिलताएं नहीं हैं:इसके लिए केवल PostgreSQL का कनेक्शन चाहिए, जो आपके पास पहले से है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. रेल:ActiveRecord::Base . के लिए कोई कनेक्शन पूल नहीं

  2. PostgreSQL - एक विश्वसनीय कतार लागू करना

  3. लंबे प्रकार के लिए खराब मूल्य:- पोस्टग्रेस्क्ल, हाइबरनेट, स्प्रिंग

  4. SQL क्वेरी स्तंभ मौजूद नहीं है त्रुटि

  5. मैं एक बड़ी तालिका पर दिनांक-आधारित क्वेरी प्रदर्शन को कैसे सुधारूं?