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:
- Veri Kopyalama aracı
- Azure portal
- .NET SDK'sı
- Python SDK'sı
- Azure PowerShell
- The REST API
- Azure Resource Manager şablonu
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.
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:
MongoDB'yi arayın ve MongoDB bağlayıcısını seçin.
Hizmet ayrıntılarını yapılandırın, bağlantıyı test edin ve yeni bağlı hizmeti oluşturun.
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:
Yeni bir MongoDB bağlı hizmeti oluşturun ve Bağlı hizmet özelliklerine bakarak bunu yapılandırın.
İş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" } } ])
İlgili içerik
Kopyalama etkinliği tarafından kaynak ve havuz olarak desteklenen veri depolarının listesi için bkz . desteklenen veri depoları.