Database Tutorials SQLite এর ACID Properties (Atomicity, Consistency, Isolation, Durability) গাইড ও নোট

350

SQLite একটি ACID-compliant ডাটাবেস সিস্টেম, যার মানে হলো এটি Atomicity, Consistency, Isolation, এবং Durability (ACID) এর সমস্ত প্রপার্টি অনুসরণ করে। এই প্রপার্টিগুলো ডাটাবেসের ট্রানজেকশনকে কার্যকরী, নির্ভরযোগ্য, এবং নিরাপদভাবে পরিচালনা করতে সাহায্য করে। ACID গুণাবলী ডাটাবেস সিস্টেমে ডাটা ইন্টিগ্রিটি এবং স্থিতিশীলতা নিশ্চিত করে, বিশেষত যখন সিস্টেম ক্র্যাশ বা অন্য কোনো সমস্যা হয়।

এখানে ACID এর প্রতিটি প্রপার্টি বিস্তারিতভাবে আলোচনা করা হলো:


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

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

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

SQLite-এ WAL (Write-Ahead Logging) মেকানিজম ব্যবহার করা হয়, যার মাধ্যমে Atomicity নিশ্চিত করা হয়। এক্ষেত্রে ডাটা প্রথমে WAL লগে লেখা হয় এবং পরে মূল ডাটাবেসে কমিট করা হয়।


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

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

  • অর্থ: ডাটাবেসে ট্রানজেকশন চলাকালীন সময়ে কোনো ভুল বা অসামঞ্জস্যপূর্ণ অবস্থা সৃষ্টি হতে দেওয়া হবে না। যদি কোনো সমস্যা হয়, তবে ডাটাবেস আগের সঠিক অবস্থায় ফিরে যাবে (যেমন, ট্রানজেকশন সম্পূর্ণ না হলে আগের অবস্থায় ফিরে যাবে)।
  • উদাহরণ: যদি আপনি একটি অ্যাকাউন্টে টাকা জমা করার এবং অন্য অ্যাউন্ট থেকে টাকা কেটে নেওয়ার একটি ট্রানজেকশন চালান, তাহলে অ্যাকাউন্টের মোট ব্যালান্স পুরো ট্রানজেকশন চলাকালীন এবং পরে সঠিক থাকতে হবে।

SQLite-এ Consistency নিশ্চিত করতে প্রতিটি ট্রানজেকশন ACID প্রপার্টি অনুসরণ করে এবং rollback করার ক্ষমতা রাখে, যাতে ডাটাবেসে কোনো অসম্পূর্ণ বা ভুল ডেটা না থাকে।


৩. Isolation (অযথা মিশ্রণ প্রতিরোধ)

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

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

SQLite-এ Isolation নিশ্চিত করতে ACID ট্রানজেকশন চালানোর সময় locks ব্যবহৃত হয়, যা নিশ্চিত করে যে এক ট্রানজেকশনের পরবর্তী অপারেশন অন্য কোনো ট্রানজেকশনের দ্বারা প্রভাবিত হবে না।


৪. Durability (স্থিতিশীলতা)

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

  • অর্থ: একবার ট্রানজেকশন কমিট হলে, সিস্টেম ডাউন বা বন্ধ হওয়ার পরও ডেটা থেকে যাবে এবং ডাটাবেস পুনরুদ্ধার হলে সঠিক তথ্য ফিরে আসবে।
  • উদাহরণ: ধরুন আপনি একটি অ্যাকাউন্টে টাকা জমা করার ট্রানজেকশন করেছেন। যদি আপনার কম্পিউটার হঠাৎ বন্ধ হয়ে যায়, তবে ট্রানজেকশনটি শেষ হওয়ার পরও আপনার জমাকৃত টাকা অক্ষত থাকবে।

SQLite-এ Durability নিশ্চিত করতে WAL (Write-Ahead Logging) পদ্ধতি ব্যবহার করা হয়। এই পদ্ধতিতে, ডাটা প্রথমে WAL ফাইলে লেখা হয় এবং পরে মূল ডাটাবেসে সেভ করা হয়, যা সিস্টেম ক্র্যাশের পরও ডাটা পুনরুদ্ধার নিশ্চিত করে।


সারাংশ

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

Content added By
Promotion

Are you sure to start over?

Loading...