ملحقات PostgreSQL في قاعدة بيانات Azure لـPostgreSQL - الخادم المرن

ينطبق على: قاعدة بيانات Azure ل PostgreSQL - خادم مرن

يوفر خادم Azure Database for PostgreSQL المرن القدرة على توسيع وظائف قاعدة البيانات باستخدام الملحقات. تجمع الملحقات عناصر SQL متعددة ذات صلة في حزمة واحدة يمكن تحميلها أو إزالتها من قاعدة البيانات باستخدام أمر. بعد تحميلها في قاعدة البيانات، تعمل الملحقات مثل الميزات المضمنة.

كيفية استخدام الملحقات الخاصة بـ PostgreSQL

قبل تثبيت الملحقات في قاعدة بيانات Azure لخادم PostgreSQL المرن، تحتاج إلى السماح بقائمة هذه الملحقات للاستخدام.

استخدام المدخل الخاص بـ Microsoft Azure:

  1. حدد قاعدة بيانات Azure لمثيل خادم PostgreSQL المرن.
  2. من قائمة الموارد، ضمن قسم الإعدادات ، حدد معلمات الخادم.
  3. قم بإجراء بحث عن المعلمةazure.extensions.
  4. حدد الملحقات التي ترغب في السماح بها. لقطة شاشة تعرض خادم Azure Database for PostgreSQL المرن - ملحقات قائمة السماح للتثبيت.

استخدام Azure CLI:

يمكنك السماح بملحقات القائمة عبر أمر مجموعة معلمات CLI.

az postgres flexible-server parameter set --resource-group <resource_group>  --server-name <server> --subscription <subscription_id> --name azure.extensions --value <extension_name>,<extension_name>

استخدام قالب ARM: المثال التالي لملحقات dblinkقوائم السماح ، dict_xsyn، pg_buffercache على خادم اسمه :postgres-test-server

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "flexibleServers_name": {
            "defaultValue": "postgres-test-server",
            "type": "String"
        },
        "azure_extensions_set_value": {
            "defaultValue": " dblink,dict_xsyn,pg_buffercache",
            "type": "String"
        }
    },
    "variables": {},
    "resources": [
        {
            "type": "Microsoft.DBforPostgreSQL/flexibleServers/configurations",
            "apiVersion": "2021-06-01",
            "name": "[concat(parameters('flexibleServers_name'), '/azure.extensions')]",
            "properties": {
                "value": "[parameters('azure_extensions_set_value')]",
                "source": "user-override"
            }
        }
    ]
}

shared_preload_libraries هي معلمة تكوين الخادم التي تحدد المكتبات التي يجب تحميلها عند بدء تشغيل خادم Azure Database for PostgreSQL المرن. يجب تحميل أي مكتبات تستخدم الذاكرة المشتركة عبر هذه المعلمة. إذا كان الملحق الخاص بك بحاجة إلى إضافته إلى مكتبات التحميل المسبق المشتركة، فاتبع الخطوات التالية:

استخدام المدخل الخاص بـ Microsoft Azure:

  1. حدد قاعدة بيانات Azure لمثيل خادم PostgreSQL المرن.
  2. من قائمة الموارد، ضمن قسم الإعدادات ، حدد معلمات الخادم.
  3. قم بإجراء بحث عن المعلمةshared_preload_libraries.
  4. حدد المكتبات التي ترغب في إضافتها. لقطة شاشة تعرض قاعدة بيانات Azure ل PostgreSQL -إعداد معلمة مكتبات التحميل المسبق المشتركة لتثبيت الملحقات.

استخدام Azure CLI:

يمكنك تعيين shared_preload_libraries عبر أمر مجموعة معلمات CLI.

az postgres flexible-server parameter set --resource-group <resource_group>  --server-name <server> --subscription <subscription_id> --name shared_preload_libraries --value <extension_name>,<extension_name>

بعد السماح بالملحقات وتحميلها، يجب تثبيتها في كل قاعدة بيانات تخطط لاستخدامها عليها. لتثبيت ملحق معين، يجب تشغيل الأمر CREATE EXTENSION. يقوم هذا الأمر بتحميل الكائنات المجمعة في قاعدة البيانات الخاصة بك.

إشعار

ملحقات الجهات الخارجية المقدمة في قاعدة بيانات Azure لخادم PostgreSQL المرن هي مصدر مفتوح تعليمة برمجية مرخصة. حاليا، لا نقدم أي ملحقات أو إصدارات ملحقة لجهة خارجية مع نماذج ترخيص متميزة أو خاصة.

تدعم قاعدة بيانات Azure لمثيل الخادم المرن PostgreSQL مجموعة فرعية من ملحقات PostgreSQL الرئيسية كما هو موضح في الجدول التالي. تتوفر هذه المعلومات أيضا عن طريق إجراء عملية التشغيل SHOW azure.extensions;. الملحقات غير المدرجة في هذا المستند غير مدعومة على قاعدة بيانات Azure لخادم PostgreSQL المرن. لا يمكنك إنشاء الملحق الخاص بك أو تحميله في قاعدة بيانات Azure لخادم PostgreSQL المرن.

إصدارات ملحقات البرنامج

تتوفر الملحقات التالية في قاعدة بيانات Azure لخادم PostgreSQL المرن:

إشعار

تتطلب الملحقات في الجدول التالي مع العلامة ✔️ تمكين مكتباتها المقابلة في معلمة shared_preload_libraries الخادم.

اسم الملحق الوصف PostgreSQL 17 PostgreSQL 16 PostgreSQL 15 PostgreSQL 14 PostgreSQL 13 PostgreSQL 12 PostgreSQL 11
address_standardizer تستخدم لتحليل العنوان الخاص بالعناصر المكونة. يستخدم بشكل عام لدعم خطوة تسوية عنوان الترميز الجغرافي. 3.5.0alpha2 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
address_standardizer_data_us مثال على مجموعة بيانات العنوان القياسي للولايات المتحدة 3.5.0alpha2 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
العمر (معاينة) يوفر قدرات قاعدة بيانات الرسم البياني ‏‫غير متوفر‬ 1.5.0 ✔️ 1.5.0 ✔️ 1.5.0 ✔️ 1.5.0 ✔️ ‏‫غير متوفر‬ ‏‫غير متوفر‬
amcheck دالات للتحقق من تكامل العلاقة 1.4 1.3 1.3 1.3 1.2 1.2 1.1
anon (معاينة) أدوات مجهولة هوية البيانات 1.3.2 ✔️ 1.3.2 ✔️ 1.3.2 ✔️ 1.3.2 ✔️ 1.3.2 ✔️ 1.3.2 ✔️ 1.3.2 ✔️
azure_ai تكامل Azure الذكاء الاصطناعي وخدمات التعلم الآلي ل PostgreSQL ‏‫غير متوفر‬ 1.1.0 1.1.0 1.1.0 1.1.0 1.1.0 ‏‫غير متوفر‬
azure_storage تكامل Azure ل PostgreSQL ‏‫غير متوفر‬ 1.5 ✔️ 1.5 ✔️ 1.5 ✔️ 1.5 ✔️ 1.5 ✔️ ‏‫غير متوفر‬
bloom طريقة الوصول إلى Bloom - فهرس مستند إلى ملف التوقيع 1.0 1.0 1.0 1.0 1.0 1.0 1.0
btree_gin دعم فهرسة أنواع البيانات الشائعة في GIN 1.3 1.3 1.3 1.3 1.3 1.3 1.3
btree_gist دعم فهرسة أنواع البيانات الشائعة في GiST 1.7 1.7 1.7 1.6 1.5 1.5 1.5
citext نوع البيانات لسلاسل الأحرف غير الحساسة لحالة الأحرف 1.6 1.6 1.6 1.6 1.6 1.6 1.5
cube نوع البيانات للمكعبات متعددة الأبعاد 1.5 1.5 1.5 1.5 1.4 1.4 1.4
dblink الاتصال بقواعد بيانات PostgreSQL الأخرى من داخل قاعدة بيانات 1.2 1.2 1.2 1.2 1.2 1.2 1.2
dict_int قالب قاموس البحث عن النص للأعداد الصحيحة 1.0 1.0 1.0 1.0 1.0 1.0 1.0
dict_xsyn قالب قاموس البحث عن النص لمعالجة المرادفات الموسعة 1.0 1.0 1.0 1.0 1.0 1.0 1.0
earthdistance حساب مسافات الدوائر الكبيرة على سطح الأرض 1.1 1.1 1.1 1.1 1.1 1.1 1.1
fuzzystrmatch تحديد أوجه التشابه والمسافة بين السلاسل 1.2 1.2 1.1 1.1 1.1 1.1 1.1
hstore نوع البيانات لتخزين مجموعات من أزواج (المفتاح والقيمة) 1.8 1.8 1.8 1.8 1.7 1.6 1.5
hypopg الفهارس الافتراضية الخاصة بـPostgreSQL 1.4.0 1.4.0 1.4.0 1.4.0 1.4.0 1.4.0 1.4.0
intagg مجمع الأعداد الصحيحة وعداد (قديم) 1.1 1.1 1.1 1.1 1.1 1.1 1.1
intarray الدوال والمشغلين ودعم الفهرس لصفائف أحادية الأبعاد من الأعداد الصحيحة 1.5 1.5 1.5 1.5 1.3 1.2 1.2
isn أنواع البيانات الخاصة بمعايير ترقيم المنتجات الدولية 1.2 1.2 1.2 1.2 1.2 1.2 1.2
lo صيانة الكائنات الكبيرة 1.1 1.1 1.1 1.1 1.1 1.1 1.1
login_hook Login_hook - ربط لتنفيذ login_hook.login() في وقت تسجيل الدخول 1.5 1.5 1.4 1.4 1.4 1.4 1.4
ltree نوع البيانات للهياكل الهرمية الشبيهة بالأشجار 1.3 1.2 1.2 1.2 1.2 1.1 1.1
oracle_fdw برنامج تضمين البيانات الخارجية لقواعد بيانات Oracle 1.2 1.2 1.2 1.2 1.2 1.2 ‏‫غير متوفر‬
orafce الوظائف وعوامل التشغيل التي تحاكي مجموعة فرعية من الوظائف والحزم من Oracle RDBMS 4.9 4.4 3.24 3.18 3.18 3.18 3.7
pageinspect فحص محتويات صفحات قاعدة البيانات بمستوى منخفض 1.12 1.12 1.11 1.9 1.8 1.7 1.7
pgaudit توفير وظائف التدقيق 16.0 ✔️ 16.0 ✔️ 1.7 ✔️ 1.6.2 ✔️ 1.5 ✔️ 1.4.3 ✔️ 1.3.2 ✔️
pg_buffercache فحص ذاكرة التخزين المؤقت المشتركة 1.5 1.4 1.3 1.3 1.3 1.3 1.3
pg_cron جدولة الوظائف لـ PostgreSQL 1.6 ✔️ 1.6 ✔️ 1.6 ✔️ 1.6 ✔️ 1.6 ✔️ 1.6 ✔️ 1.4-1 ✔️
pgcrypto دوال التشفير 1.3 1.3 1.3 1.3 1.3 1.3 1.3
pg_freespacemap فحص خريطة المساحة الحرة (FSM) 1.2 1.2 1.2 1.2 1.2 1.2 1.2
pg_hint_plan يجعل من الممكن تعديل خطط تنفيذ PostgreSQL باستخدام ما يسمى بالتلميحات في تعليقات SQL. 1.7.0 ✔️ 1.6.0 ✔️ 1.5 ✔️ 1.4 ✔️ 1.3.7 ✔️ 1.3.7 ✔️ 1.3.7 ✔️
pglogical النسخ المتماثل المنطقي ل PostgreSQL 2.4.5 ✔️ 2.4.4 ✔️ 2.4.2 ✔️ 2.4.1 ✔️ 2.4.1 ✔️ 2.4.1 ✔️ 2.4.1 ✔️
pg_partman الملحق الخاص بإدارة الجداول المقسمة حسب الوقت أو المعرف 5.0.1 ✔️ 5.0.1 ✔️ 4.7.1 ✔️ 4.6.1 ✔️ 4.5.0 ✔️ 4.5.0 ✔️ 4.5.0 ✔️
pg_prewarm بيانات علاقة ما قبل الحرب 1.2 ✔️ 1.2 ✔️ 1.2 ✔️ 1.2 ✔️ 1.2 ✔️ 1.2 ✔️ 1.2 ✔️
pg_repack إعادة تنظيم الجداول في قواعد بيانات PostgreSQL مع الحد الأدنى من التأمينات 1.4.7 1.4.7 1.4.7 1.4.7 1.4.7 1.4.7 1.4.7
pgrouting ملحق PgRouting ‏‫غير متوفر‬ ‏‫غير متوفر‬ 3.5.0 3.3.0 3.3.0 3.3.0 3.3.0
pgrowlocks إظهار معلومات التأمين على مستوى الصف 1.2 1.2 1.2 1.2 1.2 1.2 1.2
pg_squeeze أداة لإزالة مساحة غير مستخدمة من علاقة. 1.7 ✔️ 1.6 ✔️ 1.6 ✔️ 1.5 ✔️ 1.5 ✔️ 1.5 ✔️ 1.5 ✔️
pg_stat_statements تتبع إحصائيات التنفيذ لجميع عبارات SQL المنفذة 1.11 ✔️ 1.10 ✔️ 1.10 ✔️ 1.9 ✔️ 1.8 ✔️ 1.7 ✔️ 1.6 ✔️
pgstattuple إظهار الإحصائيات على مستوى المجموعة 1.5 1.5 1.5 1.5 1.5 1.5 1.5
pg_trgm قياس تشابه النص والبحث في الفهرس استنادا إلى المدرجات الثلاثية 1.6 1.6 1.6 1.6 1.5 1.4 1.4
pg_visibility فحص خريطة الرؤية (VM) ومعلومات الرؤية على مستوى الصفحة 1.2 1.2 1.2 1.2 1.2 1.2 1.2
plpgsql اللغة الإجرائية الخاصة بـ PL/pgSQL 1.0 1.0 1.0 1.0 1.0 1.0 1.0
plv8 PL/JavaScript (v8) هي عبارة عن لغة إجرائية موثوق بها 3.1.7 3.1.7 3.1.7 3.0.0 3.0.0 3.0.0 3.0.0
postgis وظائف ووظائف هندسة PostGIS والجغرافيا 3.5.0alpha2 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_raster أنواع ووظائف PostGIS النقطية 3.5.0alpha2 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_sfcgal الوظائف الخاصة بـ PostGIS SFCGAL 3.5.0alpha2 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_tiger_geocoder أداة الترميز الجغرافي للنمر PostGIS والأداة الترميز الجغرافي العكسية 3.5.0alpha2 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_topology أنواع ووظائف طوبولوجيا PostGIS المكانية 3.5.0alpha2 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgres_fdw برنامج تضمين البيانات الخارجية لخوادم PostgreSQL البعيدة 1.1 1.1 1.1 1.1 1.0 1.0 1.0
postgres_protobuf مخازن البروتوكول المؤقتة ل PostgreSQL 0.2 0.2 0.2 0.2 0.2 0.2 ‏‫غير متوفر‬
semver نوع بيانات الإصدار الدلالي 0.32.1 0.32.1 0.32.0 0.32.0 0.32.0 0.32.0 0.32.0
session_variable Session_variable - تسجيل متغيرات الجلسة والثوابت ومعالجتها 3.3 3.3 3.3 3.3 3.3 3.3 3.3
sslinfo معلومات حول شهادات SSL 1.2 1.2 1.2 1.2 1.2 1.2 1.2
tablefunc الوظائف التي تعالج الجداول الكاملة، بما في ذلك الجدولي 1.0 1.0 1.0 1.0 1.0 1.0 1.0
tds_fdw برنامج تضمين البيانات الخارجية للاستعلام عن قاعدة بيانات TDS (Sybase أو Microsoft SQL Server) 2.0.3 2.0.3 2.0.3 2.0.3 2.0.3 2.0.3 2.0.3
timescaledb من أجل تمكين إدخالات قابلة للتطوير والاستعلامات المعقدة لبيانات السلاسل الزمنية ‏‫غير متوفر‬ 2.13.0 ✔️ 2.10.0 ✔️ 2.10.0 ✔️ 2.10.0 ✔️ 2.10.0 ✔️ 1.7.4 ✔️
tsm_system_rows طريقة TABLESAMPLE، والتي تقبل عدد الصفوف كحد 1.0 1.0 1.0 1.0 1.0 1.0 1.0
tsm_system_time طريقة TABLESAMPLE، والتي تقبل الوقت بالمللي ثانية كحد 1.0 1.0 1.0 1.0 1.0 1.0 1.0
unaccent قاموس البحث عن النص الذي يزيل التمييزات 1.1 1.1 1.1 1.1 1.1 1.1 1.1
uuid-ossp إنشاء معرفات فريدة عالميا (UUIDs) 1.1 1.1 1.1 1.1 1.1 1.1 1.1
المتجه نوع بيانات المتجه وأساليب الوصول إلى ivfflat وhnsw 0.7.0 0.7.0 0.7.0 0.7.0 0.7.0 0.7.0 0.5.1

ترقية ملحقات PostgreSQL

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

تحديث الملحقات

لتحديث ملحق مثبت إلى أحدث إصدار متوفر مدعوم من Azure، استخدم أمر SQL التالي:

ALTER EXTENSION <extension_name> UPDATE;

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

القيود

في حين أن تحديث الملحقات مباشر، هناك قيود معينة:

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

ملحقات مثبتة

لسرد الملحقات المثبتة حاليا على قاعدة البيانات الخاصة بك، استخدم أمر SQL التالي:

SELECT * FROM pg_extension;

الملحقات المتوفرة وإصداراتها

للتحقق من إصدارات الملحق المتوفرة لتثبيت قاعدة البيانات الحالية، استعلم عن pg_available_extensions طريقة عرض كتالوج النظام. على سبيل المثال، لتحديد الإصدار المتوفر للملحق azure_ai، قم بتنفيذ:

SELECT * FROM pg_available_extensions WHERE name = 'azure_ai';

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

اعتبارات خاصة بقاعدة بيانات Azure لخادم PostgreSQL المرن

فيما يلي قائمة بالملحقات المدعومة التي تتطلب بعض الاعتبارات المحددة عند استخدامها في قاعدة بيانات Azure لخدمة الخادم المرن PostgreSQL. يتم فرز القائمة أبجديا.

يسمح لك dblink بالاتصال من قاعدة بيانات Azure لمثيل خادم PostgreSQL المرن إلى آخر، أو إلى قاعدة بيانات أخرى في نفس الخادم. يدعم خادم Azure Database for 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 تشغيل وظائف متعددة بالتوازي، ولكنها تعمل على مثيل واحد على الأكثر من وظيفة في كل مرة. إذا كان من المفترض أن يبدأ تشغيل ثان قبل انتهاء التشغيل الأول، فسيتم وضع التشغيل الثاني في قائمة الانتظار وبدء تشغيله بمجرد اكتمال التشغيل الأول. وبهذه الطريقة، يتم التأكد من أن الوظائف تعمل تماما عدة مرات كما هو مجدول ولا تعمل بشكل متزامن مع نفسها.

بعض الأمثلة:

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

SELECT cron.schedule('30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$);

لتشغيل فراغ كل يوم في الساعة 10:00 صباحا (GMT) في قاعدة البيانات postgresالافتراضية .

SELECT cron.schedule('0 10 * * *', 'VACUUM');

لإلغاء جدولة كافة المهام من pg_cron.

SELECT cron.unschedule(jobid) FROM cron.job;

لمشاهدة جميع المهام المجدولة حاليا باستخدام pg_cron.

SELECT * FROM cron.job;

لتشغيل فراغ كل يوم في الساعة 10:00 صباحا (GMT) في قاعدة البيانات "testcron" ضمن حساب دور azure_pg_admin.

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

إشعار

يتم تحميل ملحق pg_cron مسبقا لكل مثيل خادم مرن لقاعدة shared_preload_libraries بيانات Azure ل PostgreSQL داخل قاعدة بيانات postgres لتزويدك بالقدرة على جدولة المهام للتشغيل في قواعد البيانات الأخرى داخل قاعدة بيانات Azure لمثيل قاعدة بيانات الخادم المرن PostgreSQL دون المساس بالأمان. ومع ذلك، لأسباب أمنية، لا يزال يتعين عليك السماح بامتداد القائمة pg_cron وتثبيته باستخدام الأمر CREATE EXTENSION.

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

بعض الأمثلة:

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

SELECT cron.schedule_in_database('JobName', '30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$,'DBName');

إشعار

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

لتحديث اسم قاعدة البيانات للجدول الحالي أو تغييره

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

pg_failover_slots

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

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

يمكنك العثور على مزيد من المعلومات وكيفية استخدام ملحق PG Failover Slots في صفحة GitHub الخاصة به.

تمكين pg_failover_slots

لتمكين ملحق PG Failover Slots لمثيل خادم Azure Database for PostgreSQL المرن، تحتاج إلى تعديل تكوين الخادم عن طريق تضمين الملحق في مكتبات التحميل المسبق المشتركة للخادم وضبط معلمة خادم معينة. وها هي العملية :

  1. أضف pg_failover_slots إلى مكتبات التحميل المسبق المشتركة للخادم عن طريق تحديث المعلمة shared_preload_libraries .
  2. غير معلمة hot_standby_feedback الخادم إلى on.

تتطلب أي تغييرات على المعلمة shared_preload_libraries إعادة تشغيل الخادم حتى يصبح ساري المفعول.

استخدام المدخل الخاص بـ Microsoft Azure:

  1. حدد قاعدة بيانات Azure لمثيل خادم PostgreSQL المرن.
  2. من قائمة الموارد، ضمن قسم الإعدادات ، حدد معلمات الخادم.
  3. ابحث عن المعلمة shared_preload_libraries وقم بتحرير قيمتها لتضمين pg_failover_slots.
  4. ابحث عن المعلمة hot_standby_feedback واضبط قيمتها على on.
  5. حدد حفظ للحفاظ على التغييرات. الآن، لديك خيار الحفظ وإعادة التشغيل. اختر هذا للتأكد من أن التغييرات سارية المفعول، لأن التعديل shared_preload_libraries يتطلب إعادة تشغيل الخادم.

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

pg_hint_plan

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

/*+ SeqScan(a) */

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

مثال:

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

يتسبب المثال السابق في أن يستخدم المخطط نتائج seq scan على الجدول a ليتم دمجها مع الجدول b ك hash join.

لتثبيت pg_hint_plan، بالإضافة إلى ذلك، للسماح بإدراجه، كما هو موضح في كيفية استخدام ملحقات PostgreSQL، تحتاج إلى تضمينه في مكتبات التحميل المسبق المشتركة للخادم. يتطلب التغيير في معلمة Postgres shared_preload_librariesإعادة تشغيل الخادم حتى يصبح ساري المفعول. يمكنك تغيير المعلمة باستخدام المدخل الخاص بـ Azure أو PowerShellأو Azure CLI.

استخدام المدخل الخاص بـ Microsoft Azure:

  1. حدد قاعدة بيانات Azure لمثيل خادم PostgreSQL المرن.
  2. من قائمة الموارد، ضمن قسم الإعدادات ، حدد معلمات الخادم.
  3. ابحث عن المعلمة shared_preload_libraries وقم بتحرير قيمتها لتضمين pg_hint_plan.
  4. حدد حفظ للحفاظ على التغييرات. الآن، لديك خيار الحفظ وإعادة التشغيل. اختر هذا للتأكد من أن التغييرات سارية المفعول، لأن التعديل shared_preload_libraries يتطلب إعادة تشغيل الخادم. يمكنك الآن تمكين pg_hint_plan قاعدة بيانات Azure لقاعدة بيانات الخادم المرن PostgreSQL. قم بإجراء اتصال بقاعدة البيانات وإصدار الأمر التالي:
CREATE EXTENSION pg_hint_plan;

pg_prewarm

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

pg_repack

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

الجواب على ذلك هو أنه في الواقع كلاهما. يحتفظ 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 طريقة عرض لكافة الاستعلامات التي تم تشغيلها على قاعدة البيانات الخاصة بك. وهذا مفيد للحصول على فهم لما يبدو عليه أداء حمل عمل الاستعلام الخاص بك على نظام الإنتاج.

يتم تحميل ملحق 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 Database for PostgreSQL المرن كلا من الاتصالات الواردة والصادرة إلى أي خادم PostgreSQL. يحتاج الخادم المرسل إلى السماح بالاتصالات الصادرة إلى الخادم المتلقي. وبالمثل، يحتاج الخادم المتلقي للسماح الاتصالات من خادم الإرسال.

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

pgstattuple

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

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

لا يمكن للعملاء الذين يستخدمون إصدارات PostgreSQL من 11 إلى 13 على Azure Database for Flexible Server استخدام الملحق 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. يوفر TimescaleDB وظائف تحليلية موجهة زمنياً، وتحسينات، ومقاييس Postgres لأحمال عمل السلاسل الزمنية. تعرف على المزيد حول TimescaleDB، وهي علامة تجارية مسجلة ل Timescale, Inc. توفر قاعدة بيانات Azure لخادم PostgreSQL المرن إصدار TimescaleDB Apache-2.

تثبيت TimescaleDB

لتثبيت TimescaleDB، بالإضافة إلى ذلك، للسماح بإدراجه، كما هو موضح أعلاه، تحتاج إلى تضمينه في مكتبات التحميل المسبق المشتركة للخادم. يتطلب التغيير في معلمة Postgres shared_preload_librariesإعادة تشغيل الخادم حتى يصبح ساري المفعول. يمكنك تغيير المعلمة باستخدام المدخل الخاص بـ Azure أو PowerShellأو Azure CLI.

استخدام المدخل الخاص بـ Microsoft Azure:

  1. حدد قاعدة بيانات Azure لمثيل خادم PostgreSQL المرن.
  2. من قائمة الموارد، ضمن قسم الإعدادات ، حدد معلمات الخادم.
  3. ابحث عن المعلمة shared_preload_libraries وقم بتحرير قيمتها لتضمين TimescaleDB.
  4. حدد حفظ للحفاظ على التغييرات. الآن، لديك خيار الحفظ وإعادة التشغيل. اختر هذا للتأكد من أن التغييرات سارية المفعول، لأن التعديل shared_preload_libraries يتطلب إعادة تشغيل الخادم. يمكنك الآن تمكين TimescaleDB في قاعدة بيانات Azure Database for PostgreSQL المرنة. قم بإجراء اتصال بقاعدة البيانات وإصدار الأمر التالي:
CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;

تلميح

إذا رأيت خطأ، فتأكد من إعادة تشغيل الخادم بعد إجراء عملية حفظ shared_preload_libraries.

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

استعادة قاعدة بيانات مقياس الوقت باستخدام pg_dump pg_restore

لاستعادة قاعدة بيانات مقياس الوقت باستخدام pg_dump pg_restore، يجب تشغيل إجراءين مساعدين في قاعدة البيانات الوجهة: timescaledb_pre_restore() و timescaledb_post restore().

أولا، قم بإعداد قاعدة البيانات الوجهة:

--create the new database where you want to perform the restore
CREATE DATABASE tutorial;
\c tutorial --connect to the database
CREATE EXTENSION timescaledb;

SELECT timescaledb_pre_restore();

يمكنك الآن تشغيل pg_dump على قاعدة البيانات الأصلية ثم استعادة pg_restore. بعد الاستعادة، تأكد من بدء عملية تشغيل الأمر التالي في قاعدة البيانات المستعادة:

SELECT timescaledb_post_restore();

لمزيد من التفاصيل حول أسلوب الاستعادة مع قاعدة بيانات ممكنة ل مقياس الوقت، راجع وثائق مقياس الوقت.

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

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

  1. تثبيت الأدوات كما هو موضح بشكل تفصيليهنا
  2. إنشاء قاعدة بيانات Azure الهدف لمثيل خادم PostgreSQL المرن وقاعدة البيانات
  3. تمكين الملحق الخاص بمقياس الوقت كما هو موضح أعلاه
  4. منح azure_pg_admin دور للمستخدم الذي سيتم استخدامه بواسطة ts-restore
  5. قم بتشغيل ts-restore لاستعادة قاعدة البيانات

يمكن اكتشاف المزيد من التفاصيل حول هذا الموضوع الوارد هنا

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

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