نسخ البيانات من PostgreSQL باستخدام Azure Data Factory أو Synapse Analytics

ينطبق على: Azure Data Factory Azure Synapse Analytics

تلميح

جرب Data Factory في Microsoft Fabric، وهو حل تحليلي متكامل للمؤسسات. يغطي Microsoft Fabric كل شيء بدءا من حركة البيانات إلى علم البيانات والتحليلات في الوقت الحقيقي والمعلومات المهنية وإعداد التقارير. تعرف على كيفية بدء إصدار تجريبي جديد مجانا!

توضح هذه المقالة كيفية استخدام نسخ النشاط في Azure Data Factory وخطوط تدفق Synapse Analytics لنسخ البيانات من قاعدة بيانات PostgreSQL. تعتمد هذه المقالة على مقالة نظرة عامة على نشاط النسخ التي تقدم نظرة عامة على نشاط النسخ.

هام

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

القدرات المدعومة

موصل PostgreSQL هذا مدعوم للأنشطة التالية:

القدرات المدعومة IR
نشاط النسخ (مصدر/-) (1) (2)
نشاط البحث (1) (2)

① وقت تشغيل تكامل Azure ② وقت تشغيل التكامل المستضاف ذاتيًا

للحصول على قائمة بمخازن البيانات المدعومة كمصادر/متلقيات بواسطة نشاط النسخ، راجع جدول مخازن البيانات المدعومة.

على وجه التحديد، يدعم موصل PostgreSQL هذا PostgreSQL الإصدار 7.4 وما بعده.

المتطلبات الأساسية

إذا كان مخزن البيانات الخاص بك موجوداً داخل شبكة محلية، أو شبكة Azure ظاهرية، أو Amazon Virtual Private Cloud، فأنت بحاجة إلى تكوين وقت تشغيل تكامل مستضاف ذاتياً للاتصال به.

إذا كان مخزن البيانات الخاص بك عبارة عن خدمة بيانات سحابية مُدارة، يمكنك استخدام Azure Integration Runtime. إذا كان الوصول مقتصراً على عناوين IP التي تمت الموافقة عليها في قواعد جدار الحماية، يمكنك إضافة عناوين IP لـ Azure Integration Runtime إلى قائمة السماح.

يمكنك أيضاً استخدام ميزة وقت تشغيل تكامل الشبكة الظاهرية المُدارة في Azure Data Factory للوصول إلى الشبكة المحلية دون تثبيت وقت تشغيل تكامل مستضاف ذاتياً وتكوينه.

لمزيد من المعلومات حول آليات وخيارات أمان الشبكة التي يدعمها Data Factory، راجع إستراتيجيات الوصول إلى البيانات.

يوفر Integration Runtime برنامج تشغيل PostgreSQL مدمجاً بدءاً من الإصدار 3.7، وبالتالي لا تحتاج إلى تثبيت أي برنامج تشغيل يدوياً.

الشروع في العمل

لتنفيذ نشاط النسخ باستخدام أحد المسارات، يمكنك استخدام إحدى الأدوات أو عدد تطوير البرامج التالية:

إنشاء خدمة مرتبطة بـ PostgreSQL باستخدام واجهة المستخدم

استخدم الخطوات التالية لإنشاء خدمة مرتبطة بـ PostgreSQL في واجهة مستخدم مدخل Microsoft Azure.

  1. استعرض للوصول إلى علامة التبويب "Manage" في مصنع بيانات Azure أو مساحة عمل Synapse، وحدد "Linked Services"، ثم انقر فوق "New":

  2. ابحث عن Postgre وحدد موصل PostgreSQL.

    حدد موصل PostgreSQL.

  3. قم بتكوين تفاصيل الخدمة، واختبر الاتصال، وأنشئ الخدمة المرتبطة الجديدة.

    تكوين خدمة مرتبطة بـ PostgreSQL.

تفاصيل تكوين الموصل

توفر الأقسام التالية تفاصيل حول الخصائص المستخدمة لتحديد كيانات Data Factory الخاصة بموصل PostgreSQL.

خصائص الخدمة المرتبطة

الخصائص التالية مدعومة لخدمة PostgreSQL المرتبطة:

الخاصية الوصف مطلوب
النوع يجب تعيين خاصية النوع إلى: PostgreSqlV2 ‏‏نعم‬
الخادم يحدد اسم المضيف - والمنفذ الاختياري - الذي يتم تشغيل PostgreSQL عليه. ‏‏نعم‬
المنفذ منفذ TCP لخادم PostgreSQL. لا
قاعدة بيانات قاعدة بيانات PostgreSQL للاتصال بها. ‏‏نعم‬
اسم المستخدم اسم المستخدم للاتصال به. غير مطلوب إذا كنت تستخدم IntegratedSecurity. ‏‏نعم‬
كلمة المرور كلمة المرور للاتصال بها. غير مطلوب إذا كنت تستخدم IntegratedSecurity. ‏‏نعم‬
sslMode يتحكم في ما إذا كان يتم استخدام SSL، اعتمادا على دعم الخادم.
- تعطيل: تم تعطيل SSL. إذا كان الخادم يتطلب SSL، فسيفشل الاتصال.
- السماح: يفضل الاتصالات غير SSL إذا كان الخادم يسمح بها، ولكن يسمح باتصالات SSL.
- الأفضل: يفضل اتصالات SSL إذا كان الخادم يسمح بها، ولكن يسمح بالاتصالات بدون SSL.
- مطلوب: فشل الاتصال إذا كان الخادم لا يدعم SSL.
- Verify-ca: فشل الاتصال إذا كان الخادم لا يدعم SSL. يتحقق أيضا من شهادة الخادم.
- التحقق الكامل: فشل الاتصال إذا كان الخادم لا يدعم SSL. يتحقق أيضا من شهادة الخادم باسم المضيف.
الخيارات: تعطيل (0) / السماح (1) / تفضيل (2) (افتراضي) / طلب (3) / تحقق من ca (4) / التحقق الكامل (5)
لا
نوع المصادقة نوع المصادقة للاتصال بقاعدة البيانات. يدعم Basic فقط. ‏‏نعم‬
connectVia Integration Runtime الذي سيتم استخدامه للاتصال بمخزن البيانات. تعرف على المزيد من قسم المتطلبات الأساسية. إذا لم يتم تحديده، فإنه يستخدم Azure Integration Runtime الافتراضي. لا
خصائص الاتصال الإضافية:
Schema تعيين مسار البحث في المخطط. لا
تجميع ما إذا كان يجب استخدام تجمع الاتصال أم لا. لا
connectionTimeout وقت الانتظار (بالثوان) أثناء محاولة إنشاء اتصال قبل إنهاء المحاولة وإنشاء خطأ. لا
commandTimeout وقت الانتظار (بالثوان) أثناء محاولة تنفيذ أمر قبل إنهاء المحاولة وإنشاء خطأ. تعيين إلى صفر للنهاية. لا
trustServerCertificate ما إذا كنت تريد الوثوق بشهادة الخادم دون التحقق من صحتها. لا
sslCertificate موقع شهادة عميل ليتم إرسالها إلى الخادم. لا
sslKey موقع مفتاح عميل لشهادة عميل ليتم إرسالها إلى الخادم. لا
كلمة مرور ssl كلمة المرور لمفتاح لشهادة عميل. لا
readBufferSize تحديد حجم المخزن المؤقت الداخلي الذي يستخدمه Npgsql عند القراءة. قد تؤدي الزيادة إلى تحسين الأداء إذا تم نقل قيم كبيرة من قاعدة البيانات. لا
logParameters عند التمكين، يتم تسجيل قيم المعلمات عند تنفيذ الأوامر. لا
timezone الحصول على المنطقة الزمنية للجلسة أو تعيينها. لا
الترميز يحصل أو يعين ترميز .NET الذي سيتم استخدامه لترميز/فك ترميز بيانات سلسلة PostgreSQL. لا

إشعار

للحصول على التحقق الكامل من SSL عبر اتصال ODBC عند استخدام وقت تشغيل التكامل المستضاف ذاتيًا، يتعين استخدام اتصال نوع ODBC بدلاً من موصل PostgreSQL بشكل صريح، وإكمال التكوين التالي:

  1. إعداد DSN على أي خوادم SHIR.
  2. ضع الشهادة المناسبة ل PostgreSQL في C:\Windows\ServiceProfiles\DIAHostService\AppData\Roaming\postgresql\root.crt على خوادم SHIR. هذا هو المكان الذي يبحث > فيه برنامج تشغيل ODBC عن شهادة SSL للتحقق من وقت اتصاله بقاعدة البيانات.
  3. في اتصال مصنع البيانات، استخدم اتصال نوع ODBC، مع سلسلة الاتصال التي تشير إلى DSN الذي أنشأته على خوادم SHIR.

مثال:

{
    "name": "PostgreSqlLinkedService",
    "properties": {
        "type": "PostgreSqlV2",
        "typeProperties": {
            "server": "<server>",
            "port": 5432,
            "database": "<database>",
            "username": "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            },
            "sslmode": <sslmode>,
            "authenticationType": "Basic"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

مثال: تخزين كلمة المرور في Azure Key Vault

{
    "name": "PostgreSqlLinkedService",
    "properties": {
        "type": "PostgreSqlV2",
        "typeProperties": {
            "server": "<server>",
            "port": 5432,
            "database": "<database>",
            "username": "<username>",
            "password": {
                "type": "AzureKeyVaultSecret",
                "store": { 
                    "referenceName": "<Azure Key Vault linked service name>",
                    "type": "LinkedServiceReference"
                },
                "secretName": "<secretName>"
            }
            "sslmode": <sslmode>,
            "authenticationType": "Basic"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

خصائص مجموعة البيانات

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

لنسخ البيانات من PostgreSQL، يتم دعم الخصائص التالية:

الخاصية الوصف مطلوب
النوع يجب تعيين خاصية نوع مجموعة البيانات إلى: PostgreSqlV2Table ‏‏نعم‬
Schema اسم المخطط. لا (إذا تم تحديد "الاستعلام" في مصدر النشاط)
طاولتنا ضع اسمًا للجدول. لا (إذا تم تحديد "الاستعلام" في مصدر النشاط)

مثال

{
    "name": "PostgreSQLDataset",
    "properties":
    {
        "type": "PostgreSqlV2Table",
        "linkedServiceName": {
            "referenceName": "<PostgreSQL linked service name>",
            "type": "LinkedServiceReference"
        },
        "annotations": [],
        "schema": [],
        "typeProperties": {
            "schema": "<schema name>",
            "table": "<table name>"
        }
    }
}

إذا كنت تستخدم مجموعة البيانات المكتوبة RelationalTable، فلا تزال مدعومة كما هي، بينما يُقترح عليك استخدام المجموعة الجديدة من الآن فصاعداً.

انسخ خصائص النشاط

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

PostgreSQL كمصدر

لنسخ البيانات من PostgreSQL، يتم دعم الخصائص التالية في قسم source لنشاط النسخ:

الخاصية الوصف مطلوب
النوع يجب تعيين خاصية نوع مصدر نشاط النسخ إلى: PostgreSqlV2Source ‏‏نعم‬
استعلام استخدم استعلام SQL المخصص لقراءة البيانات. على سبيل المثال: "query": "SELECT * FROM \"MySchema\".\"MyTable\"". لا (إذا تم تحديد "tableName" في مجموعة البيانات)

إشعار

تعتبر أسماء المخططات والجداول حساسة لحالة الأحرف. قم بتضمينها في "" (علامات الاقتباس المزدوجة) في الاستعلام.

مثال:

"activities":[
    {
        "name": "CopyFromPostgreSQL",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<PostgreSQL input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "PostgreSqlV2Source",
                "query": "SELECT * FROM \"MySchema\".\"MyTable\""
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

إذا كنت تستخدم المصدر المصنف حسب النوع RelationalSource، فلا يزال هذا المصدر مدعوماً كما هو، بينما نقترح عليك استخدام المصدر الجديد للمضي قدماً.

تعيين نوع البيانات ل PostgreSQL

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

نوع بيانات PostgreSql نوع بيانات الخدمة المؤقتة نوع بيانات الخدمة المؤقتة ل PostgreSQL (قديم)
SmallInt Int16 Int16
Integer Int32 Int32
BigInt Int64 Int64
Decimal (الدقة <= 28) Decimal Decimal
Decimal (الدقة > 28) إلغاء الدعم String
Numeric Decimal Decimal
Real Single Single
Double Double Double
SmallSerial Int16 Int16
Serial Int32 Int32
BigSerial Int64 Int64
Money Decimal String
Char String String
Varchar String String
Text String String
Bytea Byte[] Byte[]
Timestamp DateTime DateTime
Timestamp with time zone DateTime String
Date DateTime DateTime
Time TimeSpan TimeSpan
Time with time zone DateTimeOffset String
Interval TimeSpan String
Boolean Boolean Boolean
Point String String
Line String String
Iseg String String
Box String String
Path String String
Polygon String String
Circle String String
Cidr String String
Inet String String
Macaddr String String
Macaddr8 String String
Tsvector String String
Tsquery String String
UUID Guid Guid
Json String String
Jsonb String String
Array String String
Bit Byte[] Byte[]
Bit varying Byte[] Byte[]
XML String String
IntArray String String
TextArray String String
NumbericArray String String
DateArray String String
Range String String
Bpchar String String

بحث عن خصائص النشاط

لمعرفة تفاصيل حول الخصائص، تحقق من نشاط البحث.

ترقية خدمة PostgreSQL المرتبطة

فيما يلي الخطوات التي تساعدك على ترقية خدمة PostgreSQL المرتبطة:

  1. إنشاء خدمة PostgreSQL مرتبطة جديدة وتكوينها بالإشارة إلى خصائص الخدمة المرتبطة.

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

الاختلافات بين PostgreSQL وPostgreSQL (قديم)

يعرض الجدول أدناه اختلافات تعيين نوع البيانات بين PostgreSQL وPostgreSQL (قديم).

نوع بيانات PostgreSQL نوع بيانات الخدمة المؤقتة ل PostgreSQL نوع بيانات الخدمة المؤقتة ل PostgreSQL (قديم)
Money عدد عشري السلسلة‬
الطابع الزمني مع المنطقة الزمنية DateTime السلسلة‬
الوقت مع المنطقة الزمنية DateTimeOffset السلسلة‬
الفاصل الزمني TimeSpan السلسلة‬
BigDecimal ‏‏غير مدعومة. كبديل، استخدم to_char() الدالة لتحويل BigDecimal إلى String. السلسلة‬

للحصول على قائمة بمخازن البيانات المدعومة من نشاط النسخ كمصادر ومواضع تلقي، راجع مخازن البيانات المدعومة.