Transactions এবং ACID Properties

Database Tutorials - ডকুমেন্ট ডিবি (DocumentDB)
321
321

Transactions এবং ACID properties ডেটাবেস ম্যানেজমেন্ট সিস্টেম (DBMS) এর গুরুত্বপূর্ণ ধারণা। Transactions একাধিক ডেটাবেস অপারেশনের একটি গ্রুপ যা একত্রে কার্যকরী হতে হবে, এবং ACID হলো এমন একটি প্রোপার্টি সেট যা ডেটাবেসের ট্রানজাকশনগুলির বিশ্বস্ততা এবং নির্ভরযোগ্যতা নিশ্চিত করে।


Transactions কী?

Transaction হলো একাধিক ডেটাবেস অপারেশনের একটি ইউনিট যা একত্রে সম্পন্ন হতে হবে। একটি ট্রানজাকশন হতে পারে:

  • ইনসার্ট (Insert): নতুন ডেটা যুক্ত করা।
  • আপডেট (Update): পূর্বে বিদ্যমান ডেটা পরিবর্তন করা।
  • ডিলিট (Delete): ডেটা মুছে ফেলা।

ট্রানজেকশন সাধারণত একত্রে কয়েকটি অপারেশন সম্পাদন করে এবং সফলভাবে সম্পন্ন হলে commit করা হয়, অন্যথায় rollback করা হয়। উদাহরণস্বরূপ, একটি ব্যাংক ট্রানজেকশন হতে পারে যেখানে এক অ্যাকাউন্ট থেকে টাকা স্থানান্তর করা হয় অন্য অ্যাকাউন্টে। এখানে দুটি অপারেশন ঘটবে - প্রথমে টাকা কাটা এবং দ্বিতীয়ত, টাকা জমা। এই দুটি অপারেশন একত্রে সফল হতে হবে, অথবা যদি কোন একটি অপারেশন ব্যর্থ হয়, তাহলে উভয়ই বাতিল হতে হবে।


ACID Properties কী?

ACID একটি অক্ষর যা Atomicity, Consistency, Isolation, এবং Durability এর সংক্ষেপ। এই চারটি প্রোপার্টি একটি ট্রানজেকশনের নির্ভরযোগ্যতা এবং নিরাপত্তা নিশ্চিত করতে সাহায্য করে।

১. Atomicity (পারফেক্ট একতা)

  • Atomicity নিশ্চিত করে যে একটি ট্রানজেকশনটি পুরোপুরি সফল বা পুরোপুরি ব্যর্থ হবে। অর্থাৎ, ট্রানজেকশনের মধ্যে সমস্ত অপারেশন একত্রে সম্পন্ন হবে, অথবা কোন একটি অপারেশন ব্যর্থ হলে সমস্ত অপারেশন বাতিল হবে।
  • উদাহরণ: যদি একটি ব্যাংক অ্যাকাউন্ট থেকে টাকা স্থানান্তর করার সময় প্রথম অপারেশন সফল হয় (টাকা কাটা), কিন্তু দ্বিতীয় অপারেশন ব্যর্থ হয় (টাকা জমা না হওয়া), তাহলে প্রথম অপারেশনটি rollback হয়ে যাবে এবং কোনও টাকা স্থানান্তরিত হবে না।

২. Consistency (সামঞ্জস্য)

  • Consistency নিশ্চিত করে যে ট্রানজেকশনটি DB-এর সর্বশেষ অবস্থা এবং নির্দিষ্ট বিধি বা কনস্ট্রেইন্টে থাকবে। ট্রানজেকশন শুরু হওয়ার আগে এবং পরে ডেটাবেসের অবস্থা ভ্যালিড থাকতে হবে।
  • উদাহরণ: যদি একটি ডেটাবেসে ব্যালেন্সের জন্য একটি কনস্ট্রেইন্ট থাকে (যেমন, কোনো অ্যাকাউন্টের ব্যালেন্স কখনই ঋণাত্মক হতে পারে না), তবে ট্রানজেকশনটি এই কনস্ট্রেইন্ট অনুসরণ করবে।

৩. Isolation (বিচ্ছিন্নতা)

  • Isolation নিশ্চিত করে যে একাধিক ট্রানজেকশন একে অপরকে প্রভাবিত না করে একে অপরের সাথে সিঙ্ক্রোনাইজডভাবে চলে। অর্থাৎ, একটি ট্রানজেকশন অন্য ট্রানজেকশনের মধ্যে কোনো পরিবর্তন দেখা যাবে না যতক্ষণ না এটি সম্পূর্ণভাবে কমিট হয়।
  • উদাহরণ: দুটি পৃথক ট্রানজেকশন একে অপরের ডেটা পরিবর্তন করার জন্য একই সময়ে সম্পাদিত হলে, isolation এটি নিশ্চিত করবে যে প্রথম ট্রানজেকশনটি শেষ না হওয়া পর্যন্ত দ্বিতীয়টি সম্পন্ন হবে না।

৪. Durability (স্থায়ীত্ব)

  • Durability নিশ্চিত করে যে একবার একটি ট্রানজেকশন সফলভাবে সম্পন্ন হলে, তার ফলাফল চিরকালীনভাবে সিস্টেমে সংরক্ষিত থাকবে, এমনকি সিস্টেম ক্র্যাশ বা পাওয়ার ফেইলিউরেও।
  • উদাহরণ: একটি ব্যাংক অ্যাকাউন্টে টাকা জমা দেওয়া হয়েছে এবং সিস্টেমে একটি পাওয়ার ফেইল হয়ে গেছে, তাহলে জমা করা টাকা হারাবে না এবং আবার ট্রানজেকশন শুরু করতে হবে না।

Transactions এবং ACID Properties এর বাস্তব উদাহরণ

ধরা যাক, একটি অনলাইন শপিং সিস্টেমে একটি পণ্য কেনা হচ্ছে:

  1. Atomicity: একজন গ্রাহক একটি পণ্য কেনার সময় দুইটি অপারেশন হবে: একে পণ্যের স্টক থেকে সরিয়ে রাখা এবং অন্যটি গ্রাহকের অ্যাকাউন্ট থেকে টাকা কাটা। যদি টাকা কাটা হয় কিন্তু পণ্য স্টক থেকে সরানো না হয়, তাহলে পুরো ট্রানজেকশনটি বাতিল হবে। একইভাবে, যদি পণ্য স্টক থেকে সরানো হয় কিন্তু টাকা কাটা না হয়, তাহলে ট্রানজেকশন বাতিল হবে।
  2. Consistency: পুরো ট্রানজেকশন চলাকালীন ডেটাবেস সব সময় বৈধ থাকবে। যদি গ্রাহকের অ্যাকাউন্টে পর্যাপ্ত টাকা না থাকে, তবে টাকা কাটা হবে না, এবং সেই সাথে সিস্টেমে কোন অসঙ্গতি সৃষ্টি হবে না।
  3. Isolation: একই সময়ে একাধিক গ্রাহক একটি পণ্য কেনার চেষ্টা করতে পারে, তবে isolation সিস্টেমটি নিশ্চিত করবে যে এক গ্রাহক অন্য গ্রাহকের ট্রানজেকশনের প্রভাব দেখবে না যতক্ষণ না ট্রানজেকশনটি সম্পূর্ণ হয়।
  4. Durability: একবার গ্রাহকের টাকা কাটা হলে, সিস্টেমে এটি স্থায়ীভাবে সংরক্ষিত থাকবে এবং কোনো ধরনের পাওয়ার ফেইল বা সিস্টেম ক্র্যাশের পরও ডেটা হারাবে না।

সারাংশ

Transactions হল ডেটাবেস অপারেশনের একটি ইউনিট যা একত্রে সম্পন্ন হতে হবে। ACID properties হল একটি ট্রানজেকশনের চারটি মৌলিক গুণাবলী যা নিশ্চিত করে যে ডেটাবেস অপারেশনগুলি নির্ভরযোগ্য, সুরক্ষিত এবং সঠিকভাবে কাজ করবে। ACID properties ডেটাবেসের স্থায়িত্ব, সঠিকতা এবং নিরাপত্তা বজায় রাখতে গুরুত্বপূর্ণ ভূমিকা পালন করে।

common.content_added_by

ACID Properties এর ধারণা

217
217

ACID (Atomicity, Consistency, Isolation, Durability) হলো একটি ডেটাবেস ট্রানজেকশনের বৈশিষ্ট্য যা ডেটাবেস সিস্টেমে ডেটা প্রসেসিংকে নির্ভরযোগ্য, সুরক্ষিত এবং সঠিক করতে সাহায্য করে। যখন একটি ট্রানজেকশন কোনো ডেটাবেসে সম্পন্ন হয়, তখন ACID বৈশিষ্ট্যগুলি নিশ্চিত করে যে ডেটাবেসে কোনো অসঙ্গতি বা সমস্যা সৃষ্টি হবে না।

এখানে প্রতিটি বৈশিষ্ট্যের বিস্তারিত ব্যাখ্যা দেওয়া হলো:


1. Atomicity (পারমাণবিকতা)

Atomicity নিশ্চিত করে যে একটি ট্রানজেকশনের সব অপারেশন একসাথে সম্পন্ন হবে অথবা একটিও সম্পন্ন হবে না। অর্থাৎ, একটি ট্রানজেকশনের মধ্যে থাকা সকল কাজগুলো একত্রে সম্পন্ন হয়, অন্যথায় কোনো কিছুই সম্পন্ন হয় না। যদি কোনো সমস্যা বা ত্রুটি ঘটে, তবে পুরো ট্রানজেকশন ব্যর্থ হয়ে যায় এবং ডেটাবেস পূর্বের অবস্থায় ফিরে আসে।

উদাহরণ: ধরা যাক, আপনি একটি ব্যাংক অ্যাকাউন্টে টাকা স্থানান্তর করছেন। যদি টাকা পাঠানোর জন্য দুটি পদক্ষেপ থাকে—একটি অ্যাকাউন্ট থেকে টাকা কাটা এবং অপরটি অন্য অ্যাকাউন্টে টাকা জমা করা—তাহলে যদি প্রথম পদক্ষেপ সফল হয় এবং দ্বিতীয়টি ব্যর্থ হয়, তাহলে অ্যাকাউন্ট থেকে কাটা টাকা পুনরুদ্ধার করা হবে, যাতে কোনো টাকা না কাটা যায় এবং স্থানান্তরটি সম্পূর্ণ হয় না। এটি Atomicity নিশ্চিত করে।


2. Consistency (সঙ্গতি)

Consistency নিশ্চিত করে যে একটি ট্রানজেকশনের শেষে ডেটাবেস সবসময় একটি সঠিক এবং বৈধ অবস্থায় থাকবে। ট্রানজেকশন শুরু হওয়ার আগে এবং পরের মধ্যে ডেটাবেসের সমস্ত নিয়ম এবং শর্ত পূর্ণ হতে হবে। অর্থাৎ, কোনো ট্রানজেকশন ডেটাবেসে কোনো অসঙ্গতি তৈরি করবে না।

উদাহরণ: ধরা যাক, একটি ব্যাংক অ্যাকাউন্টে সর্বনিম্ন ব্যালেন্সের একটি সীমা রয়েছে। যদি একটি ট্রানজেকশন এমনভাবে সম্পন্ন হয় যে অ্যাকাউন্টের ব্যালেন্স সেই সীমা থেকে কমে যায়, তবে Consistency বাধাপ্রাপ্ত হবে। এই ধরনের একটি ট্রানজেকশন সঠিকভাবে সম্পন্ন হবে না এবং ব্যালেন্স সীমা অতিক্রম করতে পারবে না।


3. Isolation (স্বতন্ত্রতা)

Isolation নিশ্চিত করে যে একাধিক ট্রানজেকশন একে অপরের সাথে হস্তক্ষেপ না করে কাজ করতে পারে। যখন একাধিক ট্রানজেকশন সমান্তরালভাবে চলছে, তাদের একে অপরের কার্যকলাপে কোনো প্রভাব ফেলবে না। প্রতিটি ট্রানজেকশন এমনভাবে কার্যকর হবে যে এটি অন্যান্য চলমান ট্রানজেকশনের কাছ থেকে বিচ্ছিন্ন থাকবে।

উদাহরণ: ধরা যাক, দুটি ব্যবহারকারী একসাথে দুটি পৃথক অ্যাকাউন্টে টাকা স্থানান্তর করছে। Isolation নিশ্চিত করে যে একটি ট্রানজেকশন অন্যটির ফলাফলে হস্তক্ষেপ করবে না এবং ডেটা সঠিক থাকবে। একটি ট্রানজেকশন চলাকালীন অন্য ট্রানজেকশন ডেটাবেসে পরিবর্তন করতে পারবে না।


4. Durability (স্থায়িত্ব)

Durability নিশ্চিত করে যে, একবার একটি ট্রানজেকশন সফলভাবে সম্পন্ন হলে, তার পরিবর্তন ডেটাবেসে স্থায়ীভাবে সংরক্ষিত হবে। কোনো সিস্টেম ক্র্যাশ বা পাওয়ার লসের কারণে এসব পরিবর্তন হারিয়ে যাবে না। ডেটাবেসের ডেটা হারানো বা নষ্ট হওয়ার কোনো সম্ভাবনা থাকবে না।

উদাহরণ: যদি আপনি একটি ব্যাংক অ্যাকাউন্টে টাকা জমা দেন এবং সিস্টেমের মধ্যে কোনো ত্রুটি বা পাওয়ার কেটে যায়, তাহলে Durability নিশ্চিত করে যে আপনার জমা করা টাকা হারাবে না। এটি সিস্টেম পুনরায় চালু হওয়ার পরও আপনার ট্রানজেকশনের ফলাফল একই থাকবে।


সারাংশ

ACID গুণাবলী ডেটাবেস সিস্টেমে ট্রানজেকশনের সঠিকতা, সুরক্ষা এবং নির্ভরযোগ্যতা নিশ্চিত করতে অত্যন্ত গুরুত্বপূর্ণ। যখন একটি ট্রানজেকশন ACID বৈশিষ্ট্যগুলি মেনে চলে:

  • Atomicity নিশ্চিত করে যে বা পুরো ট্রানজেকশন সফল হবে, না হয় কিছুই হবে না।
  • Consistency ডেটাবেসের আইন এবং শর্ত পূর্ণ রাখতে সাহায্য করে।
  • Isolation নিশ্চিত করে যে একাধিক ট্রানজেকশন একে অপরকে প্রভাবিত না করে কাজ করবে।
  • Durability নিশ্চিত করে যে একটি ট্রানজেকশন সফলভাবে সম্পন্ন হলে, তার পরিবর্তন স্থায়ী হবে এবং হারাবে না।

এভাবে ACID বৈশিষ্ট্যগুলো ডেটাবেসের সঠিকতা এবং নির্ভরযোগ্যতা বজায় রাখে, যা সমস্ত ডেটা পরিচালনার জন্য অপরিহার্য।

common.content_added_by

Multi-Document Transactions

207
207

Multi-Document Transactions হল একটি ডেটাবেস ট্রানজাকশন প্রক্রিয়া, যেখানে একাধিক ডকুমেন্ট বা রেকর্ডের উপর একযোগে পরিবর্তন করা হয়। এটি ডেটাবেসে একাধিক রেকর্ড বা ডকুমেন্ট আপডেট, ইনসার্ট বা ডিলিট করার সময় একে অপরের ওপর নির্ভরশীল থাকে এবং সমস্ত পরিবর্তন একত্রে সফলভাবে প্রয়োগ করা হয় অথবা পুরো ট্রানজাকশনটি ব্যর্থ হয়ে যায়। অর্থাৎ, ট্রানজাকশনটি ACID প্রপার্টি (Atomicity, Consistency, Isolation, Durability) অনুসরণ করে, যাতে ডেটাবেসের কনসিস্টেন্সি এবং সঠিকতা বজায় থাকে।


Multi-Document Transactions এর সুবিধা

১. Atomicity (পারফেক্ট একত্রিতকরণ)

  • Atomicity মানে যে, একাধিক ডকুমেন্টের উপর যেকোনো পরিবর্তন সম্পূর্ণভাবে সফল হতে হবে বা একেবারে ব্যর্থ হতে হবে। যদি কোনো কারণে একটিরও পরিবর্তন সফল না হয়, তাহলে পুরো ট্রানজাকশন ব্যর্থ হয়ে যাবে এবং ডেটাবেসের আগের অবস্থা ফিরে যাবে।

২. Consistency (সঙ্গতি)

  • Consistency নিশ্চিত করে যে, ট্রানজাকশনের শেষে ডেটাবেস একটি সঙ্গত অবস্থায় থাকবে। অর্থাৎ, সকল পরিবর্তন এবং আপডেট ডেটাবেসের নিয়ম এবং শর্তাবলী মেনে হবে।

৩. Isolation (বিচ্ছিন্নতা)

  • Isolation মানে হল যে, একটি ট্রানজাকশনের পরিবর্তন অন্য কোনো ট্রানজাকশনের পরিবর্তনের সঙ্গে মিশবে না। একে অপরের পরিবর্তনের উপর কোনো প্রভাব ফেলবে না, যতক্ষণ না একটি ট্রানজাকশন সম্পূর্ণ হয়।

৪. Durability (স্থায়িত্ব)

  • Durability নিশ্চিত করে যে, ট্রানজাকশন সম্পন্ন হলে, তার পরিবর্তনগুলি স্থায়ীভাবে ডেটাবেসে সঞ্চিত থাকবে এবং সিস্টেম ক্র্যাশ বা অন্যান্য সমস্যা সত্ত্বেও হারিয়ে যাবে না।

Multi-Document Transactions কিভাবে কাজ করে?

ধরা যাক, আপনি একটি ডেটাবেসে দুইটি ডকুমেন্ট আপডেট করতে চান:

  • প্রথমে আপনি একটি ডকুমেন্টে কিছু পরিবর্তন করবেন।
  • তারপর দ্বিতীয় ডকুমেন্টে কিছু পরিবর্তন করবেন।

এই দুইটি অপারেশন যদি একই সময়ে একযোগে সম্পন্ন হয়, তবে Multi-Document Transactions নিশ্চিত করবে যে, যদি একটি অপারেশন ব্যর্থ হয়, তবে অন্যটি ফেইল করবে না এবং কোনো ডেটা কনসিস্টেন্সি ক্ষতিগ্রস্ত হবে না। যদি একটি ট্রানজাকশন সফল হয়, তবে অন্যটি যথাযথভাবে আপডেট হবে। এবং যদি কোন কারণে একটি অপারেশন ব্যর্থ হয়, তখন সবকিছু আগের অবস্থায় ফিরে আসবে (rollback)।

উদাহরণ:

ধরা যাক, একটি অ্যাকাউন্টের ব্যালেন্স আপডেট করতে হবে:

  1. আপনি Account A-এ টাকা যোগ করতে চান।
  2. পাশাপাশি, Account B থেকে টাকা বিয়োগ করতে চান।

এই দুটি অপারেশন যদি একসাথে সম্পন্ন না হয়, তবে এর ফলে ডেটাবেসে অস্বাভাবিক অবস্থা তৈরি হতে পারে (যেমন, একটি অ্যাকাউন্টে টাকা বৃদ্ধি পাবে কিন্তু অন্য অ্যাকাউন্টে কমে যাবে)। Multi-Document Transaction এই পরিবর্তন দুটি একসাথে করতে সাহায্য করবে, এবং যদি একটি অপারেশন ব্যর্থ হয়, তবে পুরো প্রক্রিয়া রোলব্যাক (rollback) হয়ে যাবে, যাতে ডেটাবেসের সঙ্গতি বজায় থাকে।


MongoDB এবং DocumentDB তে Multi-Document Transactions

MongoDB এবং DocumentDB উভয়ই Multi-Document Transactions সমর্থন করে, তবে এই ট্রানজাকশনগুলি ব্যবহারের সময় কিছু সীমাবদ্ধতা থাকতে পারে।

MongoDB:

MongoDB 4.0 সংস্করণ থেকে Multi-Document Transactions সমর্থন শুরু হয়েছে। MongoDB-তে একটি ট্রানজাকশন শুরু করার জন্য আপনি startSession এবং withTransaction ব্যবহার করতে পারেন:

const session = client.startSession();
session.startTransaction();

try {
    // Document A-তে পরিবর্তন
    db.collection('accounts').updateOne({ _id: accountA }, { $inc: { balance: 100 } }, { session });
    
    // Document B-তে পরিবর্তন
    db.collection('accounts').updateOne({ _id: accountB }, { $inc: { balance: -100 } }, { session });

    // যদি সবকিছু ঠিক থাকে, ট্রানজাকশন কমিট করুন
    session.commitTransaction();
} catch (error) {
    // কোন সমস্যা হলে, ট্রানজাকশন রোলব্যাক করুন
    session.abortTransaction();
} finally {
    session.endSession();
}

DocumentDB:

DocumentDB-তে MongoDB API সমর্থন করা হয়, তাই MongoDB-এর মতোই Multi-Document Transactions ব্যবহৃত হতে পারে, তবে এটি আরও কিছু সীমাবদ্ধতার মধ্যে পড়তে পারে, যেমন শুধুমাত্র কিছু নির্দিষ্ট MongoDB ভার্সনে এই ফিচারটি কাজ করে।


সারাংশ

Multi-Document Transactions একটি শক্তিশালী ফিচার যা একাধিক ডকুমেন্টের উপর একযোগে পরিবর্তন করতে ব্যবহৃত হয়, এবং এটি ডেটাবেসের ACID properties বজায় রাখতে সাহায্য করে। এটি ডেটাবেসে Atomicity, Consistency, Isolation, এবং Durability নিশ্চিত করে, যাতে একাধিক ডকুমেন্টের পরিবর্তন একযোগে সফল বা ব্যর্থ হয় এবং ডেটা সঠিক ও নিরাপদ থাকে। MongoDB এবং DocumentDB-তে এই ফিচারটি ব্যবহৃত হয় এবং তা নিশ্চিত করে যে ডেটাবেসের সঙ্গতি এবং সুরক্ষা বজায় থাকবে।

common.content_added_by

ট্রানজাকশন কনফিগারেশন এবং ব্যবস্থাপনা

179
179

Amazon DocumentDB (MongoDB-সংক্রান্ত ডেটাবেস) MongoDB-তে বিদ্যমান ACID (Atomicity, Consistency, Isolation, Durability) ট্রানজাকশন সমর্থন করে না, তবে কিছু সীমিত Multi-Document Transaction সমর্থন করে যা MongoDB 4.0 থেকে শুরু হয়। MongoDB এবং DocumentDB-এর মধ্যে প্রধান পার্থক্য হল যে, MongoDB সম্পূর্ণ ACID ট্রানজাকশন সমর্থন করে, যেখানে DocumentDB multi-document transactions সমর্থন করে কিন্তু তা শুধুমাত্র নির্দিষ্ট সীমাবদ্ধতায় কাজ করে।

এখানে আমরা DocumentDB এর ট্রানজাকশন কনফিগারেশন এবং ব্যবস্থাপনা নিয়ে বিস্তারিত আলোচনা করব।


1. Multi-Document Transactions

DocumentDB Multi-Document Transactions সমর্থন করে যা একাধিক ডকুমেন্টকে একসাথে আপডেট বা পরিবর্তন করতে সক্ষম। তবে, এর সীমাবদ্ধতা রয়েছে, যেমন:

  • এটি শুধুমাত্র একটি ক্লাস্টারের মধ্যে কাজ করে, অর্থাৎ cross-cluster transactions সমর্থিত নয়।
  • ট্রানজাকশন শুধুমাত্র write operations (লিখন) সম্পাদন করতে ব্যবহৃত হয় এবং read operations সাপোর্ট করে না।

উদাহরণ:

একটি ট্রানজাকশন তৈরি করা:

const session = client.startSession();

session.startTransaction();

try {
  // একাধিক ডকুমেন্ট আপডেট করা
  const collection = db.collection('products');

  // পণ্যের মূল্য আপডেট করা
  await collection.updateOne(
    { product_id: "12345" },
    { $set: { price: 19.99 } },
    { session }
  );

  // স্টক আপডেট করা
  await collection.updateOne(
    { product_id: "12345" },
    { $set: { stock: 150 } },
    { session }
  );

  // ট্রানজাকশন কমিট করা
  await session.commitTransaction();
} catch (error) {
  // যদি কোনো ত্রুটি ঘটে, ট্রানজাকশন রোলব্যাক করা হবে
  await session.abortTransaction();
} finally {
  session.endSession();
}

এখানে startSession() একটি নতুন ট্রানজাকশন শুরু করবে এবং commitTransaction() এবং abortTransaction() ব্যবহার করে ট্রানজাকশন সফল বা ব্যর্থ হওয়ার পরে যথাযথভাবে তা সম্পন্ন বা রোলব্যাক করা হবে।


2. ট্রানজাকশন কনফিগারেশন

DocumentDB-তে ট্রানজাকশন ব্যবহারের জন্য কিছু নির্দিষ্ট কনফিগারেশন সেটআপের প্রয়োজন হয়:

  • Session Management: ট্রানজাকশন শুরু করার জন্য আপনাকে সেশন ম্যানেজ করতে হবে। প্রতিটি ট্রানজাকশন একটি সেশন প্রয়োজন এবং ট্রানজাকশন শেষ করার পর সেশনটি শেষ করা উচিত।
  • Write Concern: ট্রানজাকশনের write concern কনফিগার করা প্রয়োজন যাতে ডেটার সঠিক লেখন নিশ্চিত করা যায়। MongoDB এবং DocumentDB উভয়েই write concern সেট করা সম্ভব।
  • Isolation Level: DocumentDB-তে ট্রানজাকশনের isolation level নির্ধারণ করা যেতে পারে। এর মানে হল যে একাধিক ট্রানজাকশন একই ডেটা পরিবর্তন করতে চেষ্টা করলে তাদের পারস্পরিক প্রভাব নির্ধারণ করা হবে। যদিও DocumentDB এখনো সম্পূর্ণ Serializable Isolation সমর্থন করে না, তবে এটি Read Committed সাপোর্ট করে।

3. ট্রানজাকশন সমাপ্তি

ট্রানজাকশন সম্পন্ন করার জন্য দুটি প্রধান অপশন রয়েছে:

  • Commit: যদি ট্রানজাকশন সফলভাবে চলতে থাকে, তবে সমস্ত পরিবর্তন commit করা হয় এবং ডেটাবেসে স্থায়ী হয়।
  • Rollback: যদি ট্রানজাকশনের মধ্যে কোনো ত্রুটি ঘটে, তবে সমস্ত পরিবর্তন rollback করা হয় এবং ডেটাবেস পূর্বের অবস্থায় ফিরে আসে।

Commit Example:

await session.commitTransaction();

Rollback Example:

await session.abortTransaction();

4. ট্রানজাকশন স্ট্যাটাস মনিটরিং

DocumentDB এবং MongoDB উভয়েই ট্রানজাকশনের কার্যকারিতা মনিটর করতে operation logs বা transaction logs প্রদান করে। আপনি AWS CloudWatch এবং MongoDB Logs ব্যবহার করে ট্রানজাকশনের পারফরম্যান্স এবং সঠিকতা ট্র্যাক করতে পারেন।

5. ট্রানজাকশনের পারফরম্যান্স

DocumentDB-তে ট্রানজাকশন ব্যবহারের পারফরম্যান্সের উপর কিছু সীমাবদ্ধতা থাকতে পারে, কারণ এটি একটি distributed database। একাধিক ডকুমেন্ট আপডেট করার সময়, এটি কিছুটা latency বাড়াতে পারে। তাই এটি তখনই ব্যবহৃত উচিত যখন আপনি নিশ্চিত যে একাধিক ডকুমেন্টের উপর একই সময়ে আপডেট বা লেখন কার্যকরী হতে হবে।


6. সীমাবদ্ধতা

  • Transactions শুধুমাত্র একটি ক্লাস্টারের মধ্যে কাজ করে, তাই multi-cluster transactions সমর্থিত নয়।
  • DocumentDB সম্পূর্ণ ACID ট্রানজাকশন সমর্থন করে না, তবে eventual consistency প্রদান করে।
  • কিছু ট্রানজাকশন কার্যক্রম যেমন read operations ট্রানজাকশনের অংশ হিসাবে অন্তর্ভুক্ত করা হয় না।

সারাংশ

DocumentDB-তে Multi-Document Transactions ব্যবহৃত হয় এবং এটি MongoDB এর মতো কিছু সীমাবদ্ধতার সঙ্গে কাজ করে। যদিও এটি MongoDB-এর পুরো ACID ট্রানজাকশন সমর্থন করে না, তবে এটি সিম্পল ট্রানজাকশন সমর্থন করে, যা কিছু পরিস্থিতিতে কার্যকরী হতে পারে। DocumentDB-এর ট্রানজাকশন ব্যবস্থাপনা মূলত Atomicity এবং Consistency নিশ্চিত করতে ব্যবহৃত হয়, তবে উন্নত Isolation এবং Durability অপশনগুলি সীমিত।

common.content_added_by

Consistency এবং Isolation Levels

269
269

Consistency এবং Isolation Levels হল ডেটাবেস সিস্টেমের দুটি গুরুত্বপূর্ণ ধারণা, যা ACID (Atomicity, Consistency, Isolation, Durability) প্রিন্সিপালের একটি অংশ। এই দুটি বৈশিষ্ট্য ডেটাবেসের ট্রানজাকশন পরিচালনা এবং একাধিক ব্যবহারকারীর অ্যাক্সেসের মধ্যে ডেটার সঠিকতা এবং নির্ভরযোগ্যতা নিশ্চিত করতে সাহায্য করে।


Consistency

Consistency (সামঞ্জস্যতা) হল সেই গ্যারান্টি যা একটি ট্রানজাকশনের পরবর্তী অবস্থা নিশ্চিত করে যে ডেটাবেস কোনও অকার্যকর অবস্থায় চলে না এবং এটি শুধুমাত্র বৈধ ডেটা ধারণ করবে। এর মানে হল যে, এক বা একাধিক ট্রানজাকশন সম্পন্ন হলে, ডেটাবেসের অবস্থা অবশ্যই পূর্বের নিয়মাবলী বা রুলসের সঙ্গে সঙ্গতিপূর্ণ থাকবে।

  • Consistency একটি ট্রানজাকশনের শেষের অবস্থাকে নিশ্চিত করে যে এটি একটি বৈধ এবং সঠিক ডেটা স্টেট তৈরি করবে, যেখানেও কোনো অবৈধ বা অসম্পূর্ণ ডেটা থাকবে না।
  • এটি নিশ্চিত করে যে ট্রানজাকশন শুরু হওয়ার পূর্বে এবং পরে ডেটাবেসে কোনও ত্রুটি বা অস্থিরতা (inconsistency) নেই।

Consistency এর উদাহরণ:

ধরা যাক একটি ব্যাংক অ্যাকাউন্টের ডেবিট এবং ক্রেডিট অপারেশন সম্পাদন করা হচ্ছে। যদি কোনও অ্যাকাউন্টে $100 ডিপোজিট করা হয়, তাহলে পরবর্তী ট্রানজাকশনে সেই অ্যাকাউন্টের ব্যালান্স অবশ্যই $100 বা তার বেশি হবে, কম নয়। এর মানে, আপনি ডেটাবেসে অপর্যাপ্ত বা অসম্পূর্ণ ডেটা পাবেন না।


Isolation Levels

Isolation (অংশ বিচ্ছিন্নতা) নির্ধারণ করে যে একাধিক ট্রানজাকশন যখন একই সময়ে চলে, তখন তাদের মধ্যে কোনও একে অপরের সাথে পারস্পরিক প্রভাব পড়বে কি না। বিভিন্ন isolation levels ট্রানজাকশনগুলির মধ্যে এই পারস্পরিক প্রভাবের মাত্রা নিয়ন্ত্রণ করে।

অর্থাৎ, Isolation Level হল একটি ট্রানজাকশনকে অন্য ট্রানজাকশনের প্রভাব থেকে কতটুকু পৃথক রাখবে।

ডেটাবেসের isolation levels সাধারণত চারটি প্রধান ধরনের হয়:

1. Read Uncommitted

  • এই isolation level এ, এক ট্রানজাকশনের মধ্যে যে ডেটা পড়া হচ্ছে তা অন্য ট্রানজাকশনের মধ্যে সম্পাদিত (committed) না হওয়া পর্যন্ত নিশ্চিত নয়। অর্থাৎ, অন্য ট্রানজাকশনের অকমিটেড ডেটাও আপনি পড়তে পারবেন।
  • Dirty Read হতে পারে, অর্থাৎ আপনি এমন ডেটা পড়তে পারেন যা পরে রোলব্যাক হতে পারে।

2. Read Committed

  • এই isolation level এ, একটি ট্রানজাকশন শুধুমাত্র এমন ডেটা পড়বে যা অন্য ট্রানজাকশনের মাধ্যমে commit করা হয়েছে।
  • এতে Dirty Reads বন্ধ হয়, তবে Non-repeatable Reads হতে পারে, অর্থাৎ এক ট্রানজাকশন যখন একই ডেটা দুইবার পড়ে, তখন সেই ডেটা পরিবর্তন হতে পারে যদি অন্য কোনও ট্রানজাকশন এটিকে আপডেট করে।

3. Repeatable Read

  • এই isolation level এ, এক ট্রানজাকশন একবার একটি ডেটা পড়লে, পরবর্তী সময়ে সেই ডেটার মান পরিবর্তন হওয়া থেকে রক্ষা পায়। এটি Non-repeatable Reads বন্ধ করে দেয়।
  • তবে Phantom Reads হতে পারে, যেখানে একটি কুয়েরি যখন ডেটা পুনরায় পড়ে, তখন নতুন রেকর্ড যুক্ত হতে পারে বা মুছে যেতে পারে।

4. Serializable

  • এই isolation level সর্বোচ্চ স্তরের isolation প্রদান করে। এর মাধ্যমে, একাধিক ট্রানজাকশনকে একে অপরের মতো আচরণ করতে বাধ্য করা হয় যেন তারা একে অপরের কার্যক্রমের প্রভাব না ফেলে।
  • Serializable isolation level এ Dirty Reads, Non-repeatable Reads, এবং Phantom Reads সবই বন্ধ থাকে। এটি একটি ক্রিটিকাল সিস্টেমে ব্যবহারের জন্য উপযুক্ত যেখানে ডেটা সঠিকতা গুরুত্বপূর্ণ।

Consistency vs. Isolation

  • Consistency নিশ্চিত করে যে একটি ট্রানজাকশনের শেষে ডেটাবেসটি অবশ্যই একটি সঠিক অবস্থানে থাকবে। এটি সাধারণত ডেটার বৈধতা এবং সঠিকতা বজায় রাখে।
  • Isolation নিশ্চিত করে যে একাধিক ট্রানজাকশন একে অপরের প্রভাব থেকে পৃথক থাকে, অর্থাৎ তারা একে অপরকে জানার বা প্রভাবিত করার ক্ষমতা রাখে না।

DocumentDB তে Consistency এবং Isolation

DocumentDB MongoDB-র মতো eventual consistency সমর্থন করে, অর্থাৎ যখন কোনও পরিবর্তন হয়, তখন এটি সমস্ত রিপ্লিকা এবং ক্লাস্টারে সমানভাবে পৌঁছাবে না যতক্ষণ না সময় পায়।

DocumentDB Read Committed isolation level সমর্থন করে, যা নিশ্চিত করে যে dirty reads থেকে রক্ষা পাবে, তবে non-repeatable reads এখনও ঘটতে পারে।


সারাংশ

Consistency এবং Isolation Levels হল ডেটাবেস ট্রানজাকশনের একটি গুরুত্বপূর্ণ অংশ, যা ডেটার সঠিকতা, নির্ভরযোগ্যতা এবং একাধিক ট্রানজাকশনের মধ্যে সঠিক বিচ্ছিন্নতা নিশ্চিত করে। MongoDB বা DocumentDB তে বিভিন্ন isolation levels দ্বারা এই নির্ভরযোগ্যতা এবং বিচ্ছিন্নতা নিশ্চিত করা হয়, যেখানে Serializable isolation level সর্বোচ্চ সুরক্ষা এবং নির্ভরযোগ্যতা প্রদান করে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion