অবজেক্ট, ব্লক ও ফাইল স্টোরেজ
এই পাঠে যা শিখবেন
- অবজেক্ট স্টোরেজ কী, কেন এটি ফাইলসিস্টেমের মতো মাউন্ট করা যায় না বা আংশিক এডিট করা যায় না
- ব্লক স্টোরেজ কীভাবে একটি VM-এ ফিজিক্যাল ডিস্কের মতো আচরণ করে
- ফাইল স্টোরেজ কীভাবে একাধিক ইনস্ট্যান্সকে একই ফাইল একসাথে অ্যাক্সেস করতে দেয়
- Python দিয়ে তিনটি স্টোরেজ টাইপের একটি সিদ্ধান্ত-রেফারেন্স টেবিল তৈরি করা
১ · অবজেক্ট স্টোরেজ
অবজেক্ট স্টোরেজObject Storageফাইলকে মেটাডেটাসহ একটি "অবজেক্ট" হিসেবে সংরক্ষণ করে, HTTP API-এর মাধ্যমে অ্যাক্সেসযোগ্য, প্রায় সীমাহীন স্কেল — কিন্তু একটি ফাইলসিস্টেম হিসেবে মাউন্ট করা যায় না, আংশিক এডিটও সম্ভব নয় (পুরো অবজেক্ট রিপ্লেস করতে হয়)। প্রতিটি ফাইলকে একটি অবজেক্ট (ডেটা + মেটাডেটা + একটি ইউনিক আইডেন্টিফায়ার) হিসেবে সংরক্ষণ করে, HTTP API-এর মাধ্যমে অ্যাক্সেসযোগ্য। স্কেল প্রায় সীমাহীন — ছবি, ভিডিও, ব্যাকআপ, স্ট্যাটিক অ্যাসেট বা একটি সম্পূর্ণ ডেটা লেকের জন্য আদর্শ। বড় সীমাবদ্ধতা: এটি একটি ফাইলসিস্টেম হিসেবে মাউন্ট করা যায় না, এবং একটি অবজেক্টের আংশিক অংশ এডিট করা যায় না — পরিবর্তন করতে হলে সম্পূর্ণ অবজেক্টটিই নতুন করে আপলোড (রিপ্লেস) করতে হয়।
২ · ব্লক স্টোরেজ
ব্লক স্টোরেজBlock Storageএকটি একক VM-এ অ্যাটাচড কাঁচা স্টোরেজ ভলিউম, একটি ফিজিক্যাল ডিস্কের মতো আচরণ করে — লো-লেটেন্সি র্যান্ডম রিড/রাইট দরকার হয় এমন ডেটাবেস বা OS বুট ভলিউমের জন্য প্রয়োজনীয়। একটি একক VM-এ সরাসরি অ্যাটাচড একটি কাঁচা স্টোরেজ ভলিউম — অনেকটা একটি ফিজিক্যাল হার্ড ডিস্কের মতো আচরণ করে। ডেটাবেস বা OS বুট ভলিউমের জন্য দরকারি লো-লেটেন্সি, র্যান্ডম রিড/রাইট অ্যাক্সেস দেয় — এই ধরনের পারফরম্যান্স অবজেক্ট স্টোরেজে সম্ভব নয়। সীমাবদ্ধতা: সাধারণত একটি সময়ে একটি মাত্র VM-এই অ্যাটাচড থাকে।
৩ · ফাইল স্টোরেজ
ফাইল স্টোরেজFile Storageএকটি শেয়ার্ড নেটওয়ার্ক ফাইলসিস্টেম, একইসাথে একাধিক কম্পিউট ইনস্ট্যান্স দিয়ে মাউন্ট করা যায় — যখন অনেকগুলো ইনস্ট্যান্সের একই ফাইলে একসাথে পড়া/লেখার দরকার হয়। একটি শেয়ার্ড নেটওয়ার্ক ফাইলসিস্টেম যা একই সাথে একাধিক কম্পিউট ইনস্ট্যান্স মাউন্ট করতে পারে — অবজেক্ট বা ব্লক স্টোরেজের থেকে এখানেই মূল পার্থক্য। যখন অনেকগুলো অ্যাপ্লিকেশন সার্ভার একই কনফিগারেশন ফাইল, শেয়ার্ড আপলোড ফোল্ডার, বা কনটেন্ট রিপোজিটরিতে একসাথে পড়তে/লিখতে চায়, তখন এটিই একমাত্র সমাধান।
# অবজেক্ট, ব্লক ও ফাইল স্টোরেজ — একটি সিদ্ধান্ত-রেফারেন্স টেবিল
storage_types = {
"অবজেক্ট স্টোরেজ": {
"mountable_by_multiple_instances": False,
"ideal_use_case": "ছবি, ব্যাকআপ, স্ট্যাটিক অ্যাসেট, ডেটা লেক",
"access_pattern": "HTTP API-এর মাধ্যমে; সম্পূর্ণ অবজেক্ট রিপ্লেস, আংশিক এডিট নেই",
},
"ব্লক স্টোরেজ": {
"mountable_by_multiple_instances": False,
"ideal_use_case": "ডেটাবেস, OS বুট ভলিউম — লো-লেটেন্সি র্যান্ডম রিড/রাইট দরকার",
"access_pattern": "একটি VM-এ অ্যাটাচড, ফিজিক্যাল ডিস্কের মতো ব্যবহার",
},
"ফাইল স্টোরেজ": {
"mountable_by_multiple_instances": True,
"ideal_use_case": "শেয়ার্ড কনফিগ, শেয়ার্ড আপলোড — একাধিক ইনস্ট্যান্স একসাথে পড়ে/লেখে",
"access_pattern": "নেটওয়ার্ক ফাইলসিস্টেম হিসেবে একাধিক মেশিনে মাউন্ট করা যায়",
},
}
print(f"{'স্টোরেজ টাইপ':16}{'মাল্টি-ইনস্ট্যান্স মাউন্ট':26}{'উপযুক্ত ব্যবহার'}")
for stype, info in storage_types.items():
mountable = "হ্যাঁ" if info["mountable_by_multiple_instances"] else "না"
print(f"{stype:16}{mountable:26}{info['ideal_use_case']}")
mountable_by_multiple_instances সত্য — এটিই মূল
পার্থক্যকারী প্রশ্ন। যদি আপনার ওয়ার্কলোডে একাধিক ইনস্ট্যান্সের একই ফাইল একসাথে অ্যাক্সেস করার দরকার না
হয়, অবজেক্ট বা ব্লক স্টোরেজই যথেষ্ট এবং সাধারণত সস্তা।
তিনটি স্টোরেজ টাইপ একে অপরের প্রতিস্থাপক নয় — প্রতিটি ভিন্ন অ্যাক্সেস প্যাটার্নের জন্য তৈরি। ভুল টাইপ বেছে নিলে (যেমন একটি ডেটাবেসকে অবজেক্ট স্টোরেজে বসানো) পারফরম্যান্স বা কার্যকারিতার সমস্যা হবে। একটি বাস্তব সিস্টেম প্রায়ই তিনটিই একসাথে ব্যবহার করে — বিভিন্ন উপাদানের জন্য বিভিন্ন প্রয়োজন।
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।
প্র ০১ একটি ছবি-শেয়ারিং অ্যাপ কেন ব্যবহারকারীদের আপলোড করা ছবি সংরক্ষণের জন্য ব্লক স্টোরেজের বদলে অবজেক্ট স্টোরেজ বেছে নেবে?
কোটি কোটি ছবি একটি একক VM-এর ব্লক স্টোরেজ ভলিউমে রাখা ব্যবহারিক নয় (সীমিত ভলিউম সাইজ, একটি মাত্র VM-এ অ্যাটাচড থাকা) — আর ছবি ফাইলে কখনো "আংশিক এডিট" দরকার হয় না, পুরো ফাইলই আপলোড/ডাউনলোড হয়। এটি ঠিক অবজেক্ট স্টোরেজের শক্তির জায়গা — HTTP API দিয়ে সহজ অ্যাক্সেস, প্রায় সীমাহীন স্কেল, এবং প্রতিটি ছবিকে একটি স্বাধীন অবজেক্ট হিসেবে ট্রিট করা।
প্র ০২ কেন একটি ডেটাবেস ব্লক স্টোরেজ দরকার করে, অবজেক্ট স্টোরেজ নয়?
একটি ডেটাবেসকে প্রতি সেকেন্ডে হাজারো ছোট, র্যান্ডম রিড/রাইট অপারেশন করতে হয় (একটি নির্দিষ্ট রো আপডেট, একটি ইনডেক্স পড়া) — অবজেক্ট স্টোরেজে এই ধরনের আংশিক, লো-লেটেন্সি অপারেশন সম্ভব নয় (পুরো অবজেক্ট রিপ্লেস করতে হবে প্রতিবার, যা ভয়াবহ ধীর ও অদক্ষ হবে)। ব্লক স্টোরেজ সরাসরি ডিস্কের মতো আচরণ করে বলেই এই র্যান্ডম-অ্যাক্সেস প্যাটার্ন সমর্থন করতে পারে।
প্র ০৩ একটি মাল্টি-সার্ভার ওয়ার্ডপ্রেস-স্টাইল ওয়েবসাইট, যেখানে একাধিক ওয়েব সার্ভার একই আপলোড ফোল্ডার শেয়ার করতে চায় — কোন স্টোরেজ টাইপ দরকার, এবং কেন অন্য দুটি যথেষ্ট নয়?
ফাইল স্টোরেজ দরকার, কারণ একাধিক ওয়েব সার্ভার ইনস্ট্যান্সকে একই সাথে একই আপলোড ফোল্ডারে পড়তে/লিখতে হবে — ব্লক স্টোরেজ একটি সময়ে মাত্র একটি VM-এ অ্যাটাচড থাকে (তাই বাকি সার্ভারগুলো সেই ফাইল দেখতে পাবে না), আর অবজেক্ট স্টোরেজ ফাইলসিস্টেম হিসেবে মাউন্ট করা যায় না (অ্যাপ্লিকেশন কোড পরিবর্তন ছাড়া ব্যবহার করা কঠিন)। ফাইল স্টোরেজই একমাত্র টাইপ যা সত্যিকারের "একই সাথে একাধিক ইনস্ট্যান্স" শেয়ারিং সমর্থন করে।
অনুশীলন
-
চিন্তা করুন: আপনার ফোনের ক্যামেরা রোল ক্লাউডে ব্যাকআপ হওয়া (যেমন কোনো ফটো-ব্যাকআপ
সার্ভিস) কোন স্টোরেজ টাইপ ব্যবহার করছে বলে মনে হয়, এবং কেন?
প্রায় নিশ্চিতভাবেই অবজেক্ট স্টোরেজ — কোটি কোটি ব্যবহারকারীর কোটি কোটি ছবি/ভিডিও ফাইল, প্রতিটি স্বাধীনভাবে আপলোড/ডাউনলোড হয়, কখনো আংশিক এডিট দরকার হয় না, এবং প্রায় সীমাহীন স্কেল প্রয়োজন — এটি ঠিক অবজেক্ট স্টোরেজের আদর্শ ব্যবহারের ক্ষেত্র।
-
পরীক্ষা করুন: উপরের কোড সেলের
storage_typesডিকশনারিতে একটি নতুন key"typical_latency"যোগ করুন (অবজেক্ট: "মাঝারি", ব্লক: "খুবই কম", ফাইল: "কম") এবং প্রিন্ট লুপে এটিও দেখান।প্রতিটি স্টোরেজ টাইপের ডিকশনারিতে নতুন কী যোগ করলে এবং
printলাইনেinfo['typical_latency']যোগ করলে টেবিলে একটি নতুন কলাম দেখা যাবে — এটি দেখায় কেন ব্লক স্টোরেজ (সবচেয়ে কম লেটেন্সি) ডেটাবেসের জন্য এবং অবজেক্ট স্টোরেজ (তুলনামূলক বেশি লেটেন্সি কিন্তু সীমাহীন স্কেল) বাল্ক ডেটার জন্য উপযুক্ত।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- কোর্সের সম্পূর্ণ সিলেবাস দেখুন ৫৭টি পাঠ পরবর্তী পাঠ — ম্যানেজড ডেটাবেস সার্ভিসেস — শীঘ্রই যুক্ত হবে।
- System Design & Software Architecture কোর্স সঙ্গী কোর্স ডেটাবেস ও ক্যাশিং প্যাটার্নের স্থাপত্য দিক শিখতে দেখুন।
- Cybersecurity & Ethical Hacking কোর্স সঙ্গী কোর্স স্টোরেজ অ্যাক্সেস কন্ট্রোল ও এনক্রিপশন-অ্যাট-রেস্ট শিখতে দেখুন।
- সব Courses দেখুন ABCL TECH C, C++, Python, Java, JavaScript, DSA, DBMS, Discrete Mathematics, System Design, Cybersecurity ও Cloud Computing & DevOps — সব এক জায়গায়।