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

डेटा-वेयरहाउस के लिए PostgreSQL:निकट-वास्तविक समय ETL / डेटा की निकासी के लिए सबसे अच्छा तरीका

यह मानते हुए कि आपकी रुचि की तालिका में एक अद्वितीय, अनुक्रमित, अनुक्रमिक कुंजी है (या इसके साथ संवर्धित की जा सकती है), तो आपको केवल SELECT ... FROM table ... WHERE key > :last_max_key फ़ाइल में आउटपुट के साथ, जहां last_max_key अंतिम निष्कर्षण से अंतिम कुंजी मान है (0 यदि पहला निष्कर्षण है।) यह वृद्धिशील, विघटित दृष्टिकोण से बचा जाता है प्रविष्टि डेटापथ में ट्रिगर विलंबता का परिचय (चाहे वह कस्टम ट्रिगर हो या संशोधित स्लोनी), और आपके सेटअप के आधार पर सीपीयू आदि की संख्या के साथ बेहतर पैमाने पर हो सकता है। (हालांकि, यदि आपको ट्रैक UPDATE भी करना है। रों , और अनुक्रमिक कुंजी आपके द्वारा जोड़ी गई थी, फिर आपका UPDATE स्टेटमेंट SET . होना चाहिए NULL . की कुंजी कॉलम इसलिए इसे एक नया मूल्य मिलता है और अगले निष्कर्षण द्वारा उठाया जाता है। आप ट्रैक नहीं कर पाएंगे DELETE रों बिना ट्रिगर के।) क्या टैलेंड का जिक्र करते समय आपके मन में यही था?

मैं लॉगिंग सुविधा का उपयोग तब तक नहीं करूंगा जब तक कि आप ऊपर दिए गए समाधान को लागू नहीं कर सकते; लॉगिंग में सबसे अधिक संभावना है ओवरहेड लॉक करना यह सुनिश्चित करने के लिए कि लॉग लाइनें क्रमिक रूप से लिखी गई हैं और एक-दूसरे को ओवरलैप/ओवरराइट न करें जब कई बैकएंड लॉग को लिखते हैं (पोस्टग्रेज स्रोत की जांच करें।) लॉकिंग ओवरहेड विनाशकारी नहीं हो सकता है, लेकिन आप इसके बिना कर सकते हैं यदि आप वृद्धिशील का उपयोग कर सकते हैं SELECT विकल्प। इसके अलावा, विवरण लॉगिंग डूब जाएगी कोई भी उपयोगी चेतावनी या त्रुटि संदेश, और स्वयं को पार्स करना तात्कालिक नहीं होगा

जब तक आप WALs को पार्स करने के लिए तैयार नहीं होते (लेन-देन स्थिति ट्रैकिंग सहित, और जब भी आप Postgres को अपग्रेड करते हैं तो कोड को फिर से लिखने के लिए तैयार होते हैं) मैं आवश्यक रूप से WAL का उपयोग नहीं करूंगा - अर्थात, जब तक कि आपके पास अतिरिक्त हार्डवेयर उपलब्ध न हो मजबूत> , जिस स्थिति में आप WALs को निष्कर्षण के लिए किसी अन्य मशीन पर भेज सकते हैं (दूसरी मशीन पर आप बेशर्मी से ट्रिगर का उपयोग कर सकते हैं -- या यहां तक ​​कि स्टेटमेंट लॉगिंग -- चूंकि वहां जो कुछ भी होता है वह INSERT . को प्रभावित नहीं करता है /UPDATE /DELETE प्राथमिक मशीन पर प्रदर्शन।) ध्यान दें कि प्रदर्शन-वार (प्राथमिक मशीन पर), जब तक कि आप सैन को लॉग नहीं लिख सकते, आपको शिपिंग वाल से तुलनीय प्रदर्शन हिट (ज्यादातर फाइल सिस्टम कैश को थ्रैश करने के मामले में) मिलेगा। वृद्धिशील SELECT . चलाने से भिन्न मशीन के लिए ।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. फ़ंक्शन UNIX_TIMESTAMP मौजूद नहीं है

  2. कॉलम मान वाली पंक्तियों को शून्य के रूप में कैसे चुनें?

  3. पोस्टग्रेज त्रुटि विधि org.postgresql.jdbc.PgConnection.createClob () लागू नहीं है

  4. एक चयन में डुप्लिकेट बाद के रिकॉर्ड को फ़िल्टर करना

  5. पोस्टग्रेज ट्रंकेट धीमा है