এসকিউএল ভিউগুলি ব্যবহার করার একটি ভাল কারণ কী?


102

আমি এসকিউএল সার্ভার ২০০৮ বাইবেলের মাধ্যমে পড়ছি এবং আমি ভিউ বিভাগটি কভার করছি। কিন্তু লেখক সত্যই মতামতের উদ্দেশ্য ব্যাখ্যা করে না । দর্শনের জন্য ভাল ব্যবহার কী? আমার এগুলি কি আমার ওয়েবসাইটে ব্যবহার করা উচিত এবং সেগুলির সুবিধা কী?


আপনি কি আমাকে "এসকিউএল সার্ভার ২০০৮ বাইবেল" বইয়ের ডাটাবেস ফাইলগুলি সরবরাহ করতে পারেন? লেখকের ওয়েবসাইট মারা গেছে এবং আমি তার কাছে পৌঁছাতে পারছি না।

উত্তর:


94

পূর্ববর্তী উত্তরগুলির কোনও উল্লেখ না করা বলে মনে হয় এমন আর একটি ব্যবহার হ'ল টেবিল কাঠামোর পরিবর্তনের সহজ স্থাপনা।

বলুন, আপনি T_OLDসক্রিয় ব্যবহারকারীদের জন্য ডেটাযুক্ত একটি টেবিলটি ( ) অবসর নিতে চান এবং পরিবর্তে একই জাতীয় ডেটা (নামযুক্ত T_NEW) সহ একটি নতুন টেবিল ব্যবহার করুন তবে একটি অতিরিক্ত কলাম সহ সক্রিয় এবং নিষ্ক্রিয় ব্যবহারকারীর উভয়ের জন্য ডেটা রয়েছে এমন একটি রয়েছে active

আপনার সিস্টেমে যদি গাজিলিয়ান কোয়েরি করে থাকে তবে আপনার SELECT whatever FROM T_OLD WHERE whateverকাছে রোল আউটের জন্য দুটি পছন্দ রয়েছে:

1) কোল্ড তুরস্ক - ডিবি পরিবর্তন করুন এবং একই সাথে কোয়েরিতে থাকা অসংখ্য কোডের টুকরোটি পরিবর্তন, পরীক্ষা করুন এবং প্রকাশ করুন। করা খুব কঠিন (বা এমনকি সমন্বয় করা) খুব ঝুঁকিপূর্ণ। খারাপ

2) ধীরে ধীরে - তৈরি করে ডিবি পরিবর্তন T_NEWটেবিল ড্রপ T_OLDটেবিল এর পরিবর্তে একটি তৈরি দেখুন নামক T_OLDযে নকল T_OLDটেবিল 100% (যেমন দৃশ্য ক্যোয়ারী হয় SELECT all_fields_except_active FROM T_NEW WHERE active=1)।

এটি আপনাকে বর্তমানে যে কোনও কোড নির্বাচন করে যা এখান থেকে নির্বাচন করে এবং অবসর সময়ে T_OLDকোডটি স্থানান্তরিত করতে পরিবর্তনগুলি এড়াতে সহায়তা করবে ।T_OLDT_NEW

এটি একটি সহজ উদাহরণ, আরও অনেকগুলি জড়িত রয়েছে।

পিএস অন্যদিকে, আপনার সম্ভবত সরাসরি জিজ্ঞাসার পরিবর্তে কোনও সঞ্চিত প্রক্রিয়া এপিআই থাকা উচিত ছিল T_OLD, তবে এটি সর্বদা ক্ষেত্রে হয় না।


4
আমি "সঞ্চিত প্রক্রিয়া এপিআই" শব্দটি সম্পর্কে জ্ঞাত ছিলাম
জেফ

দুঃখিত আমি পার্টিতে দেরি করে ফেলেছি, তবে পারফরম্যান্স সম্পর্কে কী হবে। যদি আমার মূল টেবিলটিতে যোগদানের প্রয়োজন হয় এবং এর পরিবর্তে আমি ভিউতে যোগ দেব, তবে এটি কি সেরা সম্পাদনার পরিকল্পনাটি ব্যবহার করবে?
জিকাটো

@ জিকাতো হ্যাঁ, এটি যদি একটি
সূচকিত

ভি শুভ ইঙ্গিত
আফনান আহমদ

47

(গুগল অনুসন্ধানে উঠে আসা প্রথম টিউটোরিয়ালটি অনুলিপি করেছেন (লিঙ্কটি এখন মৃত), তবে আমি নিজে নিজে টাইপ করে যাব এমন সমস্ত সুবিধা রয়েছে))

দর্শনগুলির নিম্নলিখিত সুবিধা রয়েছে:

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

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

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

এটি আমার বইয়ের 99% উত্তর।
জন স্টেডম্যান

বিটিডাব্লু @ ডেভিড ভাঙা লিঙ্ক
ম্যানুয়েল জর্ডান

শেষ কথা, আমরা কি এর জন্য কোনও টেম্প টেবিলটি ব্যবহার করতে পারি না?
জিচাও ওয়াং

16

উইকিপিডিয়া থেকে কিছু কারণ :

দর্শনগুলি টেবিলগুলির উপর সুবিধা প্রদান করতে পারে:

  1. ভিউগুলি একটি সারণীতে থাকা ডেটার একটি উপসেট উপস্থাপন করতে পারে
  2. ভিউগুলি একক ভার্চুয়াল টেবিলটিতে একাধিক টেবিলগুলিতে যোগদান এবং সরল করতে পারে
  3. ভিউগুলি একত্রিত সারণী হিসাবে কাজ করতে পারে , যেখানে ডাটাবেস ইঞ্জিন ডেটা (সমষ্টি, গড় ইত্যাদি) একত্রিত করে এবং গণনার ফলাফল উপাত্তের অংশ হিসাবে উপস্থাপন করে
  4. ভিউগুলি ডেটার জটিলতা আড়াল করতে পারে ; উদাহরণস্বরূপ কোনও দৃশ্য বিক্রয় 2000000 বা বিক্রয়2001 হিসাবে উপস্থিত হতে পারে, স্বচ্ছভাবে আসল অন্তর্নিহিত সারণিকে বিভাজন করে
  5. ভিউগুলি সঞ্চয় করতে খুব কম জায়গা নেয় ; ডাটাবেসে কেবল একটি দর্শন সংজ্ঞা থাকে, এটি উপস্থাপিত সমস্ত ডেটার অনুলিপি করে না
  6. ব্যবহৃত এসকিউএল ইঞ্জিনের উপর নির্ভর করে ভিউগুলি অতিরিক্ত সুরক্ষা সরবরাহ করতে পারে
  7. দর্শনগুলি কোনও টেবিল বা সারণীগুলির বহিরাগত বিশ্বে এক্সপোজারের ডিগ্রিকে সীমাবদ্ধ করতে পারে

14

দৃশ্যগুলি SELECT / CODE এর পুনরায় ব্যবহারযোগ্য বিভাগ হিসাবে ব্যবহার করা যেতে পারে, এতে যোগদানের জন্য অন্যান্য নির্বাচন / প্রশ্নগুলিতে অন্তর্ভুক্ত থাকতে পারে এবং প্রতিবার পুরো নির্বাচনটি পুনরায় তৈরি না করে বিভিন্ন ফিল্টার ব্যবহার করা যেতে পারে।

এটি একটি একক লোকেশনে যুক্তিও রাখে, যাতে আপনাকে কোডের ভিত্তিতে এটি পরিবর্তন করতে না হয়।

একটু দেখো

সঞ্চিত পদ্ধতি, ফাংশন, দর্শন, ট্রিগার, ইনলাইন এসকিউএল এর মধ্যে পছন্দ চয়ন করুন

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


6
এটি করতে খুব সাবধানতা অবলম্বন করুন। আপনি যদি এমন মতামত ব্যবহার করেন যা অন্য দেখায় call
এইচএলজিইএম

আপনি কোনও পদ্ধতি তৈরি করে এবং এসকিউএল কোয়েরিটি পদ্ধতির অভ্যন্তরে রেখে এটি করতে পারেন। এই পদ্ধতিটি প্রতিবার পুনরায় ব্যবহার করা যেতে পারে। তাহলে কেন দেখবেন ???
আশ্রম

11

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

এটি একটি ইন্টারফেস।


4
যতক্ষণ না আপনি আরও বিমূর্ততার জন্য দর্শনে মতামতগুলি স্ট্যাক করবেন না।
এইচএলজিইএম

আমি মনে করি আমি সম্পর্কিত ডাটাবেসে কোনও ধরণের বহুস্তর বিমূর্তিকে কার্যকরভাবে প্রত্যাখ্যান করেছি। এবং আমি সঞ্চিত পদ্ধতি থেকে সঞ্চিত পদ্ধতিগুলি কল করি না। :)
dkretz

3

কিছু মানদণ্ড দ্বারা সত্তা সীমাবদ্ধ করতে এখানে ভিউ ব্যবহারের একটি খুব সাধারণ ব্যবহার।

সারণী: USERS এ সমস্ত ব্যবহারকারী থাকে

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

এইভাবে, আপনি আপনার ব্যবহারকারীর পরিচালনা পৃষ্ঠাগুলিতে সারণীটি ব্যবহার করতে পারেন তবে বাকী অ্যাপ্লিকেশনগুলি ACTIVE_USERS ব্যবহার করতে পারে কারণ তারা কেবলমাত্র ব্যবহারকারী হতে পারে যেগুলি প্রক্রিয়াগুলি সম্পাদন করতে এবং ডেটা অ্যাক্সেস / পরিবর্তন করতে সক্ষম হতে পারে।


2

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


2

এখানে সরাসরি টেবিলের চেয়ে ভিউ ব্যবহারের কয়েকটি কারণ রয়েছে

  • সরলতা - জটিল প্রশ্নগুলি লুকানোর জন্য দর্শনগুলি ব্যবহার করা যেতে পারে।
  • সুরক্ষা - কিছু নির্বাচিত কলামগুলিতে ভিউ তৈরি করে ভিউ শেষ ব্যবহারকারী থেকে কিছু গুরুত্বপূর্ণ তথ্য আড়াল করতে পারে
  • সুরক্ষা - ভিউইউ ব্যবহার করে এর কাঠামো পরিবর্তন করতে সুরক্ষিত সারণী।
  • রিডানডেন্সি - সাধারণ ভিউ ব্যবহার করে প্রতিটি প্রক্রিয়া / ক্যোয়ারিতে রিডানড্যান্ট কোড হ্রাস করুন।
  • গণনা - সমস্ত গণনা একবার দেখার ক্যোয়ারিতে করা যেতে পারে।
  • অর্থপূর্ণ নাম - সারণীতে টিবিএল_অর্জি_ইম্প_আইডি এর মতো আইডিটির নাম থাকতে পারে যা [কর্মচারী নং] এর মতো উপনাম বা কোনও অর্থপূর্ণ নাম রাখতে পারে।

Imexploring.com থেকে


1

সাধারণ কারণ / ব্যবহারগুলির একটি ছোট তালিকা:

  • ডেটা ফর্ম্যাট বা 'চেহারা' পরিবর্তন করতে তাদের ব্যবহার করুন (যেমন আপনি প্রথম এবং শেষ নাম একসাথে যোগ দিতে পারেন)

    ডেটাতে গণনা বা অন্যান্য লুকআপ সম্পাদন করুন

    ড্যানোরালাইমালাইজ করুন (একাধিক টেবিল থেকে এক জায়গায় ডেটা উত্তোলন)


-6

মতামত খারাপ! সম্ভব হলে এগুলি এড়িয়ে চলুন এবং কেবল ডিভিকে - অস্থায়ী ডেটা মাইগ্রেশন দ্বারা উল্লিখিত কারণে ব্যবহার করুন।

আপনার বুঝতে হবে যে 100 টি টেবিল সহ একটি ডাটাবেসে প্রতিটি টেবিলের উদ্দেশ্য মনে রাখা শক্ত hard এখন, আপনি যদি এখানে আরও 300 টি ভিউ যুক্ত করেন তবে এটি সম্পূর্ণ জগাখিচুড়ি হয়ে যাবে। 'দেখুন প্রেমীরা' নেস্টেড ভিউগুলি ব্যবহার করে এবং তারপরে সজ্জিত পদ্ধতিতে নেস্টেড ভিউগুলি ব্যবহার করে। আমি ব্যক্তিগতভাবে এখন এমন একটি ডাটাবেস নিয়ে কাজ করি যেখানে 4 বার গভীরতার সাথে ভিউ রয়েছে! সুতরাং একটি সঞ্চিত পদ্ধতির সরলতম যুক্তি বোঝার জন্য আমাকে প্রথমে সমস্ত মতামতের মধ্য দিয়ে যেতে হবে।


8
-1 দর্শন ভাল। তারা করতে পারেন যদি আপনি তাদের অযথাযথভাবে ব্যবহার মন্দ হয়ে - কিন্তু যে ঠিক সম্পর্কে কিছু সত্যি।
নালুউজারএক্সসেপশন

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

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