جدولة استعلام PostgreSQL يعمل على قاعدة بيانات Greenplum

StackOverflow https://stackoverflow.com//questions/22013728

سؤال

لدي جدول يجب ملؤه كل ساعة من البيانات التي يتم سحبها من Greenplum. يتم تخزين هذا الجدول على خادم Greenplum.

لذا، ما أريد معرفته هو ما هي الطريقة (برنامج Python النصي أو برنامج جدولة Windows أو أي شيء آخر) التي ستكون مناسبة لبياناتي (والتي أعتقد أنها يمكن أن تصل إلى 60 جيجابايت أو أكثر) التي يجب استخدامها لجدولة الاستعلام (مكتوب في postgreSQL ) ليتم تشغيلها كل ساعة.

هل يمكن لأي شخص إرفاق نموذج التعليمات البرمجية لنفسه؟

هل كانت مفيدة؟

المحلول

سوف ترغب في القيام بالتوازي COPY نطاقات البيانات من Greenplum إلى PostgreSQL.تأكد من إعداد PostgreSQL لتحميل البيانات بسرعة.إذا كان ذلك ممكنا، استخدم UNLOGGED طاولة؛استخدام خلاف ذلك wal_level = 'minimal' على الأقل.

يعتمد عدد العاملين المتوازيين على نظام الإدخال/الإخراج الفرعي لخادم PostgreSQL أكثر من أي شيء آخر.اختبار وانظر.

أوصي باستخدام Python مع psycopg2 و copy_expert وظيفة المؤشر.يرى المستندات.استخدم المعالجة المتعددة باستخدام أنبوب لمشاركة كائن يشبه الملف بين القارئ والكاتب، مع توصيل القارئ بـ greenplum والكاتب بـ PostgreSQL.

لذلك، يقوم كل عامل بشكل فعال بشيء يشبه إلى حد ما كود الصدفة الزائف التالي:

psql -h greenplum-box \
     -c "COPY (SELECT * FROM mytable WHERE id BETWEEN 1 AND 10000) TO stdin" \
  | \
psql -h postgres-box \
     -c "COPY myttable FROM stdin";

(لكن يمكنك توصيل الاثنين باستخدام pyscopg2، copy_export, والمعالجة المتعددة والأنبوب).

قم بجميع أعمال التحميل السريع المعتادة مثل إنشاء الفهارس بعد ذلك.يرى كيفية تسريع أداء الإدراج في PostgreSQL.

إذا كان لديك مساحة القرص، قم بإنشاء جدول مثل dataload_temp, ، قم بملءها، ثم قم بإسقاط القديم في معاملة واحدة وأعد تسمية الجديد باسم القديم.بهذه الطريقة يكون هناك الحد الأدنى من الاضطراب.

بدلا من ذلك، ألق نظرة على pg_bulkload لتحميل البيانات المجمعة دون اتصال (لكن بدون تدفق).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top