Aracılığıyla paylaş


Azure Data Factory veya Synapse Analytics kullanarak MongoDB'den veya MongoDB'ye veri kopyalama

UYGULANANLAR: Azure Data Factory Azure Synapse Analytics

İpucu

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 veritabanından ve veritabanından veri kopyalamak için Azure Data Factory Synapse Analytics işlem hatlarında Kopyalama Etkinliğinin nasıl kullanılacağı özetlenmiştir. Kopyalama etkinliğine genel bir genel bakış sunan kopyalama etkinliğine genel bakış makalesini oluşturur.

Önemli

Yeni MongoDB bağlayıcısı geliştirilmiş yerel MongoDB desteği sağlar. Çözümünüzde yalnızca geriye dönük uyumluluk için olduğu gibi desteklenen eski MongoDB bağlayıcısını kullanıyorsanız MongoDB bağlayıcısı (eski) makalesine bakın.

Desteklenen özellikler

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

Desteklenen özellikler IR
Kopyalama etkinliği (kaynak/havuz) (1) (2)

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

Kaynak/havuz olarak desteklenen veri depolarının listesi için Desteklenen veri depoları tablosuna bakın.

Özellikle, bu MongoDB bağlayıcısı 4.2'ye kadar olan sürümleri destekler. Çalışmanız 4.2'den yeni sürümler gerektiriyorsa, MongoDB Atlas'ı daha kapsamlı destek ve özellikler sağlayan MongoDB Atlas bağlayıcısı ile kullanmayı göz önünde bulundurun.

Önkoşullar

Veri deponuz bir şirket içi ağ, Azure sanal ağı veya Amazon Sanal Özel Bulut içinde bulunuyorsa, şirket içinde barındırılan tümleştirme çalışma zamanını buna bağlanmak için yapılandırmanız gerekir.

Veri deponuz yönetilen bir bulut veri hizmetiyse Azure Integration Runtime'ı kullanabilirsiniz. Erişim, güvenlik duvarı kurallarında onaylanan IP'ler ile sınırlıysa Azure Integration Runtime IP'lerini izin verme listesine ekleyebilirsiniz.

Şirket içinde barındırılan tümleştirme çalışma zamanı yüklemeden ve yapılandırmadan şirket içi ağa erişmek için Azure Data Factory'deki yönetilen sanal ağ tümleştirme çalışma zamanı özelliğini de kullanabilirsiniz.

Data Factory tarafından desteklenen ağ güvenlik mekanizmaları ve seçenekleri hakkında daha fazla bilgi için bkz . Veri erişim stratejileri.

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'ye bağlı hizmet oluşturma

Azure portalı kullanıcı arabiriminde MongoDB'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'yi arayın ve MongoDB bağlayıcısını seçin.

    MongoDB bağlayıcısını seçin.

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

    MongoDB'ye bağlı bir hizmet yapılandırın.

Bağlayıcı yapılandırma ayrıntıları

Aşağıdaki bölümlerde, MongoDB bağlayıcısına özgü Data Factory varlıklarını tanımlamak için kullanılan özelliklerle ilgili ayrıntılar sağlanır.

Bağlı hizmet özellikleri

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

Özellik Açıklama Gerekli
Tür Tür özelliği şu şekilde ayarlanmalıdır: MongoDbV2 Yes
connectionString MongoDB bağlantı dizesi belirtin; örneğin. mongodb://[username:password@]host[:port][/[database][?options]] Daha fazla bilgi için bağlantı dizesi mongoDB kılavuzuna bakın.

Azure Key Vault'a bir bağlantı dizesi de koyabilirsiniz. Diğer ayrıntılarla birlikte Azure Key Vault'ta kimlik bilgilerini depolama bölümüne bakın.
Yes
database Erişmek istediğiniz veritabanının adı. Yes
connectVia Veri deposuna bağlanmak için kullanılacak Integration Runtime. Önkoşullar bölümünden daha fazla bilgi edinin. Belirtilmezse, varsayılan Azure Integration Runtime'ı kullanır. Hayır

Örnek:

{
    "name": "MongoDBLinkedService",
    "properties": {
        "type": "MongoDbV2",
        "typeProperties": {
            "connectionString": "mongodb://[username:password@]host[:port][/[database][?options]]",
            "database": "myDatabase"
        },
        "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 veri kümesi için aşağıdaki özellikler desteklenir:

Özellik Açıklama Gerekli
Tür Veri kümesinin tür özelliği şu şekilde ayarlanmalıdır: MongoDbV2Collection Yes
collectionName MongoDB veritabanındaki koleksiyonun adı. Yes

Örnek:

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

Kopyalama etkinliğinin özellikleri

Etkinlikleri tanımlamak için kullanılabilen bölümlerin ve özelliklerin tam listesi için İşlem hatları makalesine bakın. Bu bölümde MongoDB kaynağı ve havuzu tarafından desteklenen özelliklerin listesi sağlanır.

Kaynak olarak MongoDB

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

Özellik Açıklama Gerekli
Tür Kopyalama etkinliği kaynağının type özelliği şu şekilde ayarlanmalıdır: MongoDbV2Source Yes
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. Hayır
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. Hayır
cursorMethods.sort Sorgunun eşleşen belgeleri döndürme sırasını belirtir. cursor.sort() öğesine bakın. Hayır
cursorMethods.limit Sunucunun döndürdüğü en fazla belge sayısını belirtir. cursor.limit()'e bakın. Hayır
cursorMethods.skip MongoDB'nin sonuçları döndürmeye başladığı ve atlandığı belge sayısını belirtir. cursor.skip() adresine bakın. Hayır
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. Hayır
(varsayılan değer 100'dür)

İpucu

Hizmet, 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": "CopyFromMongoDB",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<MongoDB input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "MongoDbV2Source",
                "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

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

Özellik Açıklama Gerekli
Tür Kopyalama Etkinliği havuzu type özelliği MongoDbV2Sink olarak ayarlanmalıdır. Yes
writeBehavior MongoDB'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.
Hayır
(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. Hayır
(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. Hayır
(varsayılan değer 00:30:00 - 30 dakikadır)

İpucu

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": "CopyToMongoDB",
        "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": "MongoDbV2Sink",
                "writeBehavior": "upsert"
            }
        }
    }
]

JSON belgelerini içeri ve dışarı aktarma

Bu MongoDB bağlayıcısını kullanarak kolayca:

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

Böyle bir şemadan bağımsız kopya elde etmek için veri kümesindeki "yapı" (şema olarak da adlandırılır) bölümünü ve kopyalama etkinliğindeki şema eşlemesini atlayın.

Şema eşleme

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

MongoDB bağlı hizmetini yükseltme

Bağlı hizmetinizi ve ilgili sorgularınızı yükseltmenize yardımcı olan adımlar şunlardır:

  1. Yeni bir MongoDB bağlı hizmeti oluşturun ve Bağlı hizmet özelliklerine bakarak bunu yapılandırın.

  2. İşlem hatlarınızda eski MongoDB bağlı hizmetine başvuran SQL sorguları kullanıyorsanız, bunları eşdeğer MongoDB sorguları ile değiştirin. Değiştirme örnekleri için aşağıdaki tabloya bakın:

    SQL sorgusu Eşdeğer MongoDB sorgusu
    SELECT * FROM users db.users.find({})
    SELECT username, age FROM users db.users.find({}, {username: 1, age: 1})
    SELECT username AS User, age AS Age, statusNumber AS Status, CASE WHEN Status = 0 THEN "Pending" CASE WHEN Status = 1 THEN "Finished" ELSE "Unknown" END AS statusEnum LastUpdatedTime + interval '2' hour AS NewLastUpdatedTime FROM users db.users.aggregate([{ $project: { _id: 0, User: "$username", Age: "$age", Status: "$statusNumber", statusEnum: { $switch: { branches: [ { case: { $eq: ["$Status", 0] }, then: "Pending" }, { case: { $eq: ["$Status", 1] }, then: "Finished" } ], default: "Unknown" } }, NewLastUpdatedTime: { $add: ["$LastUpdatedTime", 2 * 60 * 60 * 1000] } } }])
    SELECT employees.name, departments.name AS department_name FROM employees LEFT JOIN departments ON employees.department_id = departments.id; db.employees.aggregate([ { $lookup: { from: "departments", localField: "department_id", foreignField: "_id", as: "department" } }, { $unwind: "$department" }, { $project: { _id: 0, name: 1, department_name: "$department.name" } } ])

Kopyalama etkinliği tarafından kaynak ve havuz olarak desteklenen veri depolarının listesi için bkz . desteklenen veri depoları.