MongoDB Transactions ve ACID Desteği Nedir?


MongoDB Transactions ve ACID Desteği Nedir?

MongoDB Transactions ve ACID desteği, günümüz yazılım projelerinde veri bütünlüğünün ve güvenliğinin sağlanmasında anahtar rol oynayan bir konudur. Geleneksel olarak NoSQL veri tabanları performans ve esneklik ön planda tutularak geliştirilmiş olsa da, kurumsal uygulamalarda sıklıkla karşılaşılan çoklu işlem gereksinimleri nedeniyle MongoDB transactions önemli hale gelmiştir. Özellikle bankacılık ve e-ticaret gibi kritik alanlarda, birden fazla veri koleksiyonunda yapılan işlemlerin tam tutarlılık içinde gerçekleşmesi gerekmektedir.

MongoDB Transactions Nedir?

MongoDB önceden yalnızca tek doküman üzerinde atomik işlemler desteklerken, versiyon 4.0 ile birlikte çoklu dokümanı kapsayan (multi-document) transactions desteği sunmaya başladı. Transactions kavramı, bir grup veritabanı işleminin ya tamamen başarıyla işlemesi ya da hiçbiri uygulanmadan iptal edilmesini sağlar. Bu sayede, birbirine bağımlı işlemlerin her aşamasında veri tutarlılığı korunur ve geri alınabilirlik (rollback) mümkün olur.

MongoDB'de Multi-Document Transaction Kullanımı

Aşağıda basit bir Node.js örneği ile MongoDB transactions kullanımını görebilirsiniz:

const { MongoClient } = require("mongodb");

async function runTransaction() {
  const client = new MongoClient("mongodb://localhost:27017");
  await client.connect();
  const session = client.startSession();
  const db = client.db("testdb");

  try {
    session.startTransaction();
    await db.collection("kullanici").insertOne({ isim: "Ali" }, { session });
    await db.collection("bakiye").updateOne(
      { userId: 1 },
      { $inc: { miktar: -100 } },
      { session }
    );
    await session.commitTransaction();
    console.log("Transaction başarıyla tamamlandı.");
  } catch (e) {
    await session.abortTransaction();
    console.error("Transaction başarısız oldu:", e);
  } finally {
    await session.endSession();
    await client.close();
  }
}

runTransaction();

ACID Kriterleri ve MongoDB

ACID, veritabanı işlemlerinde güvenlik ve tutarlılığın sağlandığını garanti eden bir dizi özelliktir:

  • Atomicity (Atomiklik): İşlemler bölünemez bütünler olarak çalışır. Transaction içinde yer alan işlemlerden biri başarısız olursa, tüm işlemler geri alınır.
  • Consistency (Tutarlılık): Veri tabanı, transaction'lar sonrasında da tutarlı kalır.
  • Isolation (Yalıtım): Eş zamanlı işlemler birbirini etkilemez; her işlem kendi başına bağımsız olarak çalışır.
  • Durability (Kalıcılık): Başarılı şekilde tamamlanan işlemler kalıcı olarak saklanır ve sistem arızalarında bile kaybolmaz.

MongoDB 4.0 ve sonrası, gerektiğinde multi-document transactions yoluyla tam ACID uyumluluğu sunar. Standart işlemler her zaman ACID koşullarına ihtiyaç duymasa da, kritik uygulamalarda transactions desteği veri bütünlüğü için vazgeçilmezdir.

Sonuç: Ne Zaman Transactions Kullanmalı?

MongoDB Transactions ve ACID desteği sayesinde artık NoSQL projelerde de güvenilir ve tutarlı işlemler gerçekleştirmek mümkündür. Ancak yüksek performans gerektiren, tek doküman odaklı uygulamalarda transactions yerine atomik işlemler tercih edilmelidir. Eğer çoklu koleksiyonda bütünlüğün şart olduğu bir senaryoda çalışıyorsanız, MongoDB transactions ve ACID kriterlerinin sağladığı avantajlardan mutlaka yararlanın.