Yazma Kaygıları ve Onaylanmış Kalıcılık
Öğrenenler, yazma işlemlerinin kalıcılık garantisini ayarlamak için w:majority, w:1 ve günlük kaydı seçeneklerini yapılandıracaklardır.
Yazma Kaygıları ve Onaylanmış Kalıcılık, 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.
Yazma Güvencesi Nedir?
Yazma güvencesi, bir sürücünün yazma işlemini başarılı kabul etmesinden önce kaç çoğaltma kümesi üyesinin yazma işlemini onaylaması gerektiğini MongoDB'ye bildirir. Bu, dayanıklılık (daha fazla onay = daha güvenli) ile gecikme (daha az onay = daha hızlı) arasındaki temel denge ayarıdır. Her yazma işlemi — ekleme, güncelleme, silme veya değiştirme — kendi yazma güvencesini belirtebilir.
w Seçeneği: Onayları Sayma
w alanı, kaç üyenin yazma işlemini onaylaması gerektiğini denetler. w: 0, işlemi onay beklemeden göndermek anlamına gelir. w: 1 (varsayılan), yalnızca birincil üyenin onaylaması gerektiği anlamına gelir. w: 2, birincil üyeye ek olarak bir ikincil üyenin de gerektiği anlamına gelir. w: 'majority', üretimde önerilen ayardır — oy kullanan üyelerin çoğunluğunun onaylamasını bekler.
// w:1 — only primary acknowledges (default)
db.orders.insertOne({ item: 'pen' }, { writeConcern: { w: 1 } })
// w:majority — safe for production
db.orders.insertOne({ item: 'pen' }, { writeConcern: { w: 'majority' } })w: majority — Önerilen Ayar
w: 'majority', sürücü başarılı yanıtı almadan önce yazma işleminin oy kullanan üyelerin çoğunluğuna çoğaltılmasını garanti eder. Böylece yük devretme sonrasında bile yeni seçilen birincil üye yazma işlemini mutlaka görmüş olur. Birincil üye arızasında veri geri alınmasını önleyen tek ayar budur.
// Set default write concern at the database level
db.runCommand({
setDefaultRWConcern: 1,
defaultWriteConcern: { w: 'majority', wtimeout: 5000 }
})j Seçeneği: Günlük Dayanıklılığı
j (günlük) seçeneği, MongoDB'nin onay vermeden önce yazma işleminin disk üzerindeki günlüğe işlenmesini bekleyip beklemeyeceğini denetler. j: true kullanıldığında, onaydan hemen sonra gerçekleşen bir sunucu çökmesi bile yazma işleminin kaybolmasına neden olamaz. Günlükleme olmadan (j: false), bellekteki yazma işlemi ile sonraki günlük temizleme işlemi arasında gerçekleşen bir çökme, işlemin kaybolmasına yol açabilir.
// Fully durable write: majority replication + journaled
db.payments.insertOne(
{ amount: 499.99, currency: 'USD' },
{ writeConcern: { w: 'majority', j: true, wtimeout: 5000 } }
)wtimeout Seçeneği
wtimeout, sunucunun gerekli w onaylarını bekleyeceği en uzun süreyi (milisaniye cinsinden) belirler. Eşik süre içinde karşılanmazsa MongoDB bir WriteConcernError döndürür — ancak yazma işlemi yine de birincil üyede gerçekleşmiştir. Zaman aşımı, yazma işleminin başarısız olduğunu değil, çoğaltma gecikmesini gösterir.
// Timeout after 3 seconds if secondaries are slow
db.logs.insertOne(
{ event: 'login', userId: 'u123' },
{ writeConcern: { w: 'majority', wtimeout: 3000 } }
)w:0 Beklemeden Gönderme: Ne Zaman Kullanılmalı?
w: 0, yazma işlemini gönderir ve hiçbir onay beklemeden hemen döner. Bu, telemetri, analiz olayları veya günlük alımı gibi ara sıra veri kaybının kabul edilebilir olduğu, yüksek hacimli ve veri kaybına toleranslı iş yüklerinde aktarım hızını en üst düzeye çıkarır. Finansal işlemlerde, kullanıcı tarafından oluşturulan içeriklerde veya kaybetmeyi göze alamayacağınız hiçbir veride bunu kullanmayın.
// High-throughput metrics logging — loss acceptable
await db.collection('metrics').insertMany(
readings,
{ writeConcern: { w: 0 } }
)Yazma Güvencesi ve Geri Alma
Birincil üye arızalandığında ve bir ikincil üye birincil olduğunda, eski birincil üyenin henüz çoğunluğa çoğaltmadığı yazma işlemleri geri alınır. Geri alınan bu yazma işlemleri, elle kurtarılabilmeleri için diskteki bir geri alma klasörüne kaydedilir. w: 'majority' kullanmak bu riski ortadan kaldırır; çünkü yazma işlemi ancak çoğunluk ona sahip olduktan sonra onaylanır.
Yazma Güvencesini İşlemlerle Birleştirme
Birden çok belgeli işlemlerde yazma güvencesi, işlem içindeki tek tek işlemlere değil, işleme alma adımına uygulanır. w: 'majority' ile işleme almak, uygulama devam etmeden önce işlemin tüm yazma işlemlerinin çoğunluk üzerinde dayanıklı olmasını sağlar. İşlem içindeki tek tek işlem düzeyindeki yazma güvenceleri yok sayılır.
const session = client.startSession()
await session.withTransaction(async () => {
await orders.insertOne({ item: 'book' }, { session })
await inventory.updateOne({ _id: 1 }, { $inc: { qty: -1 } }, { session })
}, { writeConcern: { w: 'majority' } })MongoDB 5+ Sürümünde Varsayılan Yazma Güvencesi
MongoDB 5.0'dan bu yana, çoğaltma kümeleri ve parçalanmış kümeler için örtük varsayılan yazma güvencesi w: 'majority' değeridir. 5.0'dan önce varsayılan değer w: 1 idi. Bu, modern MongoDB kurulumlarının varsayılan olarak güvenli olduğu anlamına gelir; ancak açıklık ve taşınabilirlik için kritik uygulama kodlarında yazma güvencelerini yine de açıkça ayarlamalısınız.
// Verify the current default write concern
db.adminCommand({ getDefaultRWConcern: 1 })
// { defaultWriteConcern: { w: 'majority' }, ... }İstemci Düzeyinde Yazma Güvencesi
Yazma güvencesi üç düzeyde ayarlanabilir: işlem düzeyi (ekleme/güncelleme başına), koleksiyon düzeyi (bir koleksiyon tutamacı alınırken) veya istemci/bağlantı dizesi düzeyi. Daha özel düzeyler, daha genel olanların üzerine yazılır. İstemci düzeyinde ayarlamak varsayılan olarak tüm işlemlere uygulanırken, işlem düzeyi ayarlar özel dayanıklılık garantileri gerektiren durumlar için daha uygundur.
// Set write concern at MongoClient level
const client = new MongoClient(uri, {
writeConcern: { w: 'majority', j: true, wtimeout: 5000 }
})
// Override per-operation when needed
await db.criticalData.insertOne(doc, { writeConcern: { w: 3 } })Doğru Yazma Güvencesini Seçme
Yazma güvencenizi verilerin önem derecesine göre seçin. Finansal/işlemsel veriler: w: 'majority', j: true. Kullanıcı içeriği: w: 'majority'. Oturum/önbellek verileri: w: 1. Yüksek hacimli telemetri: w: 0. Doğru seçim, veri kaybetmenin maliyeti ile ek onayları beklemenin gecikme maliyetini dengeler.
Hızlı Kontrol
Bu derste ele alınan MongoDB ve NoSQL veritabanları kavramlarını anlayıp anlamadığınızı sınayın.
Ders Özeti
Bu derste şunları öğrendiniz: yazma güvencesindeki w, kaç üyenin bir yazma işlemini onaylaması gerektiğini denetler, w: 'majority', yük devretme sonrasında geri almayı önleyen ve üretimde önerilen ayardır ve j: true, çökmelere karşı güvenlik için disk üzerindeki günlük dayanıklılığını ekler. Sırada okuma tercihlerini ve okuma yükünü çoğaltma kümesine nasıl dağıtacağımızı 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
“Yazma Kaygıları ve Onaylanmış Kalıcılık” dersi ücretsiz mi?
Evet — “Yazma Kaygıları ve Onaylanmış Kalıcılık” 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.
“Yazma Kaygıları ve Onaylanmış Kalıcılık” dersinde ne öğreneceğim?
Öğrenenler, yazma işlemlerinin kalıcılık garantisini ayarlamak için w:majority, w:1 ve günlük kaydı seçeneklerini yapılandıracaklardı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.
“Yazma Kaygıları ve Onaylanmış Kalıcılık” 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
- Çoğaltma Kümesi Üyeleri: Birincil, İkincil, Arabulucu
- Seçimler ve Otomatik Yük Devretme
- Yazma Kaygıları ve Onaylanmış Kalıcılık
- Okuma Tercihleri: Okuma Yükünü Dağıtma