نسخ البيانات من 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.
الشروع في العمل
لتنفيذ نشاط النسخ باستخدام أحد المسارات، يمكنك استخدام إحدى الأدوات أو عدد تطوير البرامج التالية:
- أداة نسخ البيانات
- مدخل Azure
- The .NET SDK
- عدة تطوير برامج Python
- Azure PowerShell
- واجهة برمجة تطبيقات REST
- قالب Azure Resource Manager
إنشاء خدمة مرتبطة لـ MongoDB باستخدام واجهة المستخدم
استخدم الخطوات التالية لإنشاء خدمة مرتبطة لـ MongoDB في واجهة مستخدم مدخل Microsoft Azure.
استعرض للوصول إلى علامة التبويب "Manage" في مصنع بيانات Azure أو مساحة عمل Synapse، وحدد "Linked Services"، ثم انقر فوق "New":
ابحث عن Mongo وحدد موصل 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 |
المحتوى ذو الصلة
للحصول على قائمة بمخازن البيانات المدعومة من نشاط النسخ كمصادر ومواضع تلقي، راجع مخازن البيانات المدعومة.