مشاركة عبر


نسخ البيانات من MongoDB باستخدام Azure Data Factory أو Synapse Analytics (قديم)

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

تلميح

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

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

هام

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

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

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

وبشكل خاص، يدعم موصل MongoDB هذا:

  • MongoDB الإصدارات 2.4، و2.6، و3.0، و3.2، و3.4، و3.6.
  • نسخ البيانات باستخدام مصادقة أساسية أو مجهولة.

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

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

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

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

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

يوفر وقت تشغيل التكامل برنامج تشغيل MongoDB مضمن، لذلك لا تحتاج إلى تثبيت أي برنامج تشغيل يدوياً عند نسخ البيانات من MongoDB.

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

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

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

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

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

  2. ابحث عن Mongo وحدد موصل MongoDB.

    لقطة شاشة لموصل MongoDB.

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

    لقطة شاشة لتكوين الخدمة المرتبطة لـ MongoDB.

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

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

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

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

الخاصية الوصف مطلوب
النوع يجب تعيين خاصية النوع إلى MongoDb ‏‏نعم‬
الخادم عنوان "أي بي" أو اسم المضيف من خادم MongoDB. ‏‏نعم‬
المنفذ منفذ TCP الذي يستخدمه خادم MongoDB للاستماع إلى اتصالات العميل. لا (الافتراضي هو 27017)
databaseName اسم قاعدة بيانات MongoDB التي تريد الوصول إليها. ‏‏نعم‬
نوع المصادقة نوع المصادقة المستخدمة للاتصال بقاعدة بيانات MongoDB.
القيم المسموح بها هي: Basic، وAnonymous.
‏‏نعم‬
اسم المستخدم حساب المستخدم للوصول إلى MongoDB. نعم (إذا تم استخدام المصادقة الأساسية).
كلمة المرور كلمة مرور للمستخدم. ضع علامة على هذا الحقل باعتباره SecureString لتخزينه بشكل آمن، أو قم بالإشارة إلى بيانات سرية مخزنة في Azure Key Vault. نعم (إذا تم استخدام المصادقة الأساسية).
authSource اسم قاعدة بيانات MongoDB التي تريد استخدامها للتحقق من بيانات الاعتماد الخاصة بك للمصادقة. ‏‏لا. للمصادقة الأساسية، الوضع الافتراضي هو استخدام حساب المسؤول وقاعدة البيانات المحددة باستخدام خاصية databaseName.
enableSsl يحدد ما إذا كانت الاتصالات بالخادم مشفرة باستخدام TLS. القيمة الافتراضية هي false. لا
allowSelfSignedServerCert يحدد ما إذا كان سيتم السماح بشهادات موقعة ذاتياً من الخادم. القيمة الافتراضية هي false. لا
connectVia Integration Runtime الذي سيتم استخدامه للاتصال بمخزن البيانات. تعرف على المزيد من قسم المتطلبات الأساسية. إذا لم يتم تحديده، فإنه يستخدم Azure Integration Runtime الافتراضي. لا

مثال:

{
    "name": "MongoDBLinkedService",
    "properties": {
        "type": "MongoDb",
        "typeProperties": {
            "server": "<server name>",
            "databaseName": "<database name>",
            "authenticationType": "Basic",
            "username": "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

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

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

الخاصية الوصف مطلوب
النوع يجب تعيين خاصية نوع مجموعة البيانات إلى: MongoDbCollection ‏‏نعم‬
اسم المجموعة اسم المجموعة في قاعدة بيانات MongoDB. ‏‏نعم‬

مثال:

{
    "name": "MongoDbDataset",
    "properties": {
        "type": "MongoDbCollection",
        "linkedServiceName": {
            "referenceName": "<MongoDB linked service name>",
            "type": "LinkedServiceReference"
        },
        "typeProperties": {
            "collectionName": "<Collection name>"
        }
    }
}

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

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

MongoDB كمصدر

تُدعم الخصائص التالية في قسم مصدر نشاط النسخ:

الخاصية الوصف مطلوب
النوع يجب تعيين خاصية نوع مصدر نشاط النسخ إلى: MongoDbSource ‏‏نعم‬
استعلام استخدم استعلام SQL-92 المخصص لقراءة البيانات. على سبيل المثال: حدد * من "MyTable". لا (إذا تم تحديد "collectionName" في مجموعة البيانات)

مثال:

"activities":[
    {
        "name": "CopyFromMongoDB",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<MongoDB input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "MongoDbSource",
                "query": "SELECT * FROM MyTable"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

تلميح

عند تحديد استعلام SQL، انتبه إلى تنسيق التاريخ والوقت. على سبيل المثال: SELECT * FROM Account WHERE LastModifiedDate >= '2018-06-01' AND LastModifiedDate < '2018-06-02' أو استخدام المعلمة SELECT * FROM Account WHERE LastModifiedDate >= '@{formatDateTime(pipeline().parameters.StartTime,'yyyy-MM-dd HH:mm:ss')}' AND LastModifiedDate < '@{formatDateTime(pipeline().parameters.EndTime,'yyyy-MM-dd HH:mm:ss')}'

مخطط بواسطة Data Factory

تستنتج خدمة Azure Data Factory مخططاً من مجموعة MongoDB باستخدام أحدث 100 مستند في المجموعة. إذا لم تتضمن هذه المستندات المائة مخطط كامل، فقد يتم تجاهل بعض الأعمدة أثناء عملية النسخ.

تعيين نوع البيانات لـ MongoDB

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

نوع بيانات MongoDB نوع بيانات الخدمة المؤقتة
ثنائي بايت []
قيمة منطقية قيمة منطقية
التاريخ DateTime
NumberDouble مزدوج
NumberInt Int32
NumberLong Int64
ObjectID السلسلة‬
السلسلة‬ السلسلة‬
Uuid Guid
‏‏الكائن تمت إعادة تسويته إلى أعمدة مسطحة باستخدام "_" كفاصل متداخل

إشعار

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

لا يتوفر حالياً دعم لأنواع بيانات MongoDB التالية: DBPointer، وJavaScript، وMax/Min key، والتعبير العادي، والرمز، والطابع الزمني، وغير المحددة.

دعم الأنواع المعقدة باستخدام الجداول الظاهرية

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

  • جدول أساسي، يحتوي على نفس البيانات الموجودة في الجدول الحقيقي باستثناء أعمدة النوع المعقد. يستخدم الجدول الأساسي نفس اسم الجدول الحقيقي الذي يمثله.
  • جدول ظاهري لكل عمود من النوع المعقد، ويوسع البيانات المتداخلة. يتم تسمية الجداول الظاهرية باستخدام اسم الجدول الحقيقي، وفاصل "_" واسم الصفيف أو الكائن.

تشير الجداول الافتراضية إلى البيانات الموجودة في الجدول الحقيقي، ما يتيح للسائق الوصول إلى البيانات غير الطبيعية. يمكنك الوصول إلى محتوى صفائف MongoDB عن طريق الاستعلام عن الجداول الظاهرية والانضمام إليها.

مثال

على سبيل المثال، ExampleTable هنا هو جدول MongoDB يحتوي على عمود واحد مع صفيف من الكائنات في كل خلية - الفواتير، وعمود واحد مع صفيف من الأنواع العددية - التصنيفات.

_id اسم العميل الفواتير مستوي الخدمة التقييمات
1111 ABC [{معرف الفاتورة:"123"، الصنف:"محمصة"، السعر:"456"، الخصم:"0.2"}، {معرف الفاتورة:"124"، الصنف:"فرن"، السعر: "1235"، الخصم: "0.2"}] فضية [5,6]
2222 XYZ [{معرف الفاتورة:"135"، الصنف:"ثلاجة"، السعر: "12543"، الخصم: "0.0"}] ذهبية [1,2]

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

_id اسم العميل مستوي الخدمة
1111 ABC فضية
2222 XYZ ذهبية

تعرض الجداول التالية الجداول الظاهرية التي تمثل الصفائف الأصلية في المثال. تحتوي هذه الجداول على ما يلي:

  • مرجع يعود إلى عمود المفتاح الأساسي الأصلي المقابل لصف الصفيف الأصلي (عبر العمود _id)
  • إشارة إلى موضع البيانات داخل الصفيف الأصلي
  • البيانات الموسعة لكل عنصر داخل الصفيف

الجدول "ExampleTable_Invoices":

_id ExampleTable_Invoices_dim1_idx معرف الفاتورة عنصر price Discount
1111 0 123 محمصه 456 0.2
1111 1 124 فرن 1235 0.2
2222 0 135 ثلاجة 12543 0.0

الجدول "ExampleTable_Ratings":

_id ExampleTable_Ratings_dim1_idx ExampleTable_Ratings
1111 0 5
1111 1 6
2222 0 1
2222 1 2

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