রিলেশনাল ডাটাবেসের জন্য উদাহরণস্বরূপ পোস্টগ্র্রেএসকিউএল-এর কি আমার সত্যিই ট্রিগার দরকার?


10

আমি জানি যে ট্রিগারগুলি ডাটাবেসকে সামঞ্জস্য রাখতে স্টোর হওয়া ডেটা বৈধকরণ করতে ব্যবহার করা যেতে পারে। তবে, ডাটাবেসে স্টোর করার আগে অ্যাপ্লিকেশন দিকের ডেটা বৈধকরণ কেন সম্পাদন করবেন না?

উদাহরণস্বরূপ, আমরা ক্লায়েন্ট সঞ্চয় করি এবং আমরা কিছু বৈধতা সম্পাদন করতে চাই যা সহজেই ডিডিএল স্তরে করা যায় না। https://severalnines.com/blog/postgresql-triggers-and-stored-function-basics

আর একটি উদাহরণ নিরীক্ষা।

হালনাগাদ

কীভাবে ট্রিগার এবং ডাটাবেস লেনদেন একসাথে কাজ করে। উদাহরণস্বরূপ, যদি আমি dataোকানো হচ্ছে তথ্যের বৈধতা সম্পাদন করতে চাই। এটি একটি লেনদেনের ভিতরে সম্পন্ন হয়। এর আগে কী ঘটে: লেনদেন প্রতিশ্রুতিবদ্ধ হয় বা ট্রিগার কার্যকর করা হয়?


However, why not perform validation of data on the application side before storing them into the database?ভাল, এই দুটি পারস্পরিক একচেটিয়া নয়। সম্ভবত আপনি উভয় পক্ষের বিভিন্ন জিনিসকে বৈধতা দেবেন। অ্যাপ্লিকেশন পক্ষের বৈধতা ব্যবসায়িক কেন্দ্রিক হলেও, ডাটাবেসের বৈধতাগুলি ডেটা-কেন্দ্রিক বেশি। বিভিন্ন এবং বিভিন্ন অ্যাপ্লিকেশন দ্বারা খাওয়ানো একটি ডাটাবেস ভাবেন।
লাইভ

আপনার কি কোনও বাহ্যিক উত্স থেকে ডেটা toোকানো দরকার যা আপনার সিস্টেমে কেবল নির্বোধ ডেটা করছে? যদি তা হয় তবে আপনার ক্ষেত্রে এমন মামলা থাকতে পারে যেখানে আপনার পরে সংশোধনের জন্য একটি অবৈধ ফর্ম্যাটে ডেটা needোকানো দরকার। এই ক্ষেত্রে, ট্রিগারগুলি অন্তহীন সমস্যা সৃষ্টি করবে। এই মনে রাখবেন। কখনও কখনও আপনি একটি ট্রিগার কার্যকর করা চান না
গ্রেগ বার্গার্ট

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

@ গ্রেগবার্গার্ড্ট বেশিরভাগ ডাটাবেসে বিবৃতি থাকে যা এই ধরণের ক্রিয়াকলাপের জন্য ট্রিগারগুলি অক্ষম করতে ব্যবহার করতে পারে।
blrfl

1
@ ব্লারফ্লাল: হ্যাঁ, তবে আপনাকে সচেতন হওয়া দরকার যে এই সংঘাতগুলি সমস্ত সংযুক্ত ব্যবহারকারীদের জন্য অস্থায়ীভাবে অক্ষম করা যেতে পারে, যখন আপনি কেবলমাত্র বর্তমান অধিবেশনটির জন্য শর্তসাপেক্ষে এই চেকগুলি অক্ষম করতে চান।
গ্রেগ বার্গার্ট

উত্তর:


12

আপনি কোন ধরণের অ্যাপ্লিকেশন সিস্টেম তৈরি করছেন তার উপর এটি নির্ভর করে:

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

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

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

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

এই পুরানো এসই পোস্টটিও দেখুন: অ্যাপ্লিকেশন লজিক বনাম ডিবি ডাটাবেস পরিষ্কারের জন্য ট্রিগার

সুতরাং আপনি নিজেই সিদ্ধান্ত নিন আপনি কোন ধরণের সিস্টেম তৈরি করছেন, তারপরে ট্রিগারগুলি যদি আপনার ক্ষেত্রে সঠিক সরঞ্জাম হয় বা না হয় তবে আপনি একটি ভিত্তিযুক্ত সিদ্ধান্ত নিতে পারেন।


3

আমি মনে করি প্রশ্নটি ডেটার মানের জন্য দায়বদ্ধতা সম্পর্কিত।

উত্তরটি আপনি কীভাবে সিস্টেমটি দেখেন তার উপর নির্ভর করে।

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

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

উভয় দৃষ্টিতে পরবর্তী প্রশ্নটি হ'ল কীভাবে কোনও ফ্যান্সি ফাইল বা পৃথক পরিষেবা হিসাবে ডাটাবেসের ব্যবহারকে সমর্থন করতে হয়। আপনি এটি দ্বারা অর্জন করতে পারেন:

  • ডাটাবেস প্ল্যাটফর্মটি টেবিল / দর্শন / সঞ্চিত পদ্ধতি / ট্রিগার / ইত্যাদি আকারে সরবরাহ করে এমন সরঞ্জামগুলি ব্যবহার করে ...
  • ডাটাবেস অ্যাক্সেস করার জন্য সমস্ত ক্লায়েন্টকে অবশ্যই ব্যবহার করা উচিত এমন একটি পরিষেবার মধ্যে ডাটাবেসটি নিজেই মোড়ানো
  • একটি লাইব্রেরিতে ডাটাবেস মোড়ানো যা ডেটা অ্যাক্সেস করার জন্য অবশ্যই সমস্ত ক্লায়েন্টদের দ্বারা ব্যবহার করা উচিত।

প্রত্যেকে তার নিজস্ব উপকারিতা / কনস নিয়ে আসে এবং সিস্টেমের মধ্যে পরিচালিত পরিবেশের স্থাপত্য সীমাবদ্ধতার উপর নির্ভর করে।

আপনি যে দৃষ্টিতেই যান না কেন এটি সর্বদা সীমানায় ডেটা বৈধ করার জন্য অর্থ প্রদান করে।

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

প্রতিটি সীমানায় কতটা বৈধতা যাচাই করা হয় এটি নির্ভর করে না যে এটি কতটা ঝুঁকিপূর্ণ তার উপর নির্ভর করে।

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

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

1
@ জোয়েরিসেবার্টস ঠিক আছে, আমি কামড় দেব: একটি ডাটাবেসে অদৃশ্য যুক্তি কেন একটি অ্যান্টিপ্যাটার্ন, এবং এটি আলাদাভাবে রক্ষণাবেক্ষণের প্রোগ্রামে রাখার চেয়ে এন্টিপ্যাটার্নকে আরও কী করে তোলে?
ব্লারফ্লায়

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

@ জোরিসিবার্টস আমি সম্মতি দিয়েছি যে বেশিরভাগ ডেটাবেস প্ল্যাটফর্মগুলি একটি বিশ্বাসযোগ্য, কার্যকর এবং বিকাশ-সক্ষম এপিআই বাস্তবায়নের জন্য দু: খজনক সরঞ্জাম সরবরাহ করে। অনেক উপায়ে এটি অবশ্যই অনেক ব্যথা অনুভব করার একটি আমন্ত্রণ। আমার বক্তব্যটি হ'ল এটি দৃষ্টিভঙ্গির বিষয়ে, বুঝতে পেরে যে ডিবি একটি অভিনব ফাইল, বা এটি সত্যিকার অর্থে একটি পৃথক পরিষেবা পরবর্তী প্রশ্নের দিকে নিয়ে যায় যা কীভাবে সেই মোড়কে কীভাবে ব্যবহার করা যায় সেই স্টাইলের ব্যবহারকে সমর্থন করতে পারে। আমি আমার উত্তরটি সে সম্পর্কে পরিষ্কার করে বিস্তারিত জানাব।
Kain0_0

2

না, আপনাকে বৈধতা দেওয়ার জন্য কখনই ট্রিগার ব্যবহার করা উচিত নয়।

ডাটাবেসটি কেবল তার নিজস্ব অখণ্ডতার জন্য দায়ী। বৈধতার মুখোমুখি যে কোনও ব্যবহারকারীর আপনার অ্যাপ্লিকেশন দ্বারা সঞ্চালন করা উচিত।

ডেটাবেসগুলি অখণ্ডতার জন্য বৈধতার তিনটি স্তর সম্পাদন করে। প্রথমটি হ'ল মাঠ পর্যায়ের বৈধতা। একটি ক্ষেত্র প্রয়োজন হতে পারে, যদি মান (নাল) না থাকে তবে এটি ত্রুটি। এটি একটি চেক সীমাবদ্ধতাও হতে পারে; একটি ডোমেনের একটি সংখ্যা গণনা করা হয়।

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

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

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


কেবল এটি যুক্ত করতে চেয়েছিলেন যে যদি ওপিতে অ্যাকোমপ্লেক্স বৈধতা নিয়ম যুক্ত করতে হয় যা ডাটাবেসে থাকতে হয় তবে তিনি সর্বদা সুরক্ষিত বিকল্প হিসাবে সঞ্চিত পদ্ধতি ব্যবহার করতে পারেন।
বোরজব

@ বোরজব: সম্ভবত ডাটাবেস সঠিক রাখার ক্ষেত্রে বৈধতা। কিন্তু ব্যবহারকারী বৈধতার মুখোমুখি? নং
মেন্নো হ্যালসার

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

@ ডকব্রাউন পার্থক্য হ'ল ডেটাবেসকে দুর্নীতি থেকে রক্ষা করা এবং ব্যবহারকারীকে বৈধতার মুখোমুখি করা। সুতরাং "আরও কোনও বৈধকরণ" এ আমি ব্যবহারকারীর বৈধতার মুখোমুখি হই। আমি কীভাবে এই পার্থক্যটি আরও স্পষ্ট করে বলতে পারি? শুরু হিসাবে আমি "আরও" সরিয়েছি।
মেন্নো হালসার

2
এটি ডাটাবেসে বৈধতা দেওয়া পুরোপুরি ঠিক আছে। ঠিক যেমন আবেদনে এটি করা ঠিক fine উভয়েরই রয়েছে তাদের সুবিধা। অ্যাপ্লিকেশনটিতে আপনার যাচাইকরণের অর্থ হ'ল আপনার ওআরএম ব্যতীত এসকিউএল চালানোর সময় আপনাকে প্রতি যত্নবান হতে হবে যা প্রায় প্রতিটি জটিল অ্যাপ্লিকেশনটির জন্য প্রয়োজন।
কিওয়ার্টি

1

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

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


1

কারণ প্রশ্নটি হচ্ছে যে আমাদের যদি সত্যিকারের সম্পর্কিত ডেটাবেসগুলির জন্য ট্রিগারগুলির প্রয়োজন হয় তবে অন্য কিছু ব্যবহারের ক্ষেত্রে যেখানে ট্রিগারগুলি ব্যবহার করতে হবে:

  1. অন্যান্য উত্তরে বর্ণিত নিরীক্ষণের জন্য।
  2. বৃহত্তর অর্থে নিরীক্ষণ: একটি ডাটাবেস এন্ট্রি পরিবর্তন করা হয় একটি ট্রিগার asychroneous পোস্ট প্রসেসিং জন্য ইভেন্টটি রেকর্ড করতে পারে, উদাহরণস্বরূপ অন্য অ্যাপ্লিকেশন রাতের রফতানি।
  3. দেখার জন্য ট্রিগার: ট্রিগারগুলি সংজ্ঞায়িত করা যায় instead of। এই গড়ের সাহায্যে কেউ একটি ভিউ থেকে প্রবেশের প্রবেশ সন্ধান করতে, আপডেট করতে এবং মুছতে পারে delete ট্রিগাররা এই ক্রিয়াগুলি একাধিক টেবিলগুলিতে ছড়িয়ে দিতে পারে। অন্তর্নিহিত টেবিলগুলির বিশদটি প্রকাশ না করে একটি সীমাবদ্ধ দৃষ্টিভঙ্গি উপলব্ধ করার এই উপায়।
  4. স্পষ্টভাবে ডাটাবেস ঘুরিয়ে ঘুরিয়ে আনার জন্য: টেবিল A ​​এবং B এবং একটি মধ্যবর্তী টেবিল আর এর মধ্যে একটি N: এম সম্পর্ক ধরে নিন আপনি আর থেকে A তে বিদেশী কী সীমাবদ্ধতাগুলি সংজ্ঞায়িত করতে পারবেন পাশাপাশি বি নির্দিষ্ট করে যে আর এর প্রবেশদ্বারটি যদি বাদ দেওয়া হয় তবে বি এ সম্পর্কিত এন্ট্রি মুছে ফেলা হয়। যাইহোক, ব্যবসায়ের যুক্তি কখনও কখনও আবশ্যক যে এ এ এন্ট্রি বি বি প্রবেশের সাথে কমপক্ষে একটি সম্পর্ক থাকতে হবে। এই ক্ষেত্রে আর মুছে ফেলার একটি ট্রিগার এই যুক্তি প্রয়োগ করতে সহায়তা করতে পারে: যদি এ এন্ট্রি এর জন্য আর এ শেষ প্রবেশের জন্য মুছে ফেলা হয় তার পরে ট্রিগারটি এ মুছে ফেলতে পারে অ্যাপ্লিকেশন কেন্দ্রিক দৃশ্যে কমপক্ষে দুটি টার্নের চারপাশে প্রয়োজনীয়। এটি বৈধতার জন্য উদাহরণ। অন্যান্য উদাহরণগুলি অনুধাবনযোগ্য: ব্যবহারের ক্ষেত্রে (1), (2),
  5. বিশ্বাস: কখনও কখনও ডাটাবেস প্রশাসকরা আপনার অ্যাপ্লিকেশনটি ব্যবহার না করে কমান্ড লাইনে প্রবেশ পরিবর্তন করে change প্রশাসকরা সাবধানতার সাথে কাজ করে এবং তারা কী করে তা জানে। তবে, কখনও কখনও তারা ভুল হতে পারে। যদি ধারাবাহিকতা গুরুতর হয় তবে ট্রিগার হ'ল তাদের সুরক্ষা বেল্ট।

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

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