Skip to content

Isolation & its Levels (ACID)

ডেটাবেস ট্রানজেকশনের ক্ষেত্রে Isolation হলো একটি প্রসেস যা নিশ্চিত করে যে একটি ট্রানজেকশন অন্য ট্রানজেকশনের ওপর প্রভাব ফেলবে না। ডিস্ট্রিবিউটেড সিস্টেমে এবং কনকারেন্ট সিস্টেমে এটি বোঝা খুবই জরুরি।

Isolation কি?

সহজ কথায়, একই সময়ে যখন হাজার হাজার ইউজার ডেটাবেসে ডেটা রাইট বা রিড করতে চায়, তখন তারা যেন একে অপরের কাজে বাধা না দেয় বা ভুল ডেটা না দেখে, সেটিই আইসোলেশন।

আইসোলেশন লেভেলসমূহ (Read Phenomena)

আইসোলেশন লেভেল বোঝার আগে ৩টি কমন সমস্যা জানা প্রয়োজন:

  1. Dirty Read: এমন ডেটা রিড করা যা এখনো ড্রাফটে আছে (অন্য ট্রানজেকশন কমীট করেনি)।
  2. Non-repeatable Read: একই ট্রানজেকশনে দুইবার রিড করলে ভিন্ন ডেটা পাওয়া।
  3. Phantom Read: নতুন কোনো রো (Row) যুক্ত হওয়ার কারণে কুয়েরি রেজাল্ট বদলে যাওয়া।

৪টি প্রধান আইসোলেশন লেভেল

১. Read Uncommitted

এটি সবচেয়ে দুর্বল লেভেল। এখানে অন্য ট্রানজেকশনের কমীট না হওয়া (Dirty) ডেটাও পড়া যায়। এটি খুব ফাস্ট কিন্তু অনির্ভরযোগ্য।

২. Read Committed

এখানে শুধুমাত্র কমীট হওয়া ডেটা পড়া যায়। এটি 'Dirty Read' সমস্যা সমাধান করে কিন্তু 'Non-repeatable read' রয়ে যায়। এটি অনেক ডেটাবেসের (যেমন: PostgreSQL, SQL Server) ডিফল্ট লেভেল।

৩. Repeatable Read

একই ট্রানজেকশনে আপনি যতবারই একই ডেটা রিড করবেন, তা সবসময় একই থাকবে। এটি 'Non-repeatable read' সমাধান করে। MySQL এর ডিফল্ট লেভেল এটিই।

৪. Serializable

এটি সবচেয়ে কঠোর এবং শক্তিশালী লেভেল। এটি ট্রানজেকশনগুলোকে এমনভাবে চালায় যেন তারা একের পর এক (Serial) ঘটছে। এটি সব ধরনের রিড সমস্যা (Dirty, Non-repeatable, Phantom) সমাধান করে। তবে এটি সিস্টেমকে অনেক স্লো করে দেয়।


তুলনা টেবিল

লেভেলDirty ReadNon-repeatable ReadPhantom Readপারফরম্যান্স
Read Uncommittedসম্ভবসম্ভবসম্ভবসর্বোচ্চ
Read Committedসমাধানসম্ভবসম্ভবভালো
Repeatable Readসমাধানসমাধানসম্ভবমাঝারি
Serializableসমাধানসমাধানসমাধানসর্বনিম্ন

TIP

রিয়েল-ওয়ার্ল্ড অ্যাপ্লিকেশনে সাধারণত Read Committed বা Repeatable Read ব্যবহার করা হয়। Serializable শুধুমাত্র খুব ক্রিটিক্যাল এবং সেনসিটিভ ডেটার ক্ষেত্রে ব্যবহৃত হয়।

Released under the MIT License.