आप वास्तव में 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 को बदलते हैं स.