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

एक निर्दिष्ट बिंदु (एक टाइमस्टैम्प या एक लेनदेन आईडी) के बाद से वृद्धिशील अद्यतनों को क्वेरी कैसे करें?

आप वास्तव में PostgreSQL 9.4 की लॉजिकल डिकोडिंग चाहते हैं। समर्थन, जो आपको एक स्ट्रीम बदलें . निकालने देता है सर्वर से। इसका उपयोग करने के लिए आपको एक तार्किक डिकोडिंग प्लगइन की आवश्यकता होती है जो सर्वर पर परिवर्तन स्ट्रीम को आपके ऐप द्वारा उपभोग की जाने वाली चीज़ में बदल देता है। विकास में कई हैं, लेकिन यह अभी भी बहुत जल्दी है।

चूंकि आपने एक टिप्पणी में उल्लेख किया है कि आप AWS RDS का उपयोग कर रहे हैं, इस समय आप भाग्य से बाहर हैं, क्योंकि लेखन के समय RDS कोई डिकोडिंग प्लगइन्स प्रदान नहीं करता है और आपको उन्हें स्थापित करने के लिए सुपरयूज़र विशेषाधिकारों की आवश्यकता होगी।

आप पूर्ण वृद्धिशील प्रतिलिपि के लिए xmin और xmax का उपयोग नहीं कर सकते, क्योंकि आप PostgreSQL में गंदा पढ़ना नहीं कर सकते हैं, इसलिए आप यह नहीं देख सकते हैं कि कोई टपल DELETE किया गया है या नहीं डी। लेन-देन आईडी का उपयोग करने के लिए आपको VACUUM . को रोकना होगा "मृत" पंक्तियों को हटाने से, यानी ऐसी पंक्तियाँ जिन्हें अभी भी किसी भी वर्तमान लेनदेन को सही ढंग से करने की आवश्यकता नहीं है। आपको गंदे पढ़ने में भी सक्षम होना चाहिए। उनमें से किसी के पास PostgreSQL में आसान समाधान नहीं हैं।

यदि आपके पास केवल-सम्मिलित तालिकाएँ . हैं (या आप आवेषण और अद्यतन करते हैं, कभी नहीं हटाते हैं, और कभी भी एक पंक्ति की प्राथमिक कुंजी नहीं बदलते हैं) तो आप संभवतः लेनदेन xmin का उपयोग कर सकते हैं। आपको लेन-देन-आईडी रैपराउंड से निपटना होगा। pg_database.datfrozenxid . की जांच करके और pg_class.relfrozenxid ब्याज के संबंध के लिए। विवरण के लिए कोड में स्रोत कोड और टिप्पणियाँ देखें। VACUUM और यदि आप किसी प्रविष्टि को कभी नहीं हटाते हैं, तो गंदी पठन की कमी कोई समस्या नहीं है, क्योंकि आपको "गायब" पंक्तियों को देखने की आवश्यकता नहीं है।

यदि संभव हो तो 9.4+ में तार्किक डिकोडिंग का उपयोग करें। पुराने संस्करणों के लिए यदि आपको पूर्ण प्रतिकृति की आवश्यकता है तो आपको ट्रिगर के साथ एक परिवर्तन कतार जमा करनी होगी।

यदि आप हटाने और प्राथमिक कुंजी परिवर्तनों को पूरी तरह से प्रतिबंधित कर सकते हैं तो आप xmin . का उपयोग कर सकते हैं बदली हुई पंक्तियों को खोजने के लिए, जब तक आप यह सुनिश्चित करने के लिए ध्यान रखते हैं कि कोई delete . नहीं हैं रन, या कोई update s जो primary key change को बदलते हैं स.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL पर SQL के साथ एक सरणी में एकाधिक पंक्तियों को संयोजित करें

  2. योग और उत्पन्न श्रृंखला postgresql में काम नहीं करती है

  3. अपाचे स्पार्क:JDBC कनेक्शन काम नहीं कर रहा

  4. PostgreSQL में विशेष कॉलम नामों वाले कॉलम चुनें

  5. ValueError:डेटाटाइम इंडेक्स को डेटाटाइम 64 [हमें] टाइप करने के लिए नहीं डाला जा सकता है