Database Tutorials SQL এ Views এবং Materialized Views

Database Tutorials - এসকিউএল সার্টিফিকেশন (SQL Certification)
444

Views এবং Materialized Views SQL-এ দুটি গুরুত্বপূর্ণ ধারণা যা ডেটাবেসে তথ্যের উপস্থাপন এবং পারফরম্যান্স অপ্টিমাইজেশনের জন্য ব্যবহৃত হয়। এগুলি মূলত ভিউ (View) এবং কনক্রিট ডেটা (Materialized Views) এর মধ্যে পার্থক্য নির্ধারণ করে।


1. Views (ভিউ)

View হল একটি ভার্চুয়াল টেবিল যা আসলে ডেটাবেসে সংরক্ষিত কোনো প্রকৃত ডেটা ধারণ করে না। এটি মূলত একটি SQL কুয়েরি যার মাধ্যমে আপনি একাধিক টেবিল বা ডেটার অংশ নিয়ে একটি যৌথ উপস্থাপনা তৈরি করতে পারেন। ভিউ তৈরি করার মূল উদ্দেশ্য হল:

  • ডেটার সহজ উপস্থাপনা প্রদান করা,
  • নিরাপত্তা বা অনুমতির জন্য ডেটা অ্যাক্সেস সীমাবদ্ধ করা,
  • এবং কোড পুনরায় ব্যবহারযোগ্য (reusable) করা।

View আসলে একটি কুয়েরি রেজাল্টের মতো কাজ করে, কিন্তু এটি স্টোর করা হয় এবং ব্যবহার করা যায় যেমন একটি টেবিলের মতো।

View তৈরি করা (Create View)

CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;

উদাহরণ:

ধরা যাক, আপনার একটি employees টেবিল রয়েছে এবং আপনি একটি ভিউ তৈরি করতে চান যা শুধুমাত্র department থেকে কর্মচারীদের তথ্য দেখাবে:

CREATE VIEW department_employees AS
SELECT employee_id, name, department
FROM employees
WHERE department = 'Sales';

এখন আপনি department_employees ভিউটি ব্যবহার করতে পারেন যেমন এটি একটি টেবিল:

SELECT * FROM department_employees;

এটি শুধুমাত্র সেলস বিভাগের কর্মচারীদের তথ্য রিটার্ন করবে।

View এর সুবিধা:

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

View এর সীমাবদ্ধতা:

  • প্যারফরম্যান্স: প্রতিবার যখন ভিউ এক্সিকিউট করা হয়, তখন ডেটাবেসকে মূল টেবিল থেকে ডেটা ফেচ করতে হয়, যা বড় বড় ডেটাসেটে পারফরম্যান্স সমস্যা সৃষ্টি করতে পারে।

2. Materialized Views (মেটেরিয়ালাইজড ভিউ)

Materialized View একটি বিশেষ ধরনের ভিউ যা মূলত ডেটা সঞ্চয় করে এবং এটি ডেটাবেসে ফিজিক্যালি সংরক্ষিত থাকে। মেটেরিয়ালাইজড ভিউ মূলত একটি কুয়েরির রেজাল্টকে স্টোর করে রাখে, যাতে ভবিষ্যতে ঐ রেজাল্টকে পুনরায় জেনারেট না করতে হয়। এটি সাধারণত তখন ব্যবহার করা হয় যখন খুব বড় এবং কমপ্লেক্স কুয়েরি চলানোর ফলে পারফরম্যান্স সমস্যা হতে পারে।

Materialized View তৈরি করা (Create Materialized View)

CREATE MATERIALIZED VIEW materialized_view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;

উদাহরণ:

ধরা যাক, আপনি একটি মেটেরিয়ালাইজড ভিউ তৈরি করতে চান যা sales_data টেবিল থেকে কিছু পরিসংখ্যান সংগ্রহ করবে:

CREATE MATERIALIZED VIEW total_sales AS
SELECT SUM(amount) AS total_sales_amount, department
FROM sales_data
GROUP BY department;

এখন, মেটেরিয়ালাইজড ভিউ total_sales সংরক্ষিত ডেটা সরবরাহ করবে, যার মাধ্যমে প্রতিবার কুয়েরি চালানোর বদলে এক্সিকিউটেড ফলাফল দ্রুত পাওয়া যাবে।

Materialized View এর সুবিধা:

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

Materialized View এর সীমাবদ্ধতা:

  • স্টোরেজ প্রয়োজন: মেটেরিয়ালাইজড ভিউতে ডেটা সংরক্ষণ করা হয়, তাই এটি স্টোরেজ স্পেস নষ্ট করতে পারে।
  • আপডেট করা প্রয়োজন: যখন মূল টেবিলের ডেটা পরিবর্তিত হয়, তখন মেটেরিয়ালাইজড ভিউকে পুনঃনির্মাণ বা রিফ্রেশ করা প্রয়োজন, যা সময়সাপেক্ষ হতে পারে। বিভিন্ন DBMS সিস্টেমে রিফ্রেশ পলিসি ভিন্ন হতে পারে (যেমন, স্বয়ংক্রিয় বা ম্যানুয়াল রিফ্রেশ)।

ভিউ এবং মেটেরিয়ালাইজড ভিউ এর মধ্যে পার্থক্য

দিকViewMaterialized View
ডেটা সংরক্ষণডেটা সংরক্ষণ করা হয় না; এটি একটি ভার্চুয়াল টেবিল।ডেটা সংরক্ষণ করা হয় এবং ফিজিক্যালি স্টোর করা হয়।
পারফরম্যান্সবারবার কুয়েরি এক্সিকিউট হতে হয়, তাই বড় ডেটাসেটে পারফরম্যান্স সমস্যা হতে পারে।দ্রুত ফলাফল পাওয়া যায় কারণ এটি পূর্বে রিফ্রেশ করা ডেটা ধারণ করে।
রিফ্রেশকোনও রিফ্রেশ প্রক্রিয়া নেই।ডেটা রিফ্রেশ করতে হয় (স্বয়ংক্রিয় বা ম্যানুয়াল)।
স্টোরেজস্টোরেজ প্রভাবিত হয় না।স্টোরেজ স্পেস প্রয়োজন হয়।

সংক্ষেপে:

  • View: ভার্চুয়াল টেবিল, যা মূল টেবিল থেকে ডেটা সরাসরি নিয়ে আসে এবং কোনো ডেটা সংরক্ষণ করে না।
  • Materialized View: ডেটা স্টোর করে রাখে এবং দ্রুত ফলাফল প্রদান করে, তবে এটি আপডেট বা রিফ্রেশ করা প্রয়োজন।

উপযুক্ত ক্ষেত্রে View এবং Materialized View ব্যবহৃত হতে পারে, তবে পারফরম্যান্স এবং স্টোরেজ প্রয়োজনের উপর ভিত্তি করে নির্বাচিত করা উচিত।

Content added By

Views কী এবং কেন ব্যবহার করা হয়?

359

Views SQL এর একটি বিশেষ ধরণ যা একটি ভার্চুয়াল টেবিল হিসেবে কাজ করে। এটি একটি কুয়েরি যা ডেটাবেসের এক বা একাধিক টেবিল থেকে তথ্য SELECT স্টেটমেন্টের মাধ্যমে প্রদর্শন করে, কিন্তু প্রকৃতপক্ষে কোনো ডেটা স্টোর করে না। একটি ভিউ ডেটাবেসের সঠিক ডেটা প্রকাশ করার জন্য ব্যবহৃত হয় এবং ব্যবহারকারীদের সঠিক দৃষ্টিকোণ থেকে ডেটা অ্যাক্সেস করতে সাহায্য করে।

এটি মূলত SQL কুয়েরির একটি সংজ্ঞা, যা টেবিল বা অন্যান্য ভিউ থেকে ডেটা ক্যাপচার করে এবং এটি পরবর্তী সময়ে সহজে ব্যবহারযোগ্য করে তোলে।


Views এর গঠন:

CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;
  • view_name: ভিউটির নাম।
  • SELECT statement: যে কুয়েরিটি ভিউটির ভিত্তি হিসেবে কাজ করবে।

Views এর কার্যপ্রণালী:

  1. Virtual Table: ভিউ একটি ভার্চুয়াল টেবিল, এটি নিজে কোনো ডেটা ধারণ করে না। এটি মূলত একটি কুয়েরি যা টেবিল থেকে ডেটা তুলে আনে, এবং ভিউটি মূল ডেটার উপর কোনো পরিবর্তন করে না।
  2. Data Access Layer: ভিউ ব্যবহারকারীদের ডেটা এক্সেস করতে একটি সুরক্ষিত এবং সহজ উপায় প্রদান করে। একাধিক টেবিল থেকে জটিল কুয়েরি করতে না গিয়ে, শুধু ভিউয়ের মাধ্যমে সহজেই ডেটা পেতে পারেন।
  3. Security: ভিউ ডেটাবেসে একাধিক টেবিল থেকে সংযুক্ত তথ্য সরবরাহ করতে পারে এবং গুরুত্বপূর্ণ কলামগুলিকে লুকিয়ে রাখতে পারে। এতে ব্যবহারকারী শুধুমাত্র প্রয়োজনীয় ডেটা দেখতে পায় এবং স্পর্শকাতর ডেটা সুরক্ষিত থাকে।

Views কেন ব্যবহার করা হয়?

  1. ডেটা অ্যাবস্ট্রাকশন (Data Abstraction):
    • ভিউ ডেটাবেসের ডেটার সাথে সরাসরি যোগাযোগ না করে, শুধু প্রয়োজনীয় তথ্য প্রদর্শন করে। এটি ব্যবহারকারীদের কাছে ডেটাবেসের জটিলতা লুকাতে সাহায্য করে।
    • উদাহরণ: ডেটাবেসে একাধিক টেবিল থাকতে পারে, কিন্তু ভিউ ব্যবহারকারীকে শুধুমাত্র এক বা দুটি টেবিলের কমপ্লেক্স কনসোলিডেটেড ডেটা দেখাতে পারে।
  2. কমপ্লেক্স কুয়েরি সহজতর করা:
    • ভিউ ব্যবহার করা হলে বার বার একই জটিল কুয়েরি লিখতে হয় না। একবার ভিউ তৈরি করার পর, সহজ SELECT কুয়েরি ব্যবহার করে সেই ডেটা পাওয়া যায়।
    • উদাহরণ: বহু টেবিল থেকে JOIN করা কুয়েরি বারবার লিখতে না গিয়ে, আপনি একটি ভিউ তৈরি করতে পারেন এবং তারপর সেই ভিউ ব্যবহার করে ডেটা এক্সেস করতে পারেন।
  3. ডেটাবেস সিকিউরিটি:
    • ভিউ ব্যবহার করে, আপনি শুধুমাত্র নির্দিষ্ট ডেটা ব্যবহারকারীর কাছে প্রকাশ করতে পারেন এবং বাকি ডেটা লুকিয়ে রাখতে পারেন।
    • উদাহরণ: আপনি একটি ভিউ তৈরি করতে পারেন যা শুধুমাত্র একটি টেবিলের নির্দিষ্ট কলাম দেখাবে এবং অন্য কলামগুলো লুকিয়ে রাখবে।
  4. ডেটা এক্সেস নিয়ন্ত্রণ:
    • ভিউ ব্যবহার করে ডেটাবেস অ্যাক্সেস সহজে নিয়ন্ত্রণ করা যায়। আপনি অনুমতি দিতে পারেন শুধুমাত্র নির্দিষ্ট ভিউগুলোর মাধ্যমে ডেটা এক্সেস করার জন্য।
  5. ডেটাবেসের পারফরম্যান্স উন্নতি:
    • একাধিক জটিল কুয়েরি বারবার চালানোর পরিবর্তে, একটি ভিউ দিয়ে তা একত্রে তৈরি করা যায়। তবে, বেশ কিছু ভিউ স্বয়ংক্রিয়ভাবে ইন্ডেক্স তৈরি করে না, তাই পারফরম্যান্সের দিক থেকে সাবধানতা অবলম্বন করা উচিত।

Views এর উদাহরণ:

ধরা যাক, আপনার দুটি টেবিল রয়েছে:

  1. employees (কর্মচারী)
    • employee_id, name, salary, department_id
  2. departments (বিভাগ)
    • department_id, department_name

এখন, আপনি একটি ভিউ তৈরি করতে চান যা প্রতিটি কর্মচারীর নাম এবং তার বিভাগ নাম দেখাবে।

CREATE VIEW employee_department_view AS
SELECT e.name, d.department_name
FROM employees e
JOIN departments d ON e.department_id = d.department_id;

এখন, আপনি এই ভিউ থেকে ডেটা SELECT করতে পারবেন সহজে:

SELECT * FROM employee_department_view;

এই কুয়েরিটি কর্মচারীদের নাম এবং তাদের বিভাগ নাম দেখাবে, কিন্তু এখানে টেবিল employees এবং departments সরাসরি এক্সেস করতে হবে না।


Views এর কিছু সীমাবদ্ধতা:

  1. ডেটা আপডেট করা কঠিন হতে পারে:
    • কিছু ভিউ শুধুমাত্র তথ্য প্রদর্শনের জন্য তৈরি করা হয় এবং তাদের মাধ্যমে ডেটা আপডেট করা কঠিন বা অসম্ভব হতে পারে।
    • বিশেষত যদি ভিউটি একাধিক টেবিল বা জটিল কুয়েরি ব্যবহার করে, তখন তা আপডেট বা ইনসার্ট করা খুবই জটিল হয়ে ওঠে।
  2. পারফরম্যান্স:
    • ভিউটি যখনই ব্যবহার করা হয়, তখন মূল কুয়েরি পুনরায় সম্পাদিত হয়। এটি কিছুক্ষেত্রে পারফরম্যান্সের জন্য বিরক্তিকর হতে পারে, বিশেষ করে যদি ভিউটি অনেক বড় বা জটিল হয়।
  3. ভিউর মাধ্যমে কনস্ট্রেইন্ট প্রয়োগ করা সম্ভব নয়:
    • ভিউয়ের মাধ্যমে কনস্ট্রেইন্ট (যেমন: PRIMARY KEY, FOREIGN KEY) প্রয়োগ করা যায় না, এটি শুধুমাত্র ডেটা রিডিংয়ের উদ্দেশ্যে ব্যবহৃত হয়।

নিষ্কর্ষ:

ভিউগুলি SQL ডেটাবেসে ডেটা এক্সেস, ডেটা সিকিউরিটি এবং ডেটাবেস ব্যবস্থাপনাকে সহজতর করার জন্য ব্যবহৃত হয়। এটি ডেটার অ্যাবস্ট্রাকশন প্রদান করে এবং ডেটাবেসের জটিলতা লুকিয়ে রাখতে সাহায্য করে।

Content added By

Simple এবং Complex Views তৈরি করা

280

Views হল একটি ভার্চুয়াল টেবিল, যা একটি বা একাধিক টেবিলের ডেটা থেকে তৈরি হয়। View-এ সংরক্ষিত কুয়েরি সাধারণত ডেটাবেসের স্টোরড কুয়েরি হিসেবে কাজ করে, যা বাস্তবিকভাবে ডেটা সংরক্ষণ না করেও সহজে ডেটা প্রদর্শন করে। Views মূলত ব্যবহারকারী বা অ্যাপ্লিকেশনকে ডেটাবেসের জটিলতা লুকানোর জন্য এবং বিশেষভাবে কাস্টমাইজড ডেটা প্রদর্শনের জন্য ব্যবহৃত হয়।

  • Simple View: একটি Simple View সাধারণত একটি একক টেবিলের উপর ভিত্তি করে তৈরি হয় এবং এতে কোন জটিল লজিক, অ্যাগ্রিগেট ফাংশন বা যুক্তি (joins) ব্যবহার করা হয় না। এটি একেবারে সরল কুয়েরি দিয়ে তৈরি হয়।
  • Complex View: একটি Complex View একাধিক টেবিলের মধ্যে সম্পর্ক স্থাপন করে, যেখানে একাধিক টেবিলের JOIN, Aggregation Functions (যেমন: COUNT, SUM, AVG), GROUP BY, এবং অন্যান্য জটিল লজিক ব্যবহৃত হয়।

১. Simple View তৈরি করা

একটি Simple View তৈরি করতে, সাধারণত একটি টেবিলের উপর SELECT কুয়েরি ব্যবহার করা হয়। এটি খুব সহজ এবং সরল কুয়েরি হতে পারে।

উদাহরণ:

ধরা যাক, আপনার একটি employees টেবিল রয়েছে এবং আপনি একটি সিম্পল ভিউ তৈরি করতে চান যা শুধু name এবং salary কলাম প্রদর্শন করবে।

CREATE VIEW simple_employee_view AS
SELECT name, salary
FROM employees;

এখন, আপনি simple_employee_view ভিউটি ব্যবহার করে employees টেবিলের name এবং salary কলামগুলো দেখতে পারবেন:

SELECT * FROM simple_employee_view;

এটি employees টেবিল থেকে name এবং salary কলাম প্রদর্শন করবে।


২. Complex View তৈরি করা

একটি Complex View তৈরি করতে, একাধিক টেবিলের মধ্যে সম্পর্ক স্থাপন করতে হবে, যেখানে JOIN, GROUP BY, এবং Aggregation Functions ব্যবহার করা হয়।

উদাহরণ:

ধরা যাক, আপনার দুটি টেবিল রয়েছে: employees এবং departments, এবং আপনি এমন একটি ভিউ তৈরি করতে চান যা employees টেবিল থেকে কর্মচারীদের নাম এবং তাদের বিভাগ অনুসারে মোট স্যালারি দেখাবে।

employees টেবিল:

employee_idnamesalarydepartment_id
1John5000101
2Alice6000102
3Bob5500101

departments টেবিল:

department_iddepartment_name
101HR
102IT

Complex View তৈরি করা:

CREATE VIEW complex_salary_view AS
SELECT e.name, d.department_name, e.salary
FROM employees e
JOIN departments d ON e.department_id = d.department_id;

এখন, আপনি complex_salary_view ভিউটি ব্যবহার করে কর্মচারীদের নাম, বিভাগ এবং তাদের স্যালারি দেখতে পারবেন:

SELECT * FROM complex_salary_view;

এই কুয়েরি নিম্নলিখিত আউটপুট দিবে:

namedepartment_namesalary
JohnHR5000
AliceIT6000
BobHR5500

Views-এর কিছু অন্যান্য বৈশিষ্ট্য

  1. Read-Only Views: কিছু ভিউ শুধুমাত্র ডেটা দেখতে ব্যবহৃত হয় এবং সেখানে আপডেট বা ডিলিট করা যায় না। এক্ষেত্রে ভিউটি Read-Only হয়।
  2. Updatable Views: কিছু ভিউ আপডেটযোগ্য হতে পারে যদি তা সরাসরি টেবিলের ডেটা থেকে তৈরি হয় এবং এতে শুধুমাত্র এক টেবিলের ডেটা থাকে। তবে, যদি ভিউয়ে JOIN বা Aggregation থাকে, তবে তা সাধারণত আপডেটযোগ্য হবে না।
  3. Materialized Views: কিছু ডেটাবেস সিস্টেমে Materialized Views ব্যবহার করা হয়, যা ভিউয়ের ডেটা প্রকৃতপক্ষে স্টোর করে। এটি তখন তৈরি করা হয় যখন আপনি ডেটার গতিশীল পরিবর্তন চান না এবং ভিউটির ডেটা কোস্টি হিসেবে সংরক্ষণ করতে চান।

Conclusion

  • Simple View: সাধারণভাবে একটি একক টেবিল থেকে তথ্য রিটার্ন করে, সাধারণ SELECT কুয়েরি ব্যবহার করে তৈরি করা হয়।
  • Complex View: একাধিক টেবিলের মধ্যে সম্পর্ক স্থাপন করে, যেখানে JOIN, Aggregation Functions, এবং Grouping করা হয়।

Views ডেটাবেসের জটিলতা কমিয়ে আনে এবং ব্যবহারকারীদের জন্য ডেটা সহজলভ্য ও সহজভাবে প্রদর্শন করতে সহায়তা করে।

Content added By

Views এর মাধ্যমে Data Security নিশ্চিত করা

296

Views হল SQL-এ একটি ভার্চুয়াল টেবিল যা ডেটাবেসের একটি বা একাধিক টেবিল থেকে নির্বাচিত ডেটা প্রদর্শন করে, তবে এটি মূল টেবিলের ডেটাকে পরিবর্তন করে না। Views মূলত ডেটার একটি নির্দিষ্ট অংশ বা ফিল্টারকৃত ডেটা প্রদর্শন করার জন্য ব্যবহার করা হয়। Views এর মাধ্যমে ডেটা সুরক্ষা (Data Security) নিশ্চিত করা সম্ভব, কারণ এটি ব্যবহারকারীদের সম্পূর্ণ টেবিলের ডেটা অ্যাক্সেস করতে দেয় না, বরং শুধুমাত্র প্রয়োজনীয় ডেটা প্রদর্শন করে।

Views-এর মাধ্যমে Data Security নিশ্চিত করতে হলে, নির্দিষ্ট ক্ষেত্রে নিম্নলিখিত কৌশলগুলি ব্যবহার করা যেতে পারে:


১. Data Masking (Sensitive Data Hide করা)

ডেটাবেসে সংবেদনশীল তথ্য যেমন পাসওয়ার্ড, ক্রেডিট কার্ড নম্বর, সামাজিক সিকিউরিটি নম্বর ইত্যাদি থাকে, যা সাধারণভাবে সরাসরি প্রদর্শন করা উচিত নয়। একটি View তৈরি করে শুধুমাত্র প্রয়োজনীয় কলাম বা ডেটা প্রকাশ করা যায় এবং বাকি অংশ গোপন রাখা যায়।

উদাহরণ:

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

CREATE VIEW employee_info AS
SELECT employee_id, name, position
FROM employees;

এখন, employee_info ভিউটি ব্যবহারকারীদের পাসওয়ার্ড ছাড়া কর্মচারীদের আইডি, নাম এবং পদ দেখানোর অনুমতি দেবে।


২. Role-based Data Access Control (ভূমিকা অনুযায়ী ডেটা অ্যাক্সেস)

SQL Views ব্যবহার করে আপনি Role-based Access Control (RBAC) বাস্তবায়ন করতে পারেন। RBAC হল এমন একটি কৌশল যেখানে নির্দিষ্ট ব্যবহারকারীদের নির্দিষ্ট ভূমিকার ভিত্তিতে ডেটা অ্যাক্সেস অনুমতি দেওয়া হয়। Views ব্যবহার করে, আপনি ভিন্ন ভিন্ন ব্যবহারকারীদের জন্য ডেটার বিভিন্ন অংশ তৈরি করতে পারেন।

উদাহরণ:

ধরা যাক, আপনার ডেটাবেসে দুটি ভূমিকা রয়েছে: HR Manager এবং Regular EmployeeHR Manager-এর জন্য আপনি একটি View তৈরি করবেন যা সমস্ত কর্মচারী সম্পর্কিত তথ্য দেখাবে, কিন্তু Regular Employee-এর জন্য আপনি শুধু তাদের নিজের তথ্যই দেখতে পারবেন।

-- HR Manager এর জন্য View
CREATE VIEW hr_employee_info AS
SELECT employee_id, name, position, salary
FROM employees;

-- Regular Employee এর জন্য View
CREATE VIEW employee_info AS
SELECT employee_id, name, position
FROM employees
WHERE employee_id = CURRENT_USER();

এখানে CURRENT_USER() ফাংশনটি ব্যবহারকারী যারা লগইন করেছেন তাদের ID অনুযায়ী ডেটা ফিরিয়ে দেবে, ফলে তারা শুধুমাত্র নিজের তথ্য দেখতে পারবেন।


৩. Sensitive Data Filtering

View ব্যবহার করে ডেটাবেসের সেনসিটিভ তথ্যকে সরিয়ে ফেলা এবং শুধুমাত্র নিরাপদ ডেটা প্রদর্শন করার মাধ্যমে Data Filtering করা যায়। এটি বিশেষত ব্যবহারকারীদের নির্দিষ্ট ডেটার এক্সেস সীমাবদ্ধ করতে সহায়ক।

উদাহরণ:

যেমন, আপনি যদি কর্মচারীদের salary তথ্য গোপন রাখতে চান তবে আপনি একটি View তৈরি করতে পারেন যা শুধু name, position এবং hire_date দেখাবে, কিন্তু salary গোপন রাখবে।

CREATE VIEW employee_overview AS
SELECT employee_id, name, position, hire_date
FROM employees;

এখন employee_overview ভিউটির মাধ্যমে ব্যবহারকারীরা শুধুমাত্র নাম, পদ এবং নিয়োগ তারিখ দেখতে পাবে, কিন্তু তারা salary বা অন্যান্য সংবেদনশীল তথ্য অ্যাক্সেস করতে পারবে না।


৪. Limiting Data Visibility by Department or Region

Views ব্যবহার করে আপনি ডেটা অ্যাক্সেস আরও সীমিত করতে পারেন, যাতে ব্যবহারকারী কেবল তাদের জন্য প্রাসঙ্গিক ডেটা দেখতে পান। উদাহরণস্বরূপ, যদি আপনি একটি বৃহৎ সংস্থার ডেটাবেসে বিভিন্ন বিভাগ বা অঞ্চলের জন্য আলাদা ডেটা অ্যাক্সেস দিতে চান, তবে আপনি প্রতিটি বিভাগের জন্য পৃথক ভিউ তৈরি করতে পারেন।

উদাহরণ:

ধরা যাক, একটি employees টেবিল আছে, যেখানে কর্মচারীদের বিভাগের ভিত্তিতে ডেটা সংরক্ষিত রয়েছে। আপনি Sales বিভাগের কর্মচারীদের তথ্য দেখতে একটি ভিউ তৈরি করতে পারেন।

CREATE VIEW sales_employee_info AS
SELECT employee_id, name, position
FROM employees
WHERE department = 'Sales';

এখন sales_employee_info ভিউ ব্যবহারকারী শুধুমাত্র Sales বিভাগের কর্মচারীদের তথ্য দেখতে পাবেন।


৫. Read-Only Views

Views এর মাধ্যমে Read-only Access প্রদান করা সম্ভব, যাতে ব্যবহারকারীরা ডেটা দেখতে পারেন কিন্তু পরিবর্তন করতে পারবেন না। এই ধরনের Views সাধারণত ডেটা অ্যাক্সেস সুরক্ষিত করার জন্য ব্যবহৃত হয়।

উদাহরণ:

যদি আপনি চান যে শুধুমাত্র ডেটা দেখার জন্য একটি ভিউ তৈরি করা হোক এবং পরিবর্তন না করা হোক, তবে এই ধরনের একটি View তৈরি করা যেতে পারে:

CREATE VIEW read_only_employee_info AS
SELECT employee_id, name, position, salary
FROM employees;

এখন, যদি ব্যবহারকারী read_only_employee_info ভিউয়ের মাধ্যমে ডেটা অ্যাক্সেস করে, তারা শুধুমাত্র ডেটা দেখতে পারবেন, কিন্তু ডেটাতে কোন পরিবর্তন করতে পারবেন না।


উপসংহার:

SQL Views ব্যবহার করে আপনি ডেটাবেসে সুরক্ষা এবং ডেটার অ্যাক্সেস কন্ট্রোল নিশ্চিত করতে পারেন। ভিউয়ের মাধ্যমে আপনি:

  • Sensitive Data গোপন রাখতে পারেন।
  • Role-based access নিয়ন্ত্রণ করতে পারেন।
  • ডেটার visibility সীমিত করতে পারেন।
  • Read-only অ্যাক্সেস প্রদান করতে পারেন।

Views ব্যবহার করে আপনি ডেটা অ্যাক্সেসের গোপনীয়তা এবং নিরাপত্তা নিশ্চিত করতে পারেন, যা ডেটাবেস ব্যবস্থাপনার জন্য একটি গুরুত্বপূর্ণ টুল।

Content added By

Materialized Views এর ব্যবহার এবং পার্থক্য

325

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 এর মধ্যে পার্থক্য

বৈশিষ্ট্যViewMaterialized 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 প্রয়োজন, বিশেষত যখন ডেটা অনেক বড় এবং কুয়েরি খুব বেশি সময় নেয়।

Content added By
Promotion

Are you sure to start over?

Loading...