H2 ডেটাবেজে Cached Row Tables এবং In-Memory Tables দুটি বিশেষ ধরনের টেবিলের কনসেপ্ট রয়েছে, যেগুলি পারফরম্যান্স অপটিমাইজেশন এবং দ্রুত ডেটা অ্যাক্সেসের জন্য ব্যবহৃত হয়। এই টেবিলগুলো ডেটা সংরক্ষণের এবং প্রক্রিয়াকরণের জন্য বিশেষ কৌশল ব্যবহার করে, যা ডেটাবেজের পারফরম্যান্সকে উল্লেখযোগ্যভাবে উন্নত করতে সাহায্য করে।
১. Cached Row Tables
Cached Row Tables H2 ডেটাবেজে এমন টেবিল, যেখানে টেবিলের রেকর্ডগুলি ডেটাবেজের মেমরিতে ক্যাশে করা হয়। এই ধরনের টেবিলের মধ্যে ডেটা সরাসরি ডিস্কে সংরক্ষণ করা না হয়ে, সেগুলি দ্রুত অ্যাক্সেসের জন্য মেমরির মধ্যে লোড করা হয়। এর ফলে, কুয়েরি অপারেশনগুলি অনেক দ্রুত সম্পন্ন হয়।
কীভাবে কাজ করে?
Cached Row Tables সেক্ষেত্রে ব্যবহার করা হয় যখন ডেটাবেজের বৃহৎ পরিমাণ তথ্যকে অল্প সময়ে প্রক্রিয়াকরণের প্রয়োজন হয়। ডেটাবেজে টেবিলের রেকর্ডগুলির একটি কপি মেমরিতে ক্যাশে করা হয় এবং ডেটাবেজ কুয়েরি সম্পাদন করার সময় সেগুলি দ্রুত অ্যাক্সেস করা হয়।
ফায়দা:
- দ্রুত ডেটা অ্যাক্সেস: যেহেতু রেকর্ডগুলি মেমরিতে সংরক্ষিত থাকে, অ্যাক্সেস অনেক দ্রুত হয়।
- কম ডিস্ক I/O: ডিস্কের উপর নির্ভরশীলতা কমে যায়, কারণ মেমরি থেকে দ্রুত ডেটা পাওয়া যায়।
- উচ্চ পারফরম্যান্স: বেশি পরিমাণ ডেটা অ্যাক্সেস করার জন্য বিশেষভাবে উপযুক্ত, যেখানে ডেটাবেজের আকার বড়।
কনফিগারেশন:
CREATE TABLE students CACHE
(
student_id INT PRIMARY KEY,
name VARCHAR(255),
age INT,
grade VARCHAR(10)
);
এখানে, CACHE কিওয়ার্ড ব্যবহার করে H2 ডেটাবেজে একটি Cached Row Table তৈরি করা হয়েছে।
২. In-Memory Tables
In-Memory Tables হলো এমন টেবিল, যেখানে সমস্ত ডেটা মেমরির মধ্যে সংরক্ষিত থাকে এবং কোনো ডিস্ক বা স্টোরেজ ডিভাইসের উপর তা সংরক্ষিত হয় না। এই ধরনের টেবিলগুলি খুব দ্রুততর ডেটা অ্যাক্সেস সক্ষম করে এবং শুধুমাত্র সেশন শেষ হওয়া পর্যন্ত ডেটা সংরক্ষণ করা হয়।
কীভাবে কাজ করে?
In-Memory Tables পুরোপুরি RAM (Random Access Memory) এ অবস্থান করে, যার ফলে ডেটাবেজ অপারেশন গুলি অত্যন্ত দ্রুত হয়। ইন-মেমরি টেবিলের মধ্যে রেকর্ডগুলি একটি অস্থায়ী (temporary) ডেটাবেজ হিসেবে সংরক্ষিত থাকে এবং অ্যাপ্লিকেশন বন্ধ হলে এই ডেটা মুছে যায়। এই টেবিলগুলি শুধুমাত্র সেই অ্যাপ্লিকেশনের জন্যই কার্যকর, যার মধ্যে ডেটাবেজ কনফিগারেশনটি তৈরি করা হয়েছে।
ফায়দা:
- বিপুল গতি: যেহেতু ডেটা RAM-এ সংরক্ষিত থাকে, অ্যাক্সেস এবং ম্যানিপুলেশন অনেক দ্রুত ঘটে।
- টেস্টিং এবং প্রোটোটাইপ: সাধারণত ইন-মেমরি টেবিলগুলি টেস্টিং বা প্রোটোটাইপ ডেভেলপমেন্টের জন্য ব্যবহৃত হয়।
- ডাইনামিক অ্যাপ্লিকেশন: দ্রুত পরিবর্তনশীল ডেটা যেমন সেশন তথ্য বা ক্যাশড ডেটা সংরক্ষণ করার জন্য উপযুক্ত।
কনফিগারেশন:
CREATE TABLE test_table (
id INT PRIMARY KEY,
value VARCHAR(255)
) MEMORY;
এখানে, MEMORY কিওয়ার্ড ব্যবহার করে একটি In-Memory Table তৈরি করা হয়েছে। এটি শুধু মেমরিতে থাকবে এবং অ্যাপ্লিকেশন বন্ধ হলে এই টেবিলটি মুছে যাবে।
Cached Row Tables এবং In-Memory Tables এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Cached Row Tables | In-Memory Tables |
|---|---|---|
| ডেটা সংরক্ষণ | মেমরিতে ক্যাশে করা, ডিস্কে ডেটা সংরক্ষিত থাকে | শুধুমাত্র মেমরিতে সংরক্ষিত, ডিস্কে সংরক্ষণ নেই |
| পারফরম্যান্স | দ্রুত ডেটা অ্যাক্সেস, কিন্তু ডিস্ক I/O রয়েছে | অত্যন্ত দ্রুত, কোন ডিস্ক I/O নেই |
| ডেটা স্থায়িত্ব | টেবিলটি ডিস্কে থাকে, ডেটা স্থায়ী | টেবিলটি শুধুমাত্র সেশন চলাকালীন কার্যকর |
| ব্যবহার | বড় আকারের ডেটা অ্যাক্সেস এবং দ্রুত পারফরম্যান্স | টেস্টিং, প্রোটোটাইপ এবং দ্রুত পরিবর্তনশীল ডেটা |
উপসংহার
Cached Row Tables এবং In-Memory Tables H2 ডেটাবেজের পারফরম্যান্স উন্নত করার জন্য শক্তিশালী টুল। Cached Row Tables ডিস্কে ডেটা সংরক্ষণ করে তবে মেমরিতে দ্রুত অ্যাক্সেসের সুবিধা দেয়, অন্যদিকে In-Memory Tables পুরোপুরি RAM-এ ডেটা সংরক্ষণ করে এবং অতিরিক্ত দ্রুত পারফরম্যান্স প্রদান করে। দুটি ধরনের টেবিলই নির্দিষ্ট কাজের জন্য উপযুক্ত এবং আপনার অ্যাপ্লিকেশনের প্রয়োজন অনুসারে সেগুলি নির্বাচন করা উচিত।