Mongoose Transactions ve ACID Desteği Hakkında Bilmeniz Gerekenler


Mongoose Transactions ve ACID Desteği Hakkında Bilmeniz Gerekenler

Mongoose, MongoDB ile çalışan en popüler Node.js kütüphanelerinden biridir. Özellikle büyük ölçekli uygulamalarda veri bütünlüğü sağlamak için Mongoose Transactions ve ACID desteği önemli bir yer tutar. Bu makalede, Mongoose üzerinden transaction yönetiminin ne olduğu ve ACID kavramının MongoDB ile ilişkisi hakkında detaylı bilgi bulabilirsiniz.

Mongoose Transaction Kavramı ve Kullanımı

MongoDB, 4.0 sürümüyle birlikte çoklu döküman işlemlerine (multi-document transaction) tam destek sağlamaya başladı. Mongoose ise session özelliğini kullanarak transaction yönetimini kolaylaştırır. Böylece birden fazla koleksiyonda yaptığınız işlemler ya tamamen gerçekleşir ya da tamamen iptal edilir. Bu özellik, finansal işlemler gibi yüksek güvenlik gerektiren durumlarda oldukça kritiktir.

Mongoose ile Transaction Kod Örneği

const mongoose = require("mongoose");

async function runTransaction() {
  const session = await mongoose.startSession();
  session.startTransaction();
  try {
    await User.create([{ name: "Ali" }], { session });
    await Account.updateOne(
      { user: "Ali" },
      { $inc: { balance: -100 } },
      { session }
    );
    await session.commitTransaction();
    console.log("Transaction başarıyla tamamlandı.");
  } catch (error) {
    await session.abortTransaction();
    console.error("Transaction hata ile iptal edildi:", error);
  } finally {
    session.endSession();
  }
}

Yukarıdaki örnekte iki farklı koleksiyonda yapılan işlemler tek bir transaction içinde yürütülür. Eğer ikinci adımda bir hata oluşursa, ilk işlem de geri alınır. Böylece veri tutarlılığı korunur.

ACID Özellikleri ve MongoDB Desteği

ACID, Atomicity, Consistency, Isolation ve Durability kavramlarının kısaltmasıdır. Bu kavramlar, veritabanlarında yapılan işlemlerin güvenilirlikle gerçekleşmesini sağlar. Mongoose Transactions ve ACID desteği sayesinde MongoDB artık ACID compliant (uyumlu) işlemler gerçekleştirebilmektedir. Özellikle çoklu döküman işlemlerinde atomicity ve consistency büyük avantajlar sunar.

ACID Terimleri Açıklamaları

  • Atomicity: İşlemler ya tamamen yapılır ya da hiç yapılmaz.
  • Consistency: Veri bütünlüğü korunur, geçerli durumlar arasında geçiş olur.
  • Isolation: Paralel işlemler birbirini etkilemez.
  • Durability: İşlem tamamlandığında veriler kalıcı olarak saklanır.

Sonuç

Mongoose Transactions ve ACID desteği, modern Node.js projelerinde veri güvenliğini ve tutarlılığını artırmak için olmazsa olmazlardandır. Eğer yüksek güvenlik gerektiren finansal veya hassas veri işlemleri yapıyorsanız, transaction kullanmak ve ACID uyumluluğundan yararlanmak büyük avantaj sağlar. Mongoose ile transaction başlatma ve yönetme konusunda yukarıdaki kod örneğini kendi projelerinizde kolaylıkla uygulayabilirsiniz.