Views এবং Materialized Views দুটি SQL ডেটাবেসের গুরুত্বপূর্ণ ধারণা, যা ডেটাবেসের মধ্যে তথ্য পরিচালনার জন্য ব্যবহৃত হয়। তবে তাদের কার্যকারিতা এবং ব্যবহারের দিক থেকে কিছু পার্থক্য রয়েছে।
১. View কী?
View হলো একটি ভার্চুয়াল টেবিল, যা একটি SQL কুয়েরি বা SELECT স্টেটমেন্টের ফলাফল ধারণ করে। এটি কোন ডেটা সংরক্ষণ করে না, বরং কেবলমাত্র কুয়েরির মাধ্যমে ডেটাবেসের ডেটা প্রদর্শন করে। যখনই View এর উপর কোনো কুয়েরি চলে, এটি মূল টেবিল বা টেবিলগুলির ডেটা থেকে সোজাসুজি তথ্য তুলে এনে রিটার্ন করে।
View এর বৈশিষ্ট্য:
- Real-time data: View-এর মাধ্যমে প্রদর্শিত ডেটা সর্বদা ডেটাবেসে বাস্তবসম্মত, কারণ এটি কেবল ডেটাবেসের বর্তমান তথ্যের রেফারেন্স।
- No storage: View কোন ডেটা সংরক্ষণ করে না, এটি শুধুমাত্র SQL কুয়েরির ফলাফল রিটার্ন করে।
View তৈরির Syntax:
CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;
২. Materialized View কী?
Materialized View হল একটি ডেটাবেস অবজেক্ট যা নির্দিষ্ট সময় অন্তর ডেটার কপি তৈরি করে এবং সেই কপি সংরক্ষণ করে। এটি মূলত View এর মতো, কিন্তু এখানে ডেটা মূল টেবিলের থেকে কপি করা হয় এবং সেভ করা থাকে। ফলে, যখন Materialized View এর উপর কুয়েরি চলে, তখন তা আগে থেকে সংরক্ষিত ডেটার উপর কাজ করে, যা প্রায়ই খুব দ্রুত ফলাফল দেয়। Materialized View এর ডেটা রিফ্রেশ করা হয়, যখন নির্দিষ্ট সময় পর সেটি আপডেট করতে হয়।
Materialized View এর বৈশিষ্ট্য:
- Precomputed data: Materialized View সঞ্চিত ডেটা থেকে রিটার্ন হয়, ফলে কুয়েরি দ্রুত ফলাফল প্রদান করে।
- Storage: এটি ডেটা সংরক্ষণ করে এবং সিস্টেমে সঞ্চিত থাকে, তাই স্টোরেজ স্পেস প্রয়োজন।
- Periodic Refresh: Materialized View এর ডেটা পুনরায় রিফ্রেশ করার প্রক্রিয়া থাকে, যা নির্দিষ্ট সময় অন্তর হতে পারে।
Materialized View তৈরির Syntax:
CREATE MATERIALIZED VIEW materialized_view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;
৩. Views এবং Materialized Views এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | View | Materialized View |
|---|---|---|
| ডেটা সংরক্ষণ | ডেটা সংরক্ষণ করে না, এটি কেবল কুয়েরি ফলাফল | ডেটা সংরক্ষণ করে, সিস্টেমে সংরক্ষিত থাকে |
| প্রদর্শিত ডেটা | সদা আপডেটেড, প্রতিবার কুয়েরি চললে বাস্তবসম্মত তথ্য | স্ন্যাপশট, নির্দিষ্ট সময় পর রিফ্রেশ করা হয় |
| পারফরম্যান্স | তুলনামূলকভাবে ধীর, কারণ প্রতিবার ডেটাবেসে কুয়েরি চালাতে হয় | দ্রুত, কারণ ডেটা আগে থেকেই সঞ্চিত থাকে |
| রিফ্রেশ | আপডেট হয় স্বয়ংক্রিয়ভাবে, যখন কুয়েরি চলে | নিয়মিত বা নির্দিষ্ট সময় অন্তর রিফ্রেশ করতে হয় |
| ব্যবহার | যখন রিয়েল-টাইম ডেটা দরকার বা যখন ডেটাবেসে কম পরিবর্তন হয় | যখন ডেটা একাধিক বার রি-আকসেস করা হয় এবং পারফরম্যান্স গুরুত্বপূর্ণ |
| স্টোরেজ স্পেস | কোন স্টোরেজ স্পেস লাগে না | স্টোরেজ স্পেস প্রয়োজন, কারণ ডেটা সংরক্ষিত থাকে |
৪. Materialized Views এর ব্যবহার
Materialized View সাধারণত ব্যবহৃত হয় যখন:
- কম সময়ের মধ্যে ডেটা রিটার্ন করা প্রয়োজন: যেখানে ডেটার পুনরাবৃত্তি কুয়েরি পরিচালনা করা হয় এবং পারফরম্যান্স গুরুত্বপূর্ণ।
- বিশাল ডেটাবেসের সাথে কাজ করা: বিশাল ডেটাসেট নিয়ে কাজ করার সময়, যেখানে সাধারণ View ব্যবহার করলে প্রতিবার কুয়েরি চালানোর সময় সময়ের অপচয় হতে পারে।
- ফ্রিকোয়েন্ট ক্যালকুলেশন বা অ্যাগ্রিগেশন: যদি কোনো ক্যালকুলেশন বা অ্যাগ্রিগেট ফাংশন নিয়মিতভাবে চলে, তবে Materialized View দিয়ে তা প্রি-ক্যালকুলেট করা সহজ।
উদাহরণ:
ধরা যাক, একটি sales টেবিল আছে এবং আমরা এই টেবিল থেকে মাসিক বিক্রয় সংগ্রহের একটি Materialized View তৈরি করতে চাই। এই কুয়েরিটি সাধারণভাবে অনেক সময় নেবে, কিন্তু Materialized View দিয়ে আমরা দ্রুত ফলাফল পেতে পারব।
CREATE MATERIALIZED VIEW monthly_sales AS
SELECT EXTRACT(MONTH FROM sale_date) AS month,
SUM(amount) AS total_sales
FROM sales
GROUP BY EXTRACT(MONTH FROM sale_date);
এটি মাসিক বিক্রয়ের মোট পরিমাণ একটি Materialized View-এ সংরক্ষণ করবে। পরবর্তীতে, কেবল এই Materialized View থেকে ডেটা রিটার্ন করা যাবে, যা খুব দ্রুত হবে।
Refresh Materialized View:
Materialized View এর ডেটা সঠিক রাখতে, আমরা এটি পুনরায় রিফ্রেশ করতে পারি।
REFRESH MATERIALIZED VIEW monthly_sales;
এটি Materialized View এর ডেটা রিফ্রেশ করবে এবং নতুন ডেটা জমা হবে।
উপসংহার
- Views সাধারণত real-time ডেটা শো করার জন্য ব্যবহার করা হয় এবং এটি storage নেবে না।
- Materialized Views সঞ্চিত ডেটা ব্যবহার করে দ্রুত ফলাফল প্রদান করে এবং storage প্রয়োজন হয়।
- Materialized Views এর refresh প্রক্রিয়া সঠিক সময় পর আপডেট করা হয়।
Materialized Views উপকারী হতে পারে যখন আপনাকে দ্রুত ফলাফল এবং performance optimization প্রয়োজন, বিশেষত যখন ডেটা অনেক বড় এবং কুয়েরি খুব বেশি সময় নেয়।
Read more