✏️ Explanatory Question

স্ন্যাপশট বলতে কী বোঝো? (What do you mean by a snapshot?)

👁 5 Views
📘 Detailed Answer
🟢 Easy
💡

Answer with Explanation

  উত্তর: Database Management System বা DBMS-এর প্রেক্ষিতে স্ন্যাপশট বলতে কোনো ডেটাবেজ বা ডেটার একটি নির্দিষ্ট সময়ের স্থির অবস্থা বা point-in-time copy বোঝায়। অর্থাৎ, একটি নির্দিষ্ট মুহূর্তে ডেটাবেজে যে তথ্যগুলো ছিল, সেগুলোর একটি স্থির ছবি বা অবস্থা সংরক্ষণ করা হলে তাকে স্ন্যাপশট বলা হয়। SQL Server-এর ক্ষেত্রে database snapshot হলো source database-এর একটি read-only, static view, যা snapshot তৈরির সময়কার অবস্থার সাথে transactionally consistent থাকে।

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


  পরীক্ষার জন্য সংক্ষিপ্ত উত্তর

স্ন্যাপশট হলো ডেটাবেজের একটি নির্দিষ্ট সময়ের স্থির কপি বা অবস্থা, যার মাধ্যমে সেই সময়ে ডেটাবেজে কী তথ্য ছিল তা দেখা যায়। এটি সাধারণত read-only হয়, অর্থাৎ এতে সরাসরি পরিবর্তন করা যায় না। স্ন্যাপশট reporting, auditing, testing এবং পূর্বের ডেটার অবস্থা দেখার কাজে ব্যবহৃত হয়। SQL Server documentation অনুযায়ী database snapshot একটি read-only, static view of a SQL Server database।


  সহজভাবে ব্যাখ্যা

ধরা যাক, একটি স্কুলের ডেটাবেজে ছাত্রদের নাম, রোল নম্বর, ফলাফল এবং ফি জমার তথ্য সংরক্ষিত আছে। সকাল ১০টায় ডেটাবেজটির একটি স্ন্যাপশট নেওয়া হলো। এরপর দুপুরে কিছু ছাত্রের result update করা হলো বা fee record পরিবর্তন করা হলো। কিন্তু সকাল ১০টার স্ন্যাপশটে ডেটাবেজের সেই আগের অবস্থাই দেখা যাবে।

অর্থাৎ, স্ন্যাপশট ডেটাবেজের বর্তমান পরিবর্তন দেখায় না; বরং যে সময়ে স্ন্যাপশট নেওয়া হয়েছিল, সেই সময়কার ডেটার অবস্থা দেখায়। Microsoft Learn-এ বলা হয়েছে, database snapshot data-কে snapshot তৈরির সময়কার state-এ read-only view হিসেবে দেখায়।


  বাস্তব উদাহরণ: School Database

  ধরা যাক, একটি স্কুলে নিচের মতো Student table আছে:

Roll Name Class Marks
1 Rahul 10 80
2 Sima 10 85
3 Amit 10 78

  এখন সকাল ১০টায় এই database-এর একটি snapshot নেওয়া হলো। এরপর Sima-এর marks 85 থেকে 90 করা হলো। কিন্তু snapshot-এ Sima-এর marks আগের মতো 85-ই দেখা যাবে, কারণ snapshot সেই নির্দিষ্ট সময়ের ডেটার অবস্থা ধরে রাখে।


  স্ন্যাপশটের মূল ধারণা

  •   নির্দিষ্ট সময়ের অবস্থা: স্ন্যাপশট ডেটাবেজের একটি নির্দিষ্ট সময়ের ডেটার অবস্থা সংরক্ষণ করে।
  •   Read-only View: সাধারণত স্ন্যাপশট শুধু দেখা যায়, এতে সরাসরি পরিবর্তন করা যায় না। Microsoft Learn অনুযায়ী database snapshot হলো read-only, static view। [1](https://learn.microsoft.com/en-us/sql/relational-databases/databases/database-snapshots-sql-server?view=sql-server-ver17)
  •   Source Database-এর উপর নির্ভরশীল: SQL Server documentation অনুযায়ী database snapshot source database-এর same server instance-এ থাকে।
  •   Reporting-এর জন্য ব্যবহারযোগ্য: database snapshot reporting purposes-এর জন্য ব্যবহার করা যেতে পারে, যাতে snapshot তৈরির সময়কার data-এর উপর report করা যায়।
  •   Historical View: snapshot historical data ধরে রাখতে সাহায্য করতে পারে, বিশেষ করে report generation-এর জন্য। Microsoft Learn snapshot-এর benefit হিসেবে maintaining historical data for report generation উল্লেখ করেছে।

  স্ন্যাপশট কেন ব্যবহার করা হয়?

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

  •   Reporting: কোনো নির্দিষ্ট সময়ের ডেটার উপর report তৈরি করার জন্য snapshot ব্যবহার করা যায়।
  •   Auditing: নির্দিষ্ট সময়ে ডেটার অবস্থা যাচাই করার জন্য snapshot ব্যবহার করা যেতে পারে।
  •   Testing: live database পরিবর্তন না করে একটি নির্দিষ্ট অবস্থার ডেটা দেখে পরীক্ষা বা analysis করা যায়।
  •   Previous State দেখা: কোনো পরিবর্তনের আগে ডেটা কেমন ছিল তা snapshot-এর মাধ্যমে দেখা যায়। SQL Server documentation-এ snapshot major schema upgrades-এর সময় previous state-এ revert করার ক্ষেত্রে সহায়ক হতে পারে বলা হয়েছে।

  গুরুত্বপূর্ণ বিষয়: Snapshot এবং Backup এক নয়

স্ন্যাপশটকে কখনোই পূর্ণাঙ্গ backup-এর বিকল্প মনে করা উচিত নয়। Snapshot একটি নির্দিষ্ট সময়ের read-only view দিতে পারে, কিন্তু এটি regular backup-এর পরিবর্তে ব্যবহার করার জন্য নয়। Microsoft Learn স্পষ্টভাবে উল্লেখ করেছে যে database snapshots regular backups-এর replacement নয় এবং data protection-এর জন্য robust backup strategy প্রয়োজন।

  সহজভাবে: Snapshot হলো কোনো মুহূর্তের ছবি, আর Backup হলো ডেটা রক্ষার জন্য সম্পূর্ণ নিরাপদ সংরক্ষণ ব্যবস্থা। তাই snapshot সাহায্য করে আগের অবস্থা দেখতে, কিন্তু backup ডেটা হারালে পুনরুদ্ধারে বেশি গুরুত্বপূর্ণ।


  Snapshot এবং Backup-এর পার্থক্য

বিষয় Snapshot Backup
অর্থ নির্দিষ্ট সময়ের ডেটার স্থির অবস্থা ডেটার নিরাপদ সংরক্ষিত কপি
ব্যবহার Reporting, testing, previous state দেখা ডেটা হারালে recovery
পরিবর্তনযোগ্যতা সাধারণত read-only Restore করার জন্য ব্যবহৃত হয়
উদ্দেশ্য একটি নির্দিষ্ট সময়ের view প্রদান ডেটা সুরক্ষা ও পুনরুদ্ধার
Backup-এর বিকল্প? না হ্যাঁ, recovery-এর মূল উপায়

  Materialized View হিসেবে Snapshot

কিছু DBMS-এ snapshot শব্দটি materialized view-এর অর্থেও ব্যবহৃত হয়। Materialized view হলো এমন একটি database object যেখানে কোনো query-এর result সংরক্ষণ করা থাকে। GeeksforGeeks অনুযায়ী materialized view হলো snapshot বা materialized query table, যা query result সংরক্ষণ করে।

Oracle documentation-এও snapshot-কে materialized view হিসেবে উল্লেখ করা হয়েছে, বিশেষ করে replicated environment-এ target master table-এর point-in-time replica হিসেবে।

  উদাহরণ: যদি একটি query সব Class 10 ছাত্রের result বের করে এবং সেই result আলাদা করে সংরক্ষণ করা হয়, তাহলে সেটি materialized view বা snapshot হিসেবে ব্যবহার করা যেতে পারে।


  শ্রেণিকক্ষে বোঝানোর সহজ পদ্ধতি

শিক্ষক ছাত্রদের এভাবে বোঝাতে পারেন:

ধরা যাক, তোমরা একটি ব্ল্যাকবোর্ডে ছাত্রদের নম্বর লিখেছ। এখন শিক্ষক সেই বোর্ডের একটি ছবি তুলে রাখলেন। পরে বোর্ডে নম্বর পরিবর্তন করা হলেও ছবিতে আগের নম্বরই থাকবে। এই ছবিটিই হলো snapshot-এর মতো।

ডেটাবেজেও একইভাবে কোনো নির্দিষ্ট সময়ে ডেটার একটি স্থির অবস্থা ধরে রাখা হয়। পরে ডেটাবেজে পরিবর্তন হলেও snapshot-এ সেই পুরনো সময়ের ডেটা দেখা যায়।


  পরীক্ষায় লেখার নিয়ম

  প্রথমে snapshot-এর সংজ্ঞা লিখবে।
  তারপর লিখবে যে এটি database-এর নির্দিষ্ট সময়ের স্থির অবস্থা।
  এরপর উল্লেখ করবে যে snapshot সাধারণত read-only হয়।
  একটি school database বা marks table-এর সহজ উদাহরণ দেবে।
  শেষে লিখবে যে snapshot reporting, testing এবং previous state দেখার কাজে ব্যবহৃত হয়, তবে এটি backup-এর বিকল্প নয়।


  মনে রাখার সহজ সূত্র

  স্ন্যাপশট হলো ডেটাবেজের একটি নির্দিষ্ট সময়ের স্থির ছবি, যেখানে সেই সময়কার ডেটার অবস্থা দেখা যায়।


  চূড়ান্ত পরীক্ষামূলক উত্তর

DBMS-এর প্রেক্ষিতে স্ন্যাপশট হলো ডেটাবেজের একটি নির্দিষ্ট সময়ের স্থির কপি বা অবস্থা। এটি database-এর point-in-time view প্রদান করে, অর্থাৎ snapshot নেওয়ার সময় ডেটাবেজে যে তথ্য ছিল তা দেখা যায়। সাধারণত snapshot read-only হয় এবং এতে সরাসরি পরিবর্তন করা যায় না। উদাহরণস্বরূপ, সকাল ১০টায় একটি school database-এর snapshot নেওয়া হলে পরে result update করা হলেও snapshot-এ সকাল ১০টার আগের তথ্যই দেখা যাবে। Snapshot reporting, auditing, testing এবং আগের data state দেখার কাজে ব্যবহৃত হয়। তবে snapshot backup-এর বিকল্প নয়; data protection-এর জন্য regular backup প্রয়োজন।