نسخ البيانات من أو إلى Azure Cosmos DB ل MongoDB باستخدام Azure Data Factory أو Synapse Analytics

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

تلميح

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

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

إشعار

يدعم هذا الموصل فقط نسخ البيانات من/إلى Azure Cosmos DB ل MongoDB. بالنسبة إلى Azure Cosmos DB ل NoSQL، راجع موصل Azure Cosmos DB for NoSQL. أنواع واجهة برمجة التطبيقات الأخرى غير مدعومة حاليا.

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

يتم دعم موصل Azure Cosmos DB ل MongoDB للقدرات التالية:

القدرات المدعومة IR نقطة النهاية الخاصة المُدارة
Copy activity (المصدر/المتلق) (1) (2)

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

يمكنك نسخ البيانات من Azure Cosmos DB ل MongoDB إلى أي مخزن بيانات متلق مدعوم، أو نسخ البيانات من أي مخزن بيانات مصدر مدعوم إلى Azure Cosmos DB ل MongoDB. للحصول على قائمة مخازن البيانات المعتمدة كمصادر ومواضع تلقٍّ، راجع مخازن البيانات المعتمدة والتنسيقات.

يمكنك استخدام Azure Cosmos DB لموصل MongoDB من أجل:

  • انسخ البيانات من وإلى Azure Cosmos DB ل MongoDB.
  • الكتابة إلى Azure Cosmos DB كـ إدراج أو upsert.
  • استيراد وتصدير مستندات JSON كما هي، أو نسخ البيانات من أو إلى مجموعة بيانات مجدولة. تتضمن الأمثلة قاعدة بيانات SQL وملف CSV. لنسخ المستندات كما هي إلى أو من ملفات JSON أو إلى أو من مجموعة Azure Cosmos DB أخرى، راجع استيراد مستندات JSON أو تصديرها.

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

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

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

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

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

  2. ابحث عن Azure Cosmos DB ل MongoDB وحدد هذا الموصل.

    حدد موصل Azure Cosmos DB ل MongoDB.

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

    تكوين خدمة مرتبطة ب Azure Cosmos DB ل MongoDB.

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

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

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

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

الخاصية الوصف مطلوب
النوع يجب تعيين خاصية النوع إلى CosmosDbMongoDbApi. ‏‏نعم‬
سلسلة الاتصال حدد سلسلة الاتصال ل Azure Cosmos DB ل MongoDB. يمكنك العثور عليه في مدخل Microsoft Azure -> شفرة Azure Cosmos DB -> سلسلة الاتصال الأساسية أو الثانوية.
بالنسبة لإصدار الخادم 3.2، يكون نمط السلسلة هو mongodb://<cosmosdb-name>:<password>@<cosmosdb-name>.documents.azure.com:10255/?ssl=true&replicaSet=globaldb.
بالنسبة لإصدارات الخادم 3.6+، يكون نمط السلسلة هو mongodb://<cosmosdb-name>:<password>@<cosmosdb-name>.mongo.cosmos.azure.com:10255/?ssl=true&replicaSet=globaldb&retrywrites=false&maxIdleTimeMS=120000&appName=@<cosmosdb-name>@.

يمكنك أيضًا وضع كلمة مرور في Azure Key Vault وسحب تكوين password خارج سلسلة الاتصال. راجع تخزين بيانات الاعتماد في Azure Key Vault للحصول على المزيد من التفاصيل.
‏‏نعم‬
قاعدة بيانات اسم قاعدة البيانات التي تريد الوصول إليها. ‏‏نعم‬
isServerVersionAbove32 حدد ما إذا كان إصدار الخادم أعلى من 3.2. القيم المسموح بها هي true وfalse (افتراضي). سيحدد هذا برنامج التشغيل الذي سيتم استخدامه في الخدمة. ‏‏نعم‬
connectVia وقت تشغيل التكامل المطلوب استخدامه للاتصال بمخزن البيانات. يمكنك استخدام وقت تشغيل التكامل في Azure أو وقت تشغيل تكامل مستضاف ذاتياً (إذا كان مخزن البيانات الخاص بك موجوداً في شبكة خاصة). إذا لم يتم تحديد هذه الخاصية، فسيتم استخدام وقت تشغيل التكامل في Azure الافتراضي. لا

مثال

{
    "name": "CosmosDbMongoDBAPILinkedService",
    "properties": {
        "type": "CosmosDbMongoDbApi",
        "typeProperties": {
            "connectionString": "mongodb://<cosmosdb-name>:<password>@<cosmosdb-name>.documents.azure.com:10255/?ssl=true&replicaSet=globaldb",
            "database": "myDatabase",
            "isServerVersionAbove32": "false"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

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

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

الخاصية الوصف مطلوب
النوع يجب تعيين خاصية نوع مجموعة البيانات إلى CosmosDbMongoDbApiCollection. ‏‏نعم‬
اسم المجموعة اسم مجموعة Azure Cosmos DB. ‏‏نعم‬

مثال

{
    "name": "CosmosDbMongoDBAPIDataset",
    "properties": {
        "type": "CosmosDbMongoDbApiCollection",
        "typeProperties": {
            "collectionName": "<collection name>"
        },
        "schema": [],
        "linkedServiceName":{
            "referenceName": "<Azure Cosmos DB for MongoDB linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

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

يوفر هذا القسم قائمة بالخصائص التي يدعمها مصدر Azure Cosmos DB ومصدر MongoDB والمتلقي.

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

Azure Cosmos DB ل MongoDB كمصدر

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

الخاصية الوصف مطلوب
النوع يجب تعيين خاصية نوع مصدر نشاط النسخ إلى: CosmosDbMongoDbApiSource. ‏‏نعم‬
filter يحدد عامل تصفية التحديد باستخدام عوامل تشغيل الاستعلام. لإرجاع جميع المستندات في مجموعة، احذف هذه المعلمة أو مرر مستند فارغ ({}). لا
cursorMethods.project يحدد الحقول التي سيتم إرجاعها في المستندات للإسقاط. لإرجاع جميع الحقول في المستندات المطابقة، احذف هذه المعلمة. لا
cursorMethods.sort يحدد الترتيب الذي يقوم الاستعلام بإرجاع مستندات مطابقة به. ارجع إلى cursor.sort(). لا
cursorMethods.limit يحدد الحد الأقصى لعدد المستندات التي يرجعها الخادم. ارجع إلى cursor.limit(). لا
cursorMethods.skip يحدد عدد المستندات التي يجب تخطيها والتي يبدأ MongoDB من عندها في إرجاع النتائج. الرجوع إلى cursor.skip(). لا
batchSize يحدد عدد المستندات التي سيتم إرجاعها في كل دُفعة من الاستجابة من مثيل MongoDB. في معظم الحالات، لن يؤثر تعديل حجم الدُفعة على المستخدم أو التطبيق. لا يمكن أن يتجاوز حجم كل دفعة في Azure Cosmos DB 40 ميغابايت، وهو مجموع حجم الدفعات لحجم المستندات، لذا قم بتقليص هذه القيمة إذا كان حجم المستند كبيرا. لا
(الافتراضي هو 100)

تلميح

يدعم ADF استهلاك مستند BSON في الوضع المقيد. تأكد من أن استعلام التصفية في الوضع Strict بدلًا من الوضع Shell. يمكن العثور على مزيد من الوصف في دليل MongoDB.

مثال

"activities":[
    {
        "name": "CopyFromCosmosDBMongoDBAPI",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Azure Cosmos DB for MongoDB input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "CosmosDbMongoDbApiSource",
                "filter": "{datetimeData: {$gte: ISODate(\"2018-12-11T00:00:00.000Z\"),$lt: ISODate(\"2018-12-12T00:00:00.000Z\")}, _id: ObjectId(\"5acd7c3d0000000000000000\") }",
                "cursorMethods": {
                    "project": "{ _id : 1, name : 1, age: 1, datetimeData: 1 }",
                    "sort": "{ age : 1 }",
                    "skip": 3,
                    "limit": 3
                }
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Azure Cosmos DB ل MongoDB كمتلقي

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

الخاصية الوصف مطلوب
النوع يجب تعيين خاصية نوع متلقي نشاط النسخ إلى CosmosDbMongoDbApiSink. ‏‏نعم‬
writeBehavior يصف كيفية كتابة البيانات إلى Azure Cosmos DB. القيم المسموح بها: insert وupsert.

سلوك upsert هو استبدال المستند إذا كان مستند بنفس _id موجود مسبقًا؛ وإلا، قم بإدراج المستند.

ملاحظة: تنشئ الخدمة تلقائيًا_id لمستند إذا لم يتم تحديد _id إما في المستند الأصلي أو بتعيين عمود. وهذا يعني أنه يجب عليك التأكد من أن المستند يحتوي على معرّف لكي يعمل upsert كما هو متوقع.
لا
(الافتراضي هو insert)
writeBatchSize تتحكم خاصية writeBatchSize في حجم المستندات للكتابة في كل دُفعة. يمكنك محاولة زيادة قيمة writeBatchSize لتحسين الأداء وتقليل القيمة إذا كان حجم المستند كبيرًا. لا
(الافتراضي هو 10,000)
writeBatchTimeout وقت الانتظار لانتهاء عملية إدراج الدُفعة قبل انتهاء الوقت. القيمة المسموح بها هي نهاية الوقت. لا
(الافتراضي هو 00:30:00 - 30 دقيقة)

تلميح

لاستيراد مستندات JSON كما هي، راجع قسم استيراد أو تصدير مستندات JSON؛ وللنسخ من بيانات على شكل جدولي، راجع تعيين المخطط.

مثال

"activities":[
    {
        "name": "CopyToCosmosDBMongoDBAPI",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<Document DB output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "CosmosDbMongoDbApiSink",
                "writeBehavior": "upsert"
            }
        }
    }
]

استيراد وتصدير مستندات JSON

يمكنك استخدام موصل Azure Cosmos DB هذا بسهولة من أجل:

  • انسخ المستندات بين مجموعتي Azure Cosmos DB كما هي.
  • استيراد مستندات JSON من مصادر مختلفة إلى Azure Cosmos DB، بما في ذلك من MongoDB، تخزين Azure Blob، متجر Azure Data Lake، والمتاجر الأخرى المستندة إلى الملفات التي تدعمها الخدمة.
  • تصدير مستندات JSON من مجموعة Azure Cosmos DB إلى مختلف المتاجر المستندة إلى الملفات.

لتحقيق نسخ غير محدد المخطط:

  • عند استخدام أداة Copy Data، حدد خيار Export as-is to JSON files أو Azure Cosmos DB collection .
  • عند استخدام تأليف النشاط، اختر تنسيق JSON مع مخزن الملفات المقابل للمصدر أو المتلقي.

تعيين المخطط

لنسخ البيانات من Azure Cosmos DB ل MongoDB إلى متلقي جدولي أو معكوس، راجع تعيين المخطط.

على وجه التحديد للكتابة في Azure Cosmos DB، للتأكد من ملء Azure Cosmos DB بمعرف العنصر الصحيح من البيانات المصدر، على سبيل المثال، لديك عمود "معرف" في جدول قاعدة بيانات SQL وتريد استخدام قيمة ذلك كمعرف المستند في MongoDB لإدراج/upsert، تحتاج إلى تعيين تعيين المخطط المناسب وفقا لتعريف وضع MongoDB الصارم (_id.$oid) كما يلي:

معرّف التعيين في متلقي MongoDB

بعد تنفيذ نشاط النسخ، يتم إنشاء BSON ObjectId أدناه في المتلقي:

{
    "_id": ObjectId("592e07800000000000000000")
}

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