Azure Data Factory veya Synapse Analytics kullanarak MongoDB için Azure Cosmos DB'ye veya Azure Cosmos DB'den veri kopyalama

UYGULANANLAR: Azure Data Factory Azure Synapse Analytics

Bahşiş

Kuruluşlar için hepsi bir arada analiz çözümü olan Microsoft Fabric'te Data Factory'yi deneyin. Microsoft Fabric , veri taşımadan veri bilimine, gerçek zamanlı analize, iş zekasına ve raporlamaya kadar her şeyi kapsar. Yeni bir deneme sürümünü ücretsiz olarak başlatmayı öğrenin!

Bu makalede, MongoDB için Azure Cosmos DB'den ve Azure Cosmos DB'ye veri kopyalamak için Azure Data Factory ve Synapse Analytics işlem hatlarında Kopyalama Etkinliği'nin nasıl kullanılacağı özetlenmiştir. Makale, Kopyalama Etkinliği'ne genel bir genel bakış sunan Kopyalama Etkinliği üzerine derlenmektedir.

Dekont

Bu bağlayıcı yalnızca MongoDB için Azure Cosmos DB'ye/azuredan veri kopyalamayı destekler. NoSQL için Azure Cosmos DB için NoSQL için Azure Cosmos DB bağlayıcısına bakın. Diğer API türleri şu anda desteklenmiyor.

Desteklenen özellikler

MongoDB için Azure Cosmos DB bağlayıcısı aşağıdaki özellikler için desteklenir:

Desteklenen özellikler IR Yönetilen özel uç nokta
Kopyalama etkinliği (kaynak/havuz) ① ②

(1) Azure tümleştirme çalışma zamanı (2) Şirket içinde barındırılan tümleştirme çalışma zamanı

MongoDB için Azure Cosmos DB'den desteklenen herhangi bir havuz veri deposuna veri kopyalayabilir veya desteklenen herhangi bir kaynak veri deposundaki verileri MongoDB için Azure Cosmos DB'ye kopyalayabilirsiniz. Kopyalama Etkinliği'nin kaynak ve havuz olarak desteklediği veri depolarının listesi için bkz . Desteklenen veri depoları ve biçimleri.

MongoDB için Azure Cosmos DB bağlayıcısını kullanarak aşağıdakileri yapabilirsiniz:

  • MongoDB için Azure Cosmos DB'den ve azure cosmos DB'ye veri kopyalama.
  • Ekleme veya yükseltme olarak Azure Cosmos DB'ye yazın.
  • JSON belgelerini olduğu gibi içeri ve dışarı aktarın ya da tablolu bir veri kümesinden veya veri kümesine veri kopyalayın. Örnek olarak SQL veritabanı ve CSV dosyası verilebilir. Belgeleri olduğu gibi JSON dosyalarına veya başka bir Azure Cosmos DB koleksiyonuna veya koleksiyonuna kopyalamak için bkz. JSON belgelerini içeri veya dışarı aktarma.

Başlarken

İşlem hattıyla Kopyalama etkinliği gerçekleştirmek için aşağıdaki araçlardan veya SDK'lardan birini kullanabilirsiniz:

Kullanıcı arabirimini kullanarak MongoDB için Azure Cosmos DB'ye bağlı hizmet oluşturma

Azure portalı kullanıcı arabiriminde MongoDB için Azure Cosmos DB'ye bağlı bir hizmet oluşturmak için aşağıdaki adımları kullanın.

  1. Azure Data Factory veya Synapse çalışma alanınızda Yönet sekmesine göz atın ve Bağlı Hizmetler'i seçin, ardından Yeni'ye tıklayın:

  2. MongoDB için Azure Cosmos DB'yi arayın ve bu bağlayıcıyı seçin.

    Select the Azure Cosmos DB for MongoDB connector.

  3. Hizmet ayrıntılarını yapılandırın, bağlantıyı test edin ve yeni bağlı hizmeti oluşturun.

    Configure a linked service to Azure Cosmos DB for MongoDB.

Bağlan veya yapılandırma ayrıntıları

Aşağıdaki bölümlerde, MongoDB için Azure Cosmos DB'ye özgü Data Factory varlıklarını tanımlamak için kullanabileceğiniz özelliklerle ilgili ayrıntılar sağlanır.

Bağlı hizmet özellikleri

MongoDB için Azure Cosmos DB bağlı hizmeti için aşağıdaki özellikler desteklenir:

Özellik Açıklama Gerekli
type tür özelliği CosmosDbMongoDbApi olarak ayarlanmalıdır. Evet
Connectionstring MongoDB için Azure Cosmos DB'nizin bağlantı dizesi belirtin. Bunu Azure portalında (>Azure Cosmos DB dikey pencereniz)> birincil veya ikincil bağlantı dizesi bulabilirsiniz.
3.2 sunucu sürümü için dize deseni şeklindedir mongodb://<cosmosdb-name>:<password>@<cosmosdb-name>.documents.azure.com:10255/?ssl=true&replicaSet=globaldb.
3.6+ sunucu sürümleri için dize deseni şeklindedir mongodb://<cosmosdb-name>:<password>@<cosmosdb-name>.mongo.cosmos.azure.com:10255/?ssl=true&replicaSet=globaldb&retrywrites=false&maxIdleTimeMS=120000&appName=@<cosmosdb-name>@.

Ayrıca Azure Key Vault'a parola ekleyebilir ve yapılandırmayı password bağlantı dizesi çıkarabilirsiniz. Diğer ayrıntılarla birlikte Azure Key Vault'ta kimlik bilgilerini depolama bölümüne bakın.
Evet
database Erişmek istediğiniz veritabanının adı. Evet
isServerVersionAbove32 Sunucu sürümünün 3.2'nin üzerinde olup olmadığını belirtin. İzin verilen değerler true ve false(varsayılan) değerleridir. Bu, hizmette kullanılacak sürücüyü belirler. Evet
connectVia Veri deposuna bağlanmak için kullanılacak Integration Runtime. Azure Integration Runtime'ı veya şirket içinde barındırılan tümleştirme çalışma zamanını (veri deponuz özel bir ağda bulunuyorsa) kullanabilirsiniz. Bu özellik belirtilmezse, varsayılan Azure Integration Runtime kullanılır. No

Örnek

{
    "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"
        }
    }
}

Veri kümesi özellikleri

Veri kümelerini tanımlamak için kullanılabilen bölümlerin ve özelliklerin tam listesi için bkz . Veri kümeleri ve bağlı hizmetler. MongoDB için Azure Cosmos DB veri kümesi için aşağıdaki özellikler desteklenir:

Özellik Açıklama Gerekli
type Veri kümesinin tür özelliği CosmosDbMongoDbApiCollection olarak ayarlanmalıdır. Evet
Toplamaadı Azure Cosmos DB koleksiyonunun adı. Evet

Örnek

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

Kopyalama Etkinliği özellikleri

Bu bölümde MongoDB için Azure Cosmos DB kaynağının ve havuz desteğinin yer aldığı özelliklerin listesi sağlanır.

Etkinlikleri tanımlamak için kullanılabilen bölümlerin ve özelliklerin tam listesi için bkz . İşlem hatları.

Kaynak olarak MongoDB için Azure Cosmos DB

Kopyalama Etkinliği kaynağı bölümünde aşağıdaki özellikler desteklenir:

Özellik Açıklama Gerekli
type Kopyalama etkinliği kaynağının type özelliği CosmosDbMongoDbApiSource olarak ayarlanmalıdır. Evet
filtrele Sorgu işleçlerini kullanarak seçim filtrelerini belirtir. Koleksiyondaki tüm belgeleri döndürmek için bu parametreyi atlar veya boş bir belge ({} ) geçirirsiniz. No
cursorMethods.project Projeksiyon için belgelerde döndürülecek alanları belirtir. Eşleşen belgelerdeki tüm alanları döndürmek için bu parametreyi atla. No
cursorMethods.sort Sorgunun eşleşen belgeleri döndürme sırasını belirtir. cursor.sort() öğesine bakın. No
cursorMethods.limit Sunucunun döndürdüğü en fazla belge sayısını belirtir. cursor.limit()'e bakın. No
cursorMethods.skip MongoDB'nin sonuçları döndürmeye başladığı ve atlandığı belge sayısını belirtir. cursor.skip() adresine bakın. No
batchSize MongoDB örneğinden gelen yanıtın her toplu işleminde döndürülecek belge sayısını belirtir. Çoğu durumda, toplu iş boyutunun değiştirilmesi kullanıcıyı veya uygulamayı etkilemez. Azure Cosmos DB sınırları her toplu iş boyutu 40 MB'ı aşamaz. Bu, belge boyutunu toplu iş sayısı toplamıdır, bu nedenle belge boyutunuz büyükse bu değeri azaltın. No
(varsayılan değer 100'dür)

Bahşiş

ADF, BSON belgesini Katı modda tüketmeyi destekler. Filtre sorgunuzun Kabuk modu yerine Katı modda olduğundan emin olun. MongoDB kılavuzunda daha fazla açıklama bulunabilir.

Örnek

"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>"
            }
        }
    }
]

Havuz olarak MongoDB için Azure Cosmos DB

Kopyalama Etkinliği havuzu bölümünde aşağıdaki özellikler desteklenir:

Özellik Açıklama Gerekli
type Kopyalama Etkinliği havuzu type özelliği CosmosDbMongoDbApiSink olarak ayarlanmalıdır. Evet
writeBehavior Azure Cosmos DB'ye veri yazmayı açıklar. İzin verilen değerler: insert ve upsert.

Upsert'in davranışı, aynı _id belge zaten varsa belgeyi değiştirmektir; aksi takdirde, belgeyi ekleyin.

Not: Hizmet, özgün belgede veya sütun eşlemesinde belirtilmemişse belge için otomatik olarak bir _id oluşturur_id. Bu, upsert'in beklendiği gibi çalışması için belgenizin bir kimliği olduğundan emin olmanız gerektiği anlamına gelir.
No
(varsayılan değer ekle'dir)
writeBatchSize writeBatchSize özelliği, her toplu işleme yazacak belgelerin boyutunu denetler. Performansı artırmak ve belge boyutunuz büyükse değeri azaltmak için writeBatchSize değerini artırmayı deneyebilirsiniz. No
(varsayılan değer 10.000'dir)
writeBatchTimeout Toplu ekleme işleminin zaman aşımına uğramadan önce bitmesini bekleme süresi. İzin verilen değer zaman aralığıdır. No
(varsayılan değer 00:30:00 - 30 dakikadır)

Bahşiş

JSON belgelerini olduğu gibi içeri aktarmak için JSON belgelerini içeri veya dışarı aktarma bölümüne bakın; tablo şeklindeki verilerden kopyalamak için Şema eşleme bölümüne bakın.

Örnek

"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 belgelerini içeri ve dışarı aktarma

Bu Azure Cosmos DB bağlayıcısını kullanarak kolayca:

  • Belgeleri olduğu gibi iki Azure Cosmos DB koleksiyonu arasında kopyalayın.
  • MongoDB, Azure Blob depolama, Azure Data Lake Store ve hizmetin desteklediği diğer dosya tabanlı depolar dahil olmak üzere çeşitli kaynaklardan Azure Cosmos DB'ye JSON belgelerini içeri aktarın.
  • Azure Cosmos DB koleksiyonundaki JSON belgelerini çeşitli dosya tabanlı depolara aktarın.

Şemadan bağımsız kopya elde etmek için:

  • Veri Kopyalama aracını kullandığınızda, JSON dosyalarına veya Azure Cosmos DB koleksiyonuna olduğu gibi dışarı aktar seçeneğini belirleyin.
  • Etkinlik yazma özelliğini kullandığınızda, kaynak veya havuz için karşılık gelen dosya deposuyla JSON biçimini seçin.

Şema eşleme

MongoDB için Azure Cosmos DB'den tablosal havuza veya tersine çevrilmiş verilere kopyalamak için şema eşlemesine bakın.

Özellikle Azure Cosmos DB'ye yazmak için, Azure Cosmos DB'yi kaynak verilerinizden doğru nesne kimliğiyle doldurduğunuzdan emin olmak için, örneğin, SQL veritabanı tablosunda bir "id" sütununuz var ve bunun değerini insert/upsert için MongoDB'de belge kimliği olarak kullanmak istiyorsanız, mongoDB katı mod tanımına (_id.$oid) göre uygun şema eşlemesini aşağıdaki gibi ayarlamanız gerekir:

Map ID in MongoDB sink

Kopyalama etkinliği yürütme sonrasında, havuz içinde BSON ObjectId'nin altında oluşturulur:

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

Kopyalama Etkinliği'nin kaynak ve havuz olarak desteklediği veri depolarının listesi için desteklenen veri depolarına bakın.