- यह लेख Postgres डेटाबेस में होने वाले बदलावों को कैप्चर करने के विभिन्न तरीकों पर चर्चा करता है।
- Sequin नाम की एक कंपनी Salesforce और HubSpot जैसे third-party API से डेटा sync करती है, ताकि डेवलपर्स अपने Postgres डेटाबेस का उपयोग करके API डेटा पर applications बना सकें।
- Postgres में चलते हुए डेटा को कैप्चर करने के कई विकल्प हैं, जैसे table changes के आधार पर workflows trigger करना, या real time में डेटा को दूसरे data store, system, या service तक stream करना।
- सबसे सरल तरीका Postgres के inter-process communication feature, Listen/Notify, का उपयोग करना है। यह publish-subscribe pattern का एक implementation है, लेकिन इसमें "at most once" delivery semantics और 8000 bytes payload size limit जैसी सीमाएँ हैं।
- एक और तरीका है tables को सीधे poll करना। इसके लिए हर table में
updated_at column या वैसा कोई field होना चाहिए, जो हर row update होने पर update हो। लेकिन यह तरीका row delete होने का पता नहीं लगा सकता और differences भी उपलब्ध नहीं कराता।
- Postgres दूसरे Postgres डेटाबेस के लिए streaming replication को support करता है, जिसका उपयोग application changes को कैप्चर करने में किया जा सकता है। लेकिन यह तरीका जटिल है और
postgresql.conf को adjust करना पड़ सकता है।
- बदलावों को audit tables से भी कैप्चर किया जा सकता है, जो changes को log करती हैं। यह approach replication slots के उपयोग जैसा है, लेकिन अधिक manual है।
- Postgres में foreign data wrappers (FDWs) भी हैं, जो external data sources से पढ़ने और लिखने की सुविधा देते हैं। हालांकि, यह तरीका केवल बहुत specific situations में ही recommended है।
- निष्कर्षतः, Postgres में बदलावों को कैप्चर करने का सबसे अच्छा तरीका आपके use case पर निर्भर करता है। Listen/Notify non-critical events को कैप्चर करने के लिए अच्छा है, polling simple use cases के लिए एक intuitive solution है, और replication एक robust solution के लिए सबसे बेहतर विकल्प है। अगर replication बहुत कठिन लगे, तो audit tables एक अच्छा middle-ground solution हो सकती हैं।
1 टिप्पणियां
Hacker News राय
pgauditनाम के एक अच्छी तरह परखे गए extension का उपयोग करने का सुझाव देता है, जो audit table बनाता है।updated_atcolumn को poll करने जैसे कुछ खास तरीकों के संभावित जोखिमों पर चर्चा करते हैं।updated_atके बजायtxidको स्टोर करने का सुझाव देता है।