Multi-Version Concurrency Control (MVCC) হল একটি ডেটাবেজের কনকারেন্ট অ্যাক্সেস কন্ট্রোল মেকানিজম যা একই সময়ে একাধিক ব্যবহারকারী বা থ্রেডের মধ্যে ডেটাবেজে একাধিক অপারেশন চালানোর সুযোগ দেয়, এবং সেগুলোর মধ্যে কনফ্লিক্ট এড়িয়ে কাজ করতে সহায়ক। MVCC-কে সাধারণত ডেটাবেজের কনকারেন্সি এবং ইসোলেশন স্তরের উন্নতির জন্য ব্যবহৃত হয়।
H2 Database, PostgreSQL, MySQL-এর InnoDB ইঞ্জিন এবং অন্যান্য বেশ কিছু ডেটাবেজ সিস্টেম MVCC সমর্থন করে, যা ডেটাবেজের পারফরম্যান্স বৃদ্ধি করে এবং লকিংয়ের মাধ্যমে ডেটার অ্যাক্সেসের সীমাবদ্ধতা কমায়।
MVCC ব্যবহার করে, ডেটাবেজ সিস্টেম একটি বহু সংস্করণ (Multiple Versions) তৈরি করে, যেখানে প্রতিটি রেকর্ডের একাধিক সংস্করণ থাকে। প্রতিটি রেকর্ড বা টেবিলের সংস্করণ নির্ধারণ করা হয় টাইমস্ট্যাম্প বা ট্রানজ্যাকশন আইডি দ্বারা। এর ফলে, বিভিন্ন ইউজার বা ট্রানজ্যাকশন একই ডেটার উপর একাধিক অপারেশন করতে পারে এবং একে অপরকে প্রভাবিত না করে কাজ করতে পারে।
MVCC প্রক্রিয়াতে প্রধানত দুটি পদ্ধতি ব্যবহৃত হয়:
ধরা যাক, একটি users
টেবিল রয়েছে, এবং দুটি ট্রানজ্যাকশন (T1 এবং T2) একই রেকর্ড আপডেট করতে চায়।
UPDATE users SET name = 'Alice' WHERE id = 1;
— T1 একটি রেকর্ড আপডেট করেছে।SELECT name FROM users WHERE id = 1;
— T2 একই রেকর্ডটি পড়ে এবং এটি পুরানো মান (যেমন "Bob") পায়, কারণ T1 এখনও ডেটাবেজের মধ্যে তার পরিবর্তনটি সম্পন্ন করেনি।এখানে, T1 এবং T2 কোনো ধরনের কনফ্লিক্ট সৃষ্টি না করে তাদের কাজ সম্পন্ন করতে পারছে, কারণ T2 শুধুমাত্র পুরানো সংস্করণ দেখতে পাচ্ছে।
UPDATE users SET name = 'Alice' WHERE id = 1;
UPDATE users SET name = 'Bob' WHERE id = 1;
এখানে, T1 এবং T2 একে অপরকে ব্লক না করেই ডেটা পরিবর্তন করতে পারে। কিন্তু, T2 যখন UPDATE
করার জন্য কাজ করবে, T1-এ পরিবর্তনগুলি লক না করেই দেখতে পাবে না। সুতরাং, এই প্রক্রিয়া শেষ হয়ে গেলে, দুইটি ভিন্ন সংস্করণ থাকবে।
H2 ডেটাবেজে, MVCC স্বয়ংক্রিয়ভাবে কাজ করে, যেখানে প্রতিটি ট্রানজ্যাকশন একটি আলাদা সংস্করণে ডেটা দেখতে পায় এবং অন্য ট্রানজ্যাকশনগুলি পরিবর্তন করতে গেলে, সেগুলোর জন্য আলাদা সংস্করণ তৈরি করা হয়। এটি ACID বৈশিষ্ট্য নিশ্চিত করতে সহায়ক।
যদিও MVCC একটি শক্তিশালী কনকারেন্সি কন্ট্রোল প্রযুক্তি, তবুও এর কিছু সীমাবদ্ধতা এবং চ্যালেঞ্জ রয়েছে:
MVCC (Multi-Version Concurrency Control) একটি অত্যন্ত কার্যকরী কনকারেন্সি কন্ট্রোল মেকানিজম, যা ডেটাবেজে একাধিক ট্রানজ্যাকশনকে একই সময়ে ডেটার উপর কাজ করার সুযোগ দেয় এবং ডেটা ইনটিগ্রিটি ও পারফরম্যান্স নিশ্চিত করে। H2 ডেটাবেজে MVCC সিস্টেম ব্যবহার করে লকিং কমানো হয়, যার ফলে একাধিক ব্যবহারকারী বা অ্যাপ্লিকেশন একযোগে ডেটাবেজে কাজ করতে পারে।
common.read_more