مشاركة عبر


اعتبارات استخدام الملحقات والوحدات النمطية

توضح هذه المقالة بعض الاعتبارات الخاصة التي يجب أن تكون على دراية بها، عند استخدام ملحقات أو وحدات نمطية معينة في قاعدة بيانات Azure لمثيل خادم PostgreSQL المرن.

اعتبارات عامة مع ملحقات

لاستخدام ملحق في قاعدة بيانات Azure لمثيل الخادم المرن PostgreSQL، يجب عليك:

  • السماح بالتمديد. إذا لم يكن الملحق مسموحا به، فستفشل أي محاولة لتنفيذ CREATE EXTENSIONأو ALTER EXTENSIONDROP EXTENSIONأو أو COMMENT ON EXTENSION مع وجود خطأ يشير إلى أن الملحق المشار إليه غير مسموح به.
  • إذا كان الملحق ينشر بعض المكتبات الثنائية المشتركة التي تتطلب تخصيص الذاكرة المشتركة والوصول إليها، وتحتاج إلى تحميلها عند بدء تشغيل الخادم، فيجب عليك أيضا اتباع الإرشادات المتوفرة في مكتبات التحميل.
  • قم بإنشاء ملحق في قواعد البيانات التي تريد أن ينشر فيها الملحق كائنات SQL الموزعة مع هذا الملحق.
  • إسقاط التمديد. عندما تريد إزالة من قاعدة البيانات التي تقوم فيها بتنفيذ الأمر كافة كائنات SQL الموزعة بواسطة هذا الملحق.
  • تحديث الامتدادات، لتحديث جميع عناصر SQL التي تم نشرها بواسطة ملحق مثبت بالفعل إلى أحدث إصدار.
  • عرض الملحقات المثبتة والإصدارات المقابلة لها.

إذا تلقيت أي خطأ أثناء تنفيذ CREATE EXTENSIONالأوامر ، ALTER EXTENSIONأو DROP EXTENSIONCOMMENT ON EXTENSION الأوامر على قاعدة بيانات Azure لمثيل الخادم المرن PostgreSQL، فراجع قائمة الأخطاء المحتملة، وما الذي يمكن أن يكون سبب كل من هذه الأخطاء.

اعتبارات عامة مع وحدات نمطية

لاستخدام وحدة نمطية في قاعدة بيانات Azure لمثيل خادم PostgreSQL المرن، ما عليك سوى إضافتها إلى معلمة الخادم shared_preload_libraries كما هو موضح في مكتبات التحميل.

لا يلزم إدراج الوحدات في القائمة المسموح بها. هذا مطلب حصري للملحقات.

ملحقات ذات اعتبارات محددة

تعدد القائمة التالية جميع الملحقات المدعومة التي تتطلب اعتبارات محددة عند استخدامها في قاعدة بيانات Azure لمثيل خادم PostgreSQL المرن:

  • AGE
  • dblink
  • pg_buffercache
  • pg_cron
  • pg_hint_plan
  • pg_prewarm
  • pg_repack
  • pg_stat_statements
  • postgres_fdw
  • pgstattuple

AGE

ملحق Apache AGE هو ملحق رسم بياني ل PostgreSQL مدعوم من قاعدة بيانات Azure ل PostgreSQL. يوفر وظائف قاعدة بيانات الرسم البياني، ودعم استعلام cypher المفتوح، والقدرة على تنفيذ استعلامات معقدة على بيانات الرسم البياني المخزنة في PostgreSQL. "Apache AGE" هو مشروع مفتوح المصدر تم إصداره بموجب ترخيص Apache 2.0.

تثبيت AGE

لاستخدام AGE ، تأكد من "إدراج الامتداد في القائمة المسموح بها " ، و "تحميل مكتبته" ، و "تثبيت الامتداد" في قاعدة البيانات التي تخطط لاستخدام وظائفها عليها.

dblink يسمح لك الملحق بالاتصال من قاعدة بيانات Azure واحدة لمثيل خادم PostgreSQL المرن إلى قاعدة بيانات أخرى أو قاعدة بيانات أخرى في نفس الخادم. تدعم قاعدة بيانات Azure ل PostgreSQL كلا من الاتصالات الواردة والصادرة بأي خادم PostgreSQL. يحتاج الخادم المرسل إلى السماح بالاتصالات الصادرة إلى الخادم المتلقي. وبالمثل، يحتاج الخادم المتلقي للسماح الاتصالات من خادم الإرسال.

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

pg_buffercache

يمكن استخدام الامتداد pg_buffercache لدراسة محتويات shared_buffers. باستخدام هذا الملحق، يمكنك معرفة ما إذا كانت علاقة معينة مخزنة مؤقتا (في shared_buffers). يمكن أن يساعدك هذا الملحق في استكشاف مشكلات الأداء وإصلاحها (مشكلات الأداء المتعلقة بالتخزين المؤقت).

هذا الملحق متكامل مع التثبيت الأساسي ل PostgreSQL، ومن السهل تثبيته.

CREATE EXTENSION pg_buffercache;

pg_cron

الملحق pg_cron هو مجدول مهام بسيط يستند إلى cron ل PostgreSQL يعمل داخل قاعدة البيانات كملحق. pg_cron يمكن للملحق تشغيل مهام الصيانة المجدولة داخل قاعدة بيانات PostgreSQL. على سبيل المثال، يمكنك تشغيل فراغ دوري لجدول أو إزالة مهام البيانات القديمة.

pg_cron يمكن للملحق تشغيل مهام متعددة بالتوازي، ولكنه يعمل على الأكثر مثيل واحد من الوظيفة في كل مرة. إذا كان من المفترض أن يبدأ تشغيل ثان قبل انتهاء التشغيل الأول، فسيتم وضع التشغيل الثاني في قائمة الانتظار وبدء تشغيله بمجرد اكتمال التشغيل الأول. وبهذه الطريقة، يضمن أن الوظائف تعمل بدقة عدة مرات كما هو مجدول ولا تعمل بشكل متزامن مع نفسها.

تأكد من أن القيمة التي shared_preload_libraries تم تعيينها، تتضمن pg_cron. لا يدعم هذا الملحق تحميل المكتبة كتأثير لتنفيذ إنشاء ملحق. أي محاولة لتشغيل CREATE EXTENSION إذا لم تتم إضافة الملحق إلى shared_preload_libraries، أو لم تتم إعادة تشغيل الخادم بعد إضافته، ينتج عنه خطأ يقول pg_cron can only be loaded via shared_preload_librariesنصه ، والذي يكون Add pg_cron to the shared_preload_libraries configuration variable in postgresql.confتلميحه هو .

لاستخدام pg_cron، تأكد من تحميل مكتبتها المشتركة عند بدء تشغيل الخادم، ومن إدراجها في القائمة المسموح بها، وتثبيتها في أي قاعدة بيانات تريد التفاعل منها مع وظائفها، باستخدام أدوات SQL التي تقوم بإنشائها.

Examples

  1. لحذف البيانات القديمة يوم السبت في الساعة 3:30 صباحا (GMT).

    SELECT cron.schedule('30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$);
    
  2. لتشغيل الفراغ كل يوم في الساعة 10:00 صباحا (GMT) في قاعدة البيانات postgresالافتراضية .

    SELECT cron.schedule('0 10 * * *', 'VACUUM');
    
  3. لإلغاء جدولة كافة المهام من pg_cron.

    SELECT cron.unschedule(jobid) FROM cron.job;
    
  4. لمشاهدة جميع المهام المجدولة حاليا باستخدام pg_cron.

    SELECT * FROM cron.job;
    
  5. لتشغيل الفراغ كل يوم في الساعة 10:00 صباحا (GMT) في قاعدة البيانات test cron ضمن azure_pg_admin حساب الدور.

    SELECT cron.schedule_in_database('VACUUM',' 0 10 * * * ', 'VACUUM', 'testcron',null,TRUE);
    

المزيد من الأمثلة

pg_cron بدءا من الإصدار 1.4، يمكنك استخدام cron.schedule_in_database الدالتين و cron.alter_job لجدولة وظيفتك في قاعدة بيانات معينة وتحديث جدول حالي، على التوالي.

cron_schedule_in_database تسمح الدالة باسم المستخدم كمعلمة اختيارية. يتطلب تعيين اسم المستخدم إلى قيمة غير فارغة امتياز المستخدم المتميز PostgreSQL وهو غير مدعوم لقاعدة بيانات Azure لمثيل خادم PostgreSQL المرن. تظهر الأمثلة السابقة تشغيل هذه الدالة مع حذف معلمة اسم مستخدم اختيارية أو تعيينها إلى null، والتي تقوم بتشغيل المهمة في سياق جدولة المستخدم للوظيفة، والتي يجب أن يكون لها azure_pg_admin امتيازات الدور.

  1. لحذف البيانات القديمة يوم السبت في الساعة 3:30 صباحا (GMT) على قاعدة البيانات DBName.

    SELECT cron.schedule_in_database('JobName', '30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$,'DBName');
    
  2. لتحديث اسم قاعدة البيانات للجدول الحالي أو تغييره

    SELECT cron.alter_job(job_id:=MyJobID,database:='NewDBName');
    

pg_hint_plan

pg_hint_plan يتيح الملحق تعديل خطط تنفيذ PostgreSQL باستخدام ما يسمى ب "التلميحات" في تعليقات SQL، مثل:

/*+ SeqScan(a) */

pg_hint_plan يقرأ الملحق عبارات التلميح في تعليق النموذج الخاص المقدم مع عبارة SQL الهدف. يبدأ النموذج المعين بتسلسل الأحرف "/*+" وينتهي ب "*/". تتكون عبارات التلميح من أسماء تلميحات والمعلمات التالية محاطة بأقواس ومحددة بمسافات. يمكن أن تحدد الأسطر الجديدة لقابلية القراءة كل عبارة تلميح.

Example:

/*+
 HashJoin(a b)
 SeqScan(a)
 */
    SELECT *
    FROM pgbench_branches b
    JOIN pgbench_accounts an ON b.bid = a.bid
    ORDER BY a.aid;

يتسبب المثال السابق في أن يستخدم المخطط نتائج seqscan جدول a للدمج مع الجدول b ك hashjoin.

لاستخدام pg_hint_plan الملحق، تأكد من إدراج الملحق في القائمة المسموح بها ، وتحميل مكتبته، وتثبيت الملحق في قاعدة البيانات التي تخطط لاستخدام وظائفها عليها.

pg_prewarm

يقوم pg_prewarm الملحق بتحميل البيانات العلائقية في ذاكرة التخزين المؤقت. يعني الإعداد المسبق لذاكرة التخزين المؤقت أن استعلاماتك لها أوقات استجابة أفضل في أول تشغيل لها بعد إعادة التشغيل. وظيفة التسخين التلقائي ل PostgreSQL غير متوفرة حاليا في قاعدة بيانات Azure.

pg_repack

عادة ما يطرح مستخدمو pg_repack الملحق أول مرة السؤال التالي: هل الملحق pg_repack أو العميل قابل للتنفيذ مثل psql أو pg_dump؟

pg_repack هو في الواقع كلاهما. يحتوي pg_repack / lib على التعليمات البرمجية للملحق ، بما في ذلك المخطط وعناصر SQL التي ينشئها ، ومكتبة C التي تنفذ التعليمات البرمجية للعديد من هذه الوظائف.

من ناحية أخرى ، يحتوي pg_repack / bin على التعليمات البرمجية لتطبيق العميل ، والذي يعرف كيفية التفاعل مع عناصر قابلية البرمجة المنفذة في الملحق. يهدف تطبيق العميل هذا إلى تخفيف تعقيد التفاعل مع الواجهات المختلفة التي تظهر بواسطة الملحق من جانب الخادم. يوفر للمستخدم بعض خيارات سطر الأوامر التي يسهل فهمها. تطبيق العميل عديم الفائدة دون الملحق الذي تم إنشاؤه على قاعدة البيانات التي يشير إليها. سيكون ملحق جانب الخادم من تلقاء نفسه يعمل بكامل طاقته، ولكنه يتطلب من المستخدم فهم نمط تفاعل معقد. سيتألف هذا النمط من تنفيذ الاستعلامات لاسترداد البيانات التي يتم استخدامها كمدخل للوظائف التي ينفذها الملحق، وما إلى ذلك.

تم رفض الإذن لإعادة حزمة المخطط

حاليا، نظرا لأننا نمنح أذونات لمخطط repack الذي تم إنشاؤه بواسطة هذا الملحق، فإننا ندعم pg_repack تشغيل الوظائف فقط من سياق azure_pg_admin.

قد تلاحظ أنه إذا حاول مالك الجدول، الذي ليس azure_pg_adminهو ، تشغيل pg_repack، ينتهي به الأمر إلى تلقي الخطأ التالي:

NOTICE: Setting up workers.conns
ERROR: pg_repack failed with error: ERROR:  permission denied for schema repack
LINE 1: select repack.version(), repack.version_sql()

لتجنب هذا الخطأ، قم بتشغيل pg_repack من سياق azure_pg_admin.

pg_stat_statements

يمنحك ملحق pg_stat_statements عرضا لكافة الاستعلامات التي يتم تشغيلها على قاعدة البيانات الخاصة بك. هذه المعلومات مفيدة لفهم أداء حمل عمل الاستعلام على نظام إنتاج.

يتم تحميل shared_preload_libraries مسبقا على كل مثيل خادم مرن لقاعدة بيانات Azure ل PostgreSQL لتوفير وسيلة لتعقب إحصائيات تنفيذ عبارة SQL.

لأسباب أمنية، يجب عليك إدراج ملحق pg_stat_statements في القائمة المسموح بها وتثبيته باستخدام الأمر CREATE EXTENSION.

الإعداد pg_stat_statements.track، الذي يتحكم في عبارات التي يتعقبها الملحق، والإعدادات الافتراضية إلى top، مما يعني أنه يتم تعقب جميع العبارات الصادرة مباشرة من قبل العملاء. هناك مستويان تعقب آخران هما none و all. هذا الإعداد قابل للتكوين كمعلمة خادم.

هناك مقايضة بين معلومات تنفيذ الاستعلام التي pg_stat_statements يوفرها الملحق على أداء الخادم أثناء تسجيل كل عبارة SQL. إذا لم تكن تستخدم الملحق pg_stat_statements بنشاط، نوصي بتعيين pg_stat_statements.track إلى none. قد تعتمد pg_stat_statements بعض خدمات المراقبة التابعة لجهات خارجية على تقديم رؤى أداء الاستعلام، لذا تأكد من ما إذا كان الأمر كذلك بالنسبة لك.

postgres_fdw

postgres_fdw يسمح لك الملحق بالاتصال من قاعدة بيانات Azure واحدة لمثيل خادم PostgreSQL المرن إلى قاعدة بيانات أخرى أو قاعدة بيانات أخرى في نفس الخادم. تدعم قاعدة بيانات Azure ل PostgreSQL كلا من الاتصالات الواردة والصادرة بأي خادم PostgreSQL. يحتاج الخادم المرسل إلى السماح بالاتصالات الصادرة إلى الخادم المتلقي. وبالمثل، يحتاج الخادم المتلقي للسماح الاتصالات من خادم الإرسال.

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

pgstattuple

عند استخدام الملحق pgstattuple لمحاولة الحصول على إحصائيات المجموعة من الكائنات المحفوظة في pg_toast المخطط في إصدارات Postgres 11 إلى 13، تتلقى خطأ "تم رفض الإذن للمخطط pg_toast".

تم رفض الإذن pg_toast المخطط

لا يمكن للعملاء الذين يستخدمون الإصدارات من 11 إلى 13 من PostgreSQL على قاعدة بيانات Azure لمثيل الخادم المرن PostgreSQL استخدام الملحق pgstattuple على الكائنات داخل المخطط pg_toast .

في PostgreSQL 16 و17، pg_read_all_data يتم منح الدور تلقائيا إلى azure_pg_admin، مما pgstattuple يسمح بالعمل بشكل صحيح. في PostgreSQL 14 و15، يمكن للعملاء منح pg_read_all_data الدور azure_pg_admin يدويا لتحقيق نفس النتيجة. ومع ذلك، في PostgreSQL 11 إلى 13، pg_read_all_data الدور غير موجود.

لا يمكن للعملاء منح الأذونات الضرورية مباشرة. إذا كنت بحاجة إلى أن تكون قادرا على التشغيل pgstattuple للوصول إلى الكائنات ضمن المخطط، فانتقل pg_toast إلى إنشاء طلب دعم Azure.

timescaleDB

الملحق timescaleDB هو قاعدة بيانات سلسلة زمنية مجمعة كملحق ل PostgreSQL. يوفر وظائف تحليلية موجهة للوقت وتحسينات ومقاييس Postgres لأحمال عمل السلاسل الزمنية. تعرف على المزيد حول TimescaleDB، وهي علامة تجارية مسجلة لشركة Timescale, Inc. توفر قاعدة بيانات Azure ل PostgreSQL إصدار TimescaleDB Apache-2.

تثبيت TimescaleDB

لاستخدام timescaleDB، تأكد من إدراج الملحق في القائمة المسموح بها ، وتحميل مكتبته ، وتثبيت الملحق في قاعدة البيانات التي تخطط لاستخدام وظائفها عليها.

يمكنك الآن إنشاء TimescaleDB hypertable من البداية أو ترحيل بيانات السلاسل الزمنية الحالية في PostgreSQL.

لمزيد من المعلومات حول استعادة قاعدة بيانات مقياس الوقت باستخدام pg_dump و pg_restore، راجع وثائق مقياس الوقت.

استعادة قاعدة بيانات مقياس الوقت باستخدام النسخ الاحتياطي للمقياس الزمني

أثناء تشغيل SELECT timescaledb_post_restore() الإجراء، قد تحصل على أذونات مرفوضة عند تحديث علامة timescaledb.restoring. السبب في حصولك على هذا الخطأ هو بسبب إذن ALTER DATABASE المحدود في خدمات قاعدة بيانات Cloud PaaS. في هذه الحالة، يمكنك تنفيذ أسلوب بديل باستخدام timescaledb-backup الأداة لإجراء نسخ احتياطي واستعادة قاعدة بيانات مقياس الوقت. النسخ الاحتياطي ل Timescaledb هو برنامج يجعل تفريغ قاعدة بيانات TimescaleDB واستعادتها أبسط وأقل عرضة للخطأ وأكثر أداء.

للقيام بذلك، اتبع الخطوات التالية:

  1. قم بتثبيت الأدوات كما هو مفصل هنا.

  2. إنشاء قاعدة بيانات Azure الهدف لمثيل خادم PostgreSQL المرن وقاعدة البيانات.

  3. تمكين ملحق مقياس الوقت.

  4. امنح الدور azure_pg_admin للمستخدم الذي يستخدمه ts-restore.

  5. قم بتشغيل ts-restore لاستعادة قاعدة البيانات.

يمكن العثور على مزيد من التفاصيل حول هذه الأدوات هنا.

الملحقات وترقية الإصدار الرئيسي

توفر قاعدة بيانات Azure ل PostgreSQL ميزة ترقية الإصدار الرئيسي الموضعية التي تقوم بإجراء ترقية موضعية لقاعدة بيانات Azure لمثيل الخادم المرن PostgreSQL، مع تفاعل بسيط من المستخدم فقط. تعمل ترقية الإصدار الرئيسي الموضعي على تبسيط عملية ترقية قاعدة بيانات Azure ل PostgreSQL، مما يقلل من تعطل المستخدمين والتطبيقات التي تصل إلى الخادم. لا تدعم ترقيات الإصدار الرئيسي الموضعي ملحقات محددة، وهناك بعض القيود على ترقية ملحقات معينة.

الملحقات anon، Apache AGE، dblink، orafce، postgres_fdwوغير timescaledb مدعومة لجميع إصدارات مثيل الخادم المرن Azure Database for PostgreSQL عند استخدام ميزة تحديث الإصدار الرئيسي الموضعية.

وحدات ذات اعتبارات محددة

تعدد القائمة التالية جميع الوحدات النمطية المدعومة التي تتطلب اعتبارات محددة عند استخدامها في قاعدة بيانات Azure لمثيل خادم مرن PostgreSQL:

  • pg_failover_slots

pg_failover_slots

تعمل الوحدة pg_failover_slots النمطية على تحسين قاعدة بيانات Azure ل PostgreSQL عند التشغيل مع كل من النسخ المتماثل المنطقي والخوادم الممكنة عالية التوفر. وهو يعالج بشكل فعال التحدي داخل محرك PostgreSQL القياسي الذي لا يحافظ على فتحات النسخ المتماثل المنطقية بعد تجاوز الفشل. يعد الحفاظ على هذه الفتحات أمرا بالغ الأهمية لمنع إيقاف النسخ المتماثل مؤقتا أو عدم تطابق البيانات أثناء تغييرات دور الخادم الأساسي، ما يضمن استمرارية التشغيل وتكامل البيانات.

يبسط الملحق عملية تجاوز الفشل من خلال إدارة النقل الضروري وتنظيف ومزامنة فتحات النسخ المتماثل، مما يوفر انتقالا سلسا أثناء تغييرات دور الخادم.

يمكنك العثور على مزيد من المعلومات والإرشادات حول استخدام الوحدة النمطية pg_failover_slots على صفحة GitHub الخاصة بها.

لاستخدام الوحدة النمطية pg_failover_slots ، تأكد من تحميل مكتبتها عند بدء تشغيل الخادم.