মূল কন্টেন্টে যান
মডিউল 9 · 4-এর পাঠ 4কোর্সে 36/57~12 min
মডিউল পাঠ (4/4)

ভিউ এবং ডেটা বিমূর্ততা

আমাদের সমস্ত পাঠ জুড়ে আপনি লক্ষ্য করবেন যে প্রশ্নগুলি (বিশেষত জটিল JOINs বা GROUP BY এর মতো একত্রিতকরণ) দীর্ঘ এবং নিয়ম ও গণনার পরিপূর্ণ হতে শুরু করে৷

যদি সম্পূর্ণ ক্যোয়ারীটিকে মানসিকভাবে সংরক্ষণ করার এবং দৃশ্য থেকে আড়াল করার একটি উপায় থাকে, তখন থেকে ভান করে যে এটি সমস্ত উদ্দেশ্য এবং উদ্দেশ্যগুলির জন্য, DB এর একটি সাধারণ "টেবিল"?

দর্শনের জগতে স্বাগতম।

ভিউ তৈরি করুন

একটি ভিউ মূলত একটি স্থায়ী, যার নাম এসকিউএল কোয়েরি, কিন্তু এটি একটি "ভার্চুয়াল" টেবিলের মতো আচরণ করে!

SQL
CREATE VIEW user_spending AS
SELECT
  c.id,
  c.first_name,
  SUM(o.amount) as total_spent
FROM customers c
JOIN orders o ON c.id = o.customer_id
GROUP BY c.id;

সম্পন্ন ! এখন, সবসময় JOIN এবং GROUP BY পুনরায় করার পরিবর্তে, আপনাকে শুধু _সম্পূর্ণ স্বাভাবিক প্রশ্নগুলি লিখতে হবে:

SQL
SELECT * FROM user_spending WHERE total_spent > 100;
-- Postgres dietro le quinte richiamerà automaticamente la grande formula.

ভিউ এবং "রিয়েল-টাইম ডেটা"

একটি খুব সাধারণ পৌরাণিক ধারণা হল যে Views ডেটা নেয়, মূল্য বা র‌্যাঙ্কিংয়ের মতো যোগফল গণনা করে এবং একটি ফটোগ্রাফের মতো কিছু দুঃখজনক স্থায়ী স্ন্যাপশট তৈরি করে। ভুল (প্রায় সবসময়)! ডিফল্টরূপে, ভিউগুলি ভার্চুয়াল হয়: প্রতিবার আপনি আপনার সিলেক্টে একটি ভিউয়ের নাম রাখেন, পর্দার পিছনে পোস্টগ্রেস সেই সঠিক মিলিসেকেন্ডে DB-এর অবস্থার উপর ভিত্তি করে একটি রিয়েল-টাইম গণনা চালিয়ে আপনার অনুরোধকে একত্রিত করে। তাই আপনি কখনই বাসি ডেটা পড়বেন না।

তারা কি জন্য?

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

একটি দৃশ্য ড্রপিং

ঠিক টেবিলের মতো, যখন আর প্রয়োজন হয় না তখন আপনি DROP কমান্ড দিয়ে এগিয়ে যান:

SQL
DROP VIEW user_spending;

চেষ্টা করে দেখুন

ব্যায়াম#sql.m9.l4.e1
প্রচেষ্টা: 0লোড হচ্ছে...

'উচ্চ_মূল্য_পণ্য' নামে একটি ভিউ (ভিউ) তৈরি করুন। এটি অবশ্যই একটি ধারক হিসাবে আচরণ করতে হবে যা 'পণ্য' টেবিল থেকে 3টি প্রয়োজনীয় ক্ষেত্র (`id`, `নাম`, `মূল্য`) নির্বাচন করে, তবে শুধুমাত্র এবং সর্বদা সেই পণ্যগুলির জন্য যেগুলির 'মূল্য' 50.00-এর বেশি।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

লিখুন ভিউ ভিউ_নাম তৈরি করুন নির্বাচন করুন ... থেকে ... কোথায় ...

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ

একটি ভিউ কলিং

ব্যায়াম#sql.m9.l4.e2
প্রচেষ্টা: 0লোড হচ্ছে...

যেহেতু প্ল্যাটফর্মের প্রতিটি অনুশীলন একটি বিচ্ছিন্ন (এবং পরিষ্কার) পরিবেশে চালিত হয়, তাই এই ধাপে আগের দৃশ্যটি আর বিদ্যমান নেই। 'high_value_products' ভিউটি পুনরায় তৈরি করুন (এখনও পণ্যের মূল্য > 50 আছে) এবং তারপরে, অবিলম্বে নিম্নলিখিত লাইনে, এটি কাজ করে কিনা তা যাচাই করতে মূল্য হ্রাস (DESC) দ্বারা অর্ডার করা সমস্ত সামগ্রীর একটি SELECT চালান৷

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

ভুলবেন না; SQL স্টেটমেন্টের মধ্যে (এটি প্রথম লাইনের শেষে রাখুন)! এটি পোস্টগ্রেসকে ক্রমানুসারে 2টি কাজ সম্পাদন করতে দেয়।

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ