Kaynaklar Arası Toplulaştırma İşlem Hatlarını Çalıştırma
Öğrenenler, Atlas koleksiyonu verilerini S3'te saklanan JSON veya Parquet dosyalarıyla tek bir sorguda birleştiren toplulaştırma işlem hatları yazacaklardır.
Kaynaklar Arası Toplulaştırma İşlem Hatlarını Çalıştırma, CoddyKit'te ücretsiz bir MongoDB Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, MongoDB Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. MongoDB Academy kursu toplamda 4 dersten oluşur.
Kaynaklar Arası İşlem Hatlarını Özel Kılan Nedir?
Atlas Data Federation'daki kaynaklar arası toplama işlem hattı, MongoDB'den bildiğiniz aynı toplama aşamalarını çalıştırır; ancak her aşamadaki veriler farklı fiziksel sistemlerden — bir S3 depolama alanından, canlı bir Atlas kümesinden veya her ikisinden — gelebilir. Federasyon sorgu altyapısı tüm yönlendirme, çoğaltarak gönderme ve sonuç birleştirme işlemlerini şeffaf biçimde yönetir. Uygulamanız açısından bu, tek bir MongoDB koleksiyonu sorgusu gibi görünür.
Basit Kaynaklar Arası Find
En basit kaynaklar arası sorgu, S3 dosyalarıyla desteklenen bir sanal koleksiyonda yapılan find() sorgusudur. Sorgu altyapısı dosyaları okur, ayrıştırır ve filtreyi uygular. Filtreden yol içindeki bölüm öznitelikleriyle eşleşen alanlar, dosyaların otomatik olarak budanmasını sağlar. Bölüm öznitelikleriyle eşleşmeyen alanlar, okuma sonrasında uygulanan filtre olarak değerlendirilir.
// Virtual collection 'events' backed by S3 JSON files
// Path: /data/events/{year int}/{month int}/*.json
// This query prunes to /data/events/2025/1/ only
const jan2025 = await db.collection('events').find({
year: 2025,
month: 1,
eventType: 'purchase' // post-read filter (not a partition attr)
}).toArray()S3 Verilerini Canlı Koleksiyon Gibi Toplama
S3 destekli sanal koleksiyonlarda herhangi bir toplama aşamasını çalıştırabilirsiniz: $match, $group, $project, $sort, $limit. Sorgu altyapısı mümkün olduğunda aşamaları aşağıya iter (özellikle bölüm budama ve Parquet'te sütun budama için $match) ve kalan aşamaları verileri okuduktan sonra kendi hesaplama katmanında yürütür.
// Group S3-archived events by region and count
const summary = await db.collection('events_2024').aggregate([
{ $match: { year: 2024, month: { $in: [10, 11, 12] } } }, // pruning
{ $group: { _id: '$region', total: { $sum: 1 }, revenue: { $sum: '$amount' } } },
{ $sort: { revenue: -1 } },
{ $limit: 10 }
]).toArray()$lookup ile Atlas ve S3'ü Birleştirme
En güçlü kaynaklar arası desen, canlı bir Atlas koleksiyonunu S3'te arşivlenmiş bir koleksiyonla birleştirmek için $lookup kullanmaktır. İşlem hattını canlı koleksiyondan ('sürücü') başlatın ve sanal S3 destekli koleksiyonda arama yapın. Gerçekleştirilen arama sayısını en aza indirmek için her zaman erkenden bir $match yerleştirin.
// Join live customers (Atlas) with archived orders (S3)
const result = await db.collection('customers').aggregate([
{ $match: { tier: 'gold', region: 'EU' } }, // filter live data first
{ $lookup: {
from: 'orders_archive', // virtual S3-backed collection
let: { custId: '$_id' },
pipeline: [
{ $match: { $expr: { $eq: ['$customerId', '$$custId'] } } },
{ $project: { orderId: 1, amount: 1, date: 1 } }
],
as: 'orderHistory'
}},
{ $addFields: { totalSpend: { $sum: '$orderHistory.amount' } } },
{ $sort: { totalSpend: -1 } },
{ $limit: 50 }
]).toArray()Birden Çok Atlas Kümesinde Toplama
Federasyon örneğinizde birden çok Atlas kümesi depolama alanı varsa, farklı Atlas kümelerindeki koleksiyonları tek bir işlem hattında birleştirebilirsiniz. Bu, verilerin ayrı kümeler arasında parçalandığı çok kiracılı veya çok bölgeli dağıtımlar için kullanışlıdır; kümeleri birleştirmeden ya da ayrı bir raporlama veritabanı oluşturmadan kümeler arası raporlara ihtiyaç duyarsınız.
// Virtual collections pointing to different Atlas clusters
// 'orders_us' -> Atlas cluster in US
// 'orders_eu' -> Atlas cluster in EU
// Union results from two clusters
db.orders_us.aggregate([
{ $match: { date: { $gte: ISODate('2025-01-01') } } },
{ $unionWith: {
coll: 'orders_eu',
pipeline: [{ $match: { date: { $gte: ISODate('2025-01-01') } } }]
}},
{ $group: { _id: '$status', count: { $sum: 1 } } }
])$out / $merge ile Sonuçları Atlas'a Yazma
Kaynaklar arası bir toplama çalıştırdıktan sonra sonuçları $out veya $merge kullanarak canlı bir Atlas koleksiyonuna geri yazabilirsiniz. Bu, ETL desenidir: geçmiş verileri S3'ten okuyun, canlı verilerle birleştirin, toplamaları hesaplayın ve sonuçları uygulamaların hızlı ve düşük maliyetle sorgulayabileceği Atlas'taki somutlaştırılmış görünüm koleksiyonuna yazın.
// ETL: aggregate S3 archive + Atlas, write result to Atlas
db.events_2024.aggregate([
{ $match: { year: 2024 } },
{ $group: {
_id: { region: '$region', month: '$month' },
sessions: { $sum: 1 },
revenue: { $sum: '$amount' }
}},
{ $merge: {
into: { db: 'reporting', coll: 'monthly_summary' },
whenMatched: 'replace',
whenNotMatched: 'insert'
}}
])Parquet Sütun Budama: Yalnızca Gerekenleri Okuma
Parquet dosyalarını sorgularken Data Federation, sütun budama uygular: $project aşamanız yalnızca belirli alanları belirtiyorsa sorgu altyapısı Parquet dosyasından (verileri sütun sütun depolar) yalnızca bu sütunları okur. Bu, her sütunu okumaya kıyasla okunan bayt sayısını %90'dan fazla azaltabilir. Sütun budamadan en yüksek faydayı sağlamak için $project aşamanızı işlem hattında mümkün olduğunca erken yerleştirin.
// Column pruning: only reads 'region', 'amount', 'date' columns from Parquet
db.events_2024.aggregate([
{ $project: { region: 1, amount: 1, date: 1, _id: 0 } }, // early project
{ $match: { region: 'EU' } },
{ $group: { _id: '$region', totalRevenue: { $sum: '$amount' } } }
])
// Other columns (userId, sessionId, metadata, etc.) are never read from diskFederasyon Sorgu Performansını İzleme
Atlas Data Federation, sorgu yürütme ayrıntılarını Atlas kullanıcı arayüzündeki Sorgu Geçmişi sekmesine kaydeder. Her sorguda işlenen bayt sayısı, yürütme süresi ve taranan dosya/bölüm sayısı gösterilir. İşlenen bayt sayısının yüksek olması genellikle bölüm özniteliklerinin eksik olduğu veya sorgunun hiçbir bölüm anahtarıyla eşleşmediği anlamına gelir. Depolama yapılandırmanızı ve sorgu düzenlerinizi iyileştirmek için bu günlüğü kullanın.
// Get query stats via the admin DB on the federated instance
db.adminCommand({ currentOp: 1 })
// Shows active federated queries with bytes read, duration
// In Atlas UI: Data Federation > Query History
// Shows past queries, duration, data processed, and cost estimateKaynaklar Arasındaki Şema Farklarını Yönetme
Farklı dönemlerden veya sistemlerden gelen S3 dosyaları farklı şemalara (alan adları, türler ve yapı) sahip olabilir. Data Federation bu durumu sorunsuz biçimde yönetir; eksik alanlar null döndürülür, ek alanlar dahil edilir. Gruplama veya birleştirme öncesinde değişken şemaları standartlaştırmak için işlem hattınızda $ifNull, $cond ve $convert kullanabilirsiniz.
// Normalise schema variations across old and new S3 file formats
db.events.aggregate([
{ $addFields: {
// Old format: 'user_id', New format: 'userId'
userId: { $ifNull: ['$userId', '$user_id'] },
// Old format: string amount, New format: number
amount: { $convert: { input: '$amount', to: 'double', onError: 0 } }
}},
{ $group: { _id: '$userId', total: { $sum: '$amount' } } }
])Federasyon Sorgu Sonuçlarını Önbelleğe Alma
Data Federation, sorgular arasındaki sonuçları önbelleğe almaz; her sorgu temel kaynakları yeniden okur. Aynı raporu tekrarlı olarak çalıştıran panolar için ETL desenini kullanın: sonuçları $merge aracılığıyla bir Atlas koleksiyonuna yazan bir toplama işlemi zamanlayın, ardından panonuzun hızlı Atlas koleksiyonunu sorgulamasını sağlayın. Atlas Tetikleyicileri, bu yenilemeyi herhangi bir cron aralığında zamanlayabilir.
Kaynaklar Arası İşlem Hatlarının Sınırlamaları
Geçerli sınırlamaları dikkate alın: 1) Federasyon örneklerinde işlemler desteklenmez. 2) Dizin kullanımı yalnızca Atlas destekli koleksiyonlar için geçerlidir; S3 dosyaları için geçerli değildir. 3) Çok büyük sonuç kümelerinde zaman aşımı oluşabilir; sonuçları akış olarak geri göndermek yerine yazmak için $out/$merge kullanın. 4) S3 G/Ç işlemleri nedeniyle gecikme canlı Atlas sorgusundan daha yüksektir; bu nedenle kullanıcıya sunulan gerçek zamanlı sorgular için uygun değildir.
Hızlı Kontrol
Bu dersteki MongoDB ve NoSQL Veritabanları kavramlarını anlayıp anlamadığınızı sınayın.
Ders Özeti
Bu derste şunları öğrendiniz: kaynaklar arası toplama işlem hatları, S3 veya Atlas kümeleriyle desteklenen sanal koleksiyonlarda aynı MongoDB aşamalarını kullanır; $lookup, canlı Atlas verilerinin S3 arşivleriyle tek bir işlem hattında birleştirilmesini sağlar ve erken kullanılan $project, Parquet dosyalarında sütun budamayı etkinleştirerek taranan bayt sayısını büyük ölçüde azaltır. Sırada, sorgu performansı için S3 verilerinin bölümlenmesini inceleyeceğiz.
Yapay zeka eğitmeniyle JavaScript öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 30
- Dersler
- 120
Sıkça Sorulan Sorular
“Kaynaklar Arası Toplulaştırma İşlem Hatlarını Çalıştırma” dersi ücretsiz mi?
Evet — “Kaynaklar Arası Toplulaştırma İşlem Hatlarını Çalıştırma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve MongoDB Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. MongoDB Academy kursu toplamda 4 dersten oluşur.
“Kaynaklar Arası Toplulaştırma İşlem Hatlarını Çalıştırma” dersinde ne öğreneceğim?
Öğrenenler, Atlas koleksiyonu verilerini S3'te saklanan JSON veya Parquet dosyalarıyla tek bir sorguda birleştiren toplulaştırma işlem hatları yazacaklardır. MongoDB Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
MongoDB Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te MongoDB Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Kaynaklar Arası Toplulaştırma İşlem Hatlarını Çalıştırma” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu MongoDB Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her MongoDB Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Atlas Data Federation Nedir?
- S3 ve Atlas Kaynaklarını Sanal Ad Alanına Eşleme
- Kaynaklar Arası Toplulaştırma İşlem Hatlarını Çalıştırma
- Sorgu Performansı İçin S3 Verilerini Bölümleme