Multi-Version Concurrency Control (MVCC) একটি ডেটাবেস কনসেপ্ট যা ডেটাবেসে একাধিক ক্লায়েন্টের একই ডেটাতে সমান্তরালভাবে অ্যাক্সেস করার সময় ডেটার কনসিস্টেন্সি নিশ্চিত করে। MVCC-এর মাধ্যমে ডেটা পরিবর্তন করার সময় একাধিক ভার্সন তৈরি করা হয়, যার ফলে নন-ব্লকিং রিডস (Non-blocking Reads) এবং লাইট-ওয়েট ট্রানজাকশন্স সম্ভব হয়। এর মাধ্যমে ডেটাবেসের পারফরম্যান্স এবং কনসিস্টেন্সি বজায় থাকে যখন একাধিক ব্যবহারকারী ডেটাবেসের সাথে কাজ করেন।
MVCC-তে, প্রতিটি ডেটাবেস রেকর্ডে একাধিক ভার্সন থাকে, যার মধ্যে পূর্ববর্তী এবং নতুন পরিবর্তনগুলি সংরক্ষিত থাকে। যখন একটি ট্রানজাকশন ডেটাকে পরিবর্তন বা আপডেট করে, তখন নতুন একটি ভার্সন তৈরি হয়, কিন্তু পুরানো ভার্সনটি ডিলিট করা হয় না। এতে পূর্ববর্তী ভার্সনটি অন্য ট্রানজাকশনের জন্য অ্যাক্সেসযোগ্য থাকে।
যখন একটি ট্রানজাকশন ডেটার একটি অংশে পরিবর্তন আনে, তখন একটি নতুন ডেটা ভার্সন তৈরি হয়। পুরানো ভার্সনটি তখন পর্যন্ত অপরিবর্তিত থাকে যতক্ষণ না তার ব্যবহারকারী বা ট্রানজাকশন শেষ হয়। এর ফলে:
MVCC একাধিক ট্রানজাকশনকে সমান্তরালে (concurrently) পরিচালনা করার সুবিধা দেয়। যখন একাধিক ক্লায়েন্ট একই সময়ে ডেটা অ্যাক্সেস বা আপডেট করে, MVCC প্রতিটি ট্রানজাকশনকে তার নিজস্ব ভার্সনে কাজ করতে দেয়, ফলে ট্রানজাকশন লকিং কম হয় এবং ডেটাবেসের পারফরম্যান্স বৃদ্ধি পায়।
MVCC ডেটার পরিবর্তনকে ব্লক না করে নন-ব্লকিং রিডস নিশ্চিত করে। এটি নিশ্চিত করে যে যখন একটি ট্রানজাকশন ডেটাকে রিড (পড়া) করছে, তখন অন্য ট্রানজাকশন সেই ডেটা পরিবর্তন করতে পারে। এর ফলে, একটি ট্রানজাকশন রিডের সময় ব্লক হয় না, যা পারফরম্যান্সের উন্নতি করে।
MVCC নিশ্চিত করে যে প্রতিটি ট্রানজাকশন এ্যাটমিক, ইসোলেটেড, এবং কনসিসটেন্ট অবস্থায় কাজ করে, যার ফলে ACID Properties বজায় থাকে।
কারণ একাধিক ট্রানজাকশন একই ডেটার উপর কাজ করে না, MVCC ডেডলক (deadlock) হওয়ার সম্ভাবনা কমায়। সাধারণত, লকিং মেকানিজমে ডেডলকের সমস্যা হয়, কিন্তু MVCC-তে একাধিক ট্রানজাকশন তার নিজস্ব ভার্সন নিয়ে কাজ করতে পারে, যার ফলে লকিংয়ের প্রয়োজন পড়ে না।
ধরা যাক, একটি অ্যাপ্লিকেশনে একটি কাস্টমারের অ্যাকাউন্ট ব্যালেন্স আপডেট করা হচ্ছে:
এভাবে, দুটি ট্রানজাকশন একে অপরকে ব্লক না করে কাজ করতে পারে, ফলে ডেটা অ্যাক্সেস আরও দ্রুত এবং কার্যকরী হয়।
Multi-Version Concurrency Control (MVCC) একটি শক্তিশালী কনসিস্টেন্সি মেকানিজম যা একাধিক ট্রানজাকশনকে একসাথে কাজ করতে দেয় এবং ডেটার কনসিস্টেন্সি বজায় রাখে। এটি ব্লকিং রিডস, ট্রানজাকশন লকিং এবং ডেডলক কমাতে সাহায্য করে, পাশাপাশি ACID গুণাবলী নিশ্চিত করে। MVCC বিশেষভাবে গুরুত্বপূর্ণ যখন উচ্চ পরিমাণে ট্রানজাকশন পরিচালনা করতে হয় এবং ডেটাবেসের পারফরম্যান্স এবং কনসিস্টেন্সি বজায় রাখতে হয়।
common.read_more