সারণীর পরিবর্তে একটি ভিউ কখন ব্যবহার করবেন?


108

প্রকৃত টেবিলের উপরে দৃশ্যটি কখন ব্যবহার করা উচিত? এইটি উত্পাদন করার জন্য আমার কী লাভ আশা করা উচিত?

সামগ্রিকভাবে, কোনও টেবিলের উপরে ভিউ ব্যবহারের সুবিধা কী কী? ভিউটি প্রথম স্থানে দেখতে যেমনভাবে দেখা উচিত তেমনভাবে আমি কি টেবিলটি ডিজাইন করব না?

উত্তর:


80

ওহ আপনার অনেক বিবেচনা বিবেচনা করতে হবে are

নির্বাচনের জন্য দর্শন:

  1. ভিউগুলি টেবিলগুলির উপর বিমূর্ততা সরবরাহ করে। আপনি আপনার অন্তর্নিহিত স্কিমা পরিবর্তন না করে একটি দৃশ্যে সহজেই ক্ষেত্রগুলি যুক্ত / সরিয়ে ফেলতে পারেন
  2. মডেলগুলি জটিলভাবে সহজেই যোগ দিতে পারে।
  3. ভিউগুলি আপনার কাছ থেকে ডাটাবেস-নির্দিষ্ট জিনিসগুলি গোপন করতে পারে। যেমন আপনার যদি ওরাকলস SYS_CONTEXT ফাংশন বা অন্য অনেকগুলি জিনিস ব্যবহার করে কিছু পরীক্ষা করা দরকার che
  4. আপনি প্রকৃত টেবিলগুলির চেয়ে আপনার গ্র্যান্টগুলি সরাসরি ভিউতে সহজেই পরিচালনা করতে পারেন। যদি আপনি জানেন যে কোনও নির্দিষ্ট ব্যবহারকারী কেবলমাত্র একটি ভিউ অ্যাক্সেস করতে পারে তবে এটি পরিচালনা করা সহজ।
  5. পিছনে সামঞ্জস্যের সাথে দর্শনগুলি আপনাকে সহায়তা করতে পারে। আপনি অন্তর্নিহিত স্কিমা পরিবর্তন করতে পারেন, তবে দৃশ্যগুলি কোনও নির্দিষ্ট ক্লায়েন্টের কাছ থেকে সেই তথ্যগুলি লুকিয়ে রাখতে পারে।

সন্নিবেশ / আপডেটের জন্য দর্শনগুলি:

  1. আপনি সরাসরি ভিউতে ওরাকল এর "উইথ চেক অপশন" ধারা হিসাবে কার্যকারিতা ব্যবহার করে দর্শন সহ সুরক্ষা সমস্যাগুলি পরিচালনা করতে পারেন

অপূর্ণতা

  1. আপনি সম্পর্কের সম্পর্কে তথ্য হারাবেন (প্রাথমিক কীগুলি, বিদেশী কীগুলি)
  2. আপনি কোনও দৃশ্য সন্নিবেশ / আপডেট করতে সক্ষম হবেন কিনা তা স্পষ্ট নয়, কারণ ভিউটি তার থেকে অন্তর্নিহিত যোগদানগুলি আপনার কাছ থেকে লুকিয়ে রাখে

3
তাত্ক্ষণিক প্রশ্ন: দর্শনগুলি কি "স্থায়ী", বা সেগুলি কি কেবল অধিবেশনটির জীবন স্থায়ী করে? কারণ জিজ্ঞাসা করার জন্য: আমাদের একটি সিস্টেম রয়েছে যা কখনও কখনও দীর্ঘ কোড রানের মাঝখানে চলে যায়। আমি মধ্যবর্তী টেবিলগুলিতে কোডের অংশগুলি দংশনের মাধ্যমে এটি প্রশমিত করে যা মধ্যবর্তী ফলাফলগুলি সংরক্ষণ করে। সুতরাং কোডটি সম্পূর্ণ হওয়ার আগে যদি সিস্টেমটি কনক করে, তবে আমাকে কেবল সর্বশেষ সংরক্ষিত টেম্প টেবিল থেকে শুরু করতে হবে। আমি মতামত ব্যবহার করে যদি তারা একই স্থায়িত্বের প্রস্তাব দেয় তবে আমি স্যুইচ করতে পারি। অন্যথায় আমি ঠিক একই কাজ চালিয়ে যাব এবং রান শেষে টেম্পস বাদ দিচ্ছি। ধন্যবাদ!
ouonomos

8
@ অওনোমোস: একটি সাধারণ ভিউতে কোনও ডেটা থাকে না। এটি কেবলমাত্র একটি সঞ্চিত এসকিউএল বিবৃতি, অন্তর্নিহিত ডেটার উপর একটি দর্শন। কিছু ডাটাবেস (উদাঃ ওরাকল, পোস্টগ্রিসকিউএল) বস্তুগত দৃষ্টিভঙ্গি সমর্থন করে, যা দ্রুত অ্যাক্সেসের জন্য "ভিউ" সাময়িকভাবে অন্য টেবিলে সঞ্চয় করে। যখন ভিউ জটিল হয় তখন পঠনের অ্যাক্সেস দ্রুত করার জন্য এটি করা হয়। তবে এটি আপনাকে আপনার ক্ষেত্রে সহায়তা করে না কারণ একটি বস্তুগত দৃষ্টিভঙ্গি এখনও একটি দর্শন, নিজস্ব ডেটা নয়। আপনার পন্থা সম্ভবত ঠিক আছে।
লুকাশ এডার

44

দর্শনগুলি:

  • একটি জটিল টেবিল কাঠামো সরল করুন
  • সংবেদনশীল ডেটা ফিল্টার করার ও সহজ ফ্যাশনে অনুমতি নির্ধারণের মাধ্যমে আপনার সুরক্ষা মডেলকে সহজ করুন ify
  • আউটপুট কাঠামো পরিবর্তন না করেই আপনাকে যুক্তি ও আচরণ পরিবর্তন করার মঞ্জুরি দিন (আউটপুটটি একই থাকে তবে অন্তর্নিহিত নির্বাচনটি উল্লেখযোগ্যভাবে পরিবর্তন করতে পারে)
  • পারফরম্যান্স বাড়ান (এসকিউএল সার্ভার সূচী দর্শন)
  • এমন দৃশ্যের সাথে নির্দিষ্ট ক্যোয়ারী অপ্টিমাইজেশান অফার করুন যা অন্যথায় সংগ্রহ করতে অসুবিধা হতে পারে

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

এছাড়াও, "কোনও টেবিলের উপর দিয়ে ভিউ ব্যবহারের সুবিধা কী?" জিজ্ঞাসা করা কোনও দুর্দান্ত তুলনা নয়। আপনি টেবিল ছাড়া যেতে পারবেন না, তবে আপনি দর্শন ছাড়াই করতে পারেন। এগুলির প্রত্যেকেই একটি ভিন্ন কারণের জন্য বিদ্যমান। টেবিলগুলি কংক্রিটের মডেল এবং ভিউগুলি বিমূর্ত, ভাল, দেখুন,


1
+1 দর্শন আংশিকভাবে এমন একটি সরঞ্জাম যা আপনাকে সেই জটিলতা বিমূর্ত করার অনুমতি দিয়ে একটি দক্ষ, সাধারণীকরণ করা মডেল থেকে উদ্ভূত জটিলতাগুলি প্রশমিত করে।
মেঠোডস

34

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

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

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

ডেটাবেসগুলিকে সংশোধন করার সময় ভিউগুলি খুব সহায়ক।

আপনি যখন ভিউগুলিতে কল করতে দর্শনগুলি ব্যবহার করেন তখন দৃশ্যগুলি গ্রহণযোগ্য হয় না যার ফলস্বরূপ ভয়াবহ পারফরম্যান্স হতে পারে (কমপক্ষে এসকিউএল সার্ভারে)। আমরা প্রায় এক মিলিয়ন মিলিয়ন ডলার ক্লায়েন্টকে হারিয়েছি কারণ কেউ ডাটাবেসটিকে বিমূর্ত করতে পছন্দ করে যেভাবে এবং কার্য সম্পাদন ভয়াবহ এবং সময়সীমা ঘন ঘন ঘটে। পারফরম্যান্স ইস্যুটি পুরোপুরি আমাদের দোষ ছিল বলে আমাদের ক্লায়েন্টের জন্য নয়, ঠিক করার জন্যও আমাদের অর্থ দিতে হয়েছিল। যখন ভিউগুলি কল দেখায় তখন তাদের অন্তর্নিহিত ভিউটি সম্পূর্ণরূপে তৈরি করতে হয়। আমি এটি দেখেছি যেখানে ভিউটি এমন দৃশ্যের মতামতকে একটি ভিউ বলেছিল এবং তিনটি ব্যবহারকারীকে চূড়ান্তভাবে দেখার জন্য লক্ষ লক্ষ রেকর্ড তৈরি হয়েছিল। আমার মনে আছে এর মধ্যে একটি ভিউ রেকর্ডের একটি সাধারণ গণনা (*) করতে 8 মিনিট সময় নিয়েছিল। ভিউ কলিং দর্শন একটি অত্যন্ত দরিদ্র ধারণা।

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


1
কলিং ভিউয়ের সাথে পারফরম্যান্সের সমস্যা আছে তা জানেন না। অদ্ভুত লাগে। এটি কি সঠিকভাবে ক্যোয়ারী অপটিমাইজার দ্বারা পরিচালিত হয় না? আপনার ক্ষেত্রে এসকিউএল সার্ভারের কোন সংস্করণ ব্যবহৃত হয়েছিল?
প্যাট্রিক হনোরেজ

7

যখন আপনাকে বেশ কয়েকটি টেবিল থেকে নির্বাচন করতে হয় বা কেবল কোনও টেবিলের উপসেট পেতে হয় তখন দৃশ্যগুলি কার্যকর হয়।

আপনার টেবিলগুলি এমনভাবে ডিজাইন করা উচিত যাতে আপনার ডাটাবেসটি ভালভাবে স্বাভাবিক হয় (সর্বনিম্ন সদৃশ)। এটি অনুসন্ধান করা কিছুটা কঠিন করে তুলতে পারে।

ভিউগুলি কিছুটা পৃথকীকরণ, যাতে আপনি সারণীর চেয়ে টেবিলে ডেটা আলাদাভাবে দেখতে পারবেন to


7

একটি প্রচলিত অনুশীলন হ'ল ব্যবহারকারীকে আরও ডেনারমালাইজড ডেটা মডেল উপস্থাপন করার জন্য যোগদানের দৃষ্টিভঙ্গিতে লুকিয়ে থাকা। অন্যান্য ব্যবহারগুলি সুরক্ষার সাথে জড়িত (উদাহরণস্বরূপ কিছু কলাম এবং / বা সারিগুলি গোপন করে) বা কার্য সম্পাদন (বস্তুগত দৃশ্যের ক্ষেত্রে)


6

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


5

নাম হিসাবে সবার আগে প্রস্তাবিত একটি দৃশ্য পরিবর্তনযোগ্য। thats কারণ ভিউ ডিবিতে একটি সঞ্চিত ক্যোয়ারী থেকে তৈরি ভার্চুয়াল টেবিল ছাড়া অন্য কিছু নয়। এ কারণে আপনার দেখার কয়েকটি বৈশিষ্ট্য রয়েছে:

  • আপনি কেবলমাত্র ডেটার একটি উপসেট দেখাতে পারেন
  • আপনি একক ভিউতে একাধিক টেবিল যোগ দিতে পারেন
  • আপনি একটি ভিউতে ডেটা সংগ্রহ করতে পারেন (গণনা নির্বাচন করুন)
  • প্রকৃতপক্ষে ডেটা ধরে রাখুন দেখুন, তাদের কোনও টেবিল স্পেসের প্রয়োজন নেই কারণ এগুলি অন্তর্নিহিত সারণীর ভার্চুয়াল সমষ্টি

সুতরাং এমন এক গাজিলিয়ান ব্যবহারের কেস রয়েছে যার জন্য সারণীগুলির চেয়ে দর্শনগুলি আরও ভালভাবে সজ্জিত করা হয়েছে, কেবলমাত্র কোনও ওয়েবসাইটে সক্রিয় ব্যবহারকারীদের প্রদর্শন করার বিষয়ে ভাবুন। একটি দৃষ্টিভঙ্গি আরও ভাল হবে কারণ আপনি কেবলমাত্র আপনার ডিবিতে থাকা তথ্যের একটি উপসেটে পরিচালনা করেন (সক্রিয় এবং নিষ্ক্রিয় ব্যবহারকারী)

এই নিবন্ধটি দেখুন

আশা করি এটি সাহায্য করেছে ..


2

উইকিপিডিয়া অনুসারে ,

ভিউগুলি টেবিলগুলির উপরে অনেক সুবিধা সরবরাহ করতে পারে:

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

  • ভিউগুলি একক ভার্চুয়াল টেবিলটিতে একাধিক টেবিলগুলিতে যোগদান এবং সরল করতে পারে

  • ভিউগুলি একত্রিত সারণী হিসাবে কাজ করতে পারে , যেখানে ডাটাবেস ইঞ্জিন ডেটা (সমষ্টি, গড়, ইত্যাদি) একত্রিত করে এবং গণনার ফলাফলগুলি উপাত্তের অংশ হিসাবে উপস্থাপন করে।

  • ভিউগুলি ডেটার জটিলতা আড়াল করতে পারে । উদাহরণস্বরূপ, কোনও দৃশ্য বিক্রয় 2000000 বা বিক্রয়2001 হিসাবে উপস্থিত হতে পারে, স্বচ্ছভাবে আসল অন্তর্নিহিত টেবিলটিকে বিভাজন করে।

  • ভিউগুলি সঞ্চয় করতে খুব কম জায়গা নেয় ; ডাটাবেসটিতে কেবল একটি দর্শন সংজ্ঞা থাকে, এটি উপস্থাপিত সমস্ত ডেটার অনুলিপি করে না।

  • ব্যবহৃত এসকিউএল ইঞ্জিনের উপর নির্ভর করে ভিউগুলি অতিরিক্ত সুরক্ষা সরবরাহ করতে পারে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.