এসকিউএল স্টোরড প্রস বনাম কোড [বদ্ধ] রাখার পক্ষে কী কী উপকারিতা রয়েছে?


274

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

এখন পর্যন্ত আমার কাছে রয়েছে:

কোডের জন্য সুবিধা:

  • বজায় রাখা সহজ - কোয়েরিগুলি আপডেট করার জন্য কোনও এসকিউএল স্ক্রিপ্ট চালানোর দরকার নেই
  • অন্য ডিবিতে পোর্ট করা সহজ - কোনও পোর্টে পোর্টস নেই

সঞ্চিত procs জন্য সুবিধা:

  • কর্মক্ষমতা
  • নিরাপত্তা

50
আপনি এটিও যুক্তি দিতে পারেন যে স্টোরকৃত প্রকসগুলি রক্ষণাবেক্ষণকে আরও সহজ করে তোলে - কেবল একটি ক্যোয়ারী পরিবর্তন করতে আপনাকে পুরো অ্যাপ্লিকেশনটিকে পুনরায় স্থাপন করার দরকার নেই।
ড্যারেন গসবেল

27
@ জিভিএস: এটি আপনার প্রতিষ্ঠানের কর্মহীনতা, সেরা অনুশীলন নয়। অবশ্যই 1000 এর চেয়ে 1 জায়গায় জিনিস পরিবর্তন করা সহজ The ডিবিএগুলি সিস্টেমে অশ্বারোহী পরিবর্তনগুলি রোধ করার জন্য কেবল তাদের ভূমিকা পালন করছে, এবং এটিকে সম্মান করা উচিত।
জেরেমি হলোভাকস

উত্তর:


179

আমি সঞ্চিত পদ্ধতির ভক্ত নই

সঞ্চিত পদ্ধতিগুলি আরও রক্ষণাবেক্ষণযোগ্য কারণ: * আপনি যখনই কিছু এসকিউএল পরিবর্তন করতে চান তখন আপনাকে আপনার সি # অ্যাপটি পুনরায় সংকলন করতে হবে না *

আপনি যখনই ডেটাটাইপগুলি পরিবর্তন করেন বা আপনি কোনও অতিরিক্ত কলাম বা যে কোনও কিছু ফিরিয়ে দিতে চান তবে এটিকে পুনরায় সংযুক্ত করে ফেলবেন। আপনার অ্যাপ্লিকেশনটির নীচে থেকে এসকিউএলকে 'স্বচ্ছভাবে' পরিবর্তন করতে পারার সংখ্যা পুরোপুরি বেশ ছোট

  • আপনি এসকিউএল কোডটি পুনরায় ব্যবহার করছেন।

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

কোড পুনরাবৃত্তি হ'ল আপনি যখন একটি রক্ষণাবেক্ষণযোগ্য অ্যাপ্লিকেশন তৈরি করার চেষ্টা করছেন তখন আপনি সবচেয়ে খারাপ কাজ করতে পারেন!

সম্মত, যে কারণে সঞ্চিতপ্রক্সগুলি একটি খারাপ জিনিস। এসকিউএল এর ... এসকিউএল ব্লকগুলির চেয়ে ফাংশনগুলিতে কোডটি ছোট করে ছোট করা (ছোট ছোট ভাগে বিভক্ত) কোডটি রিফ্যাক্টর এবং পচন করা খুব সহজ?

আপনার কাছে ৪ টি ওয়েবসर्ভার এবং একত্রে উইন্ডোজ অ্যাপ্লিকেশন রয়েছে যা একই এসকিউএল কোডটি ব্যবহার করে এখন আপনি বুঝতে পেরেছেন যে এসকিউএল কোডের সাথে একটি ছোট সমস্যা আছে তাই আপনি বরং ...... 1 টি জায়গায় প্রোক পরিবর্তন করুন বা কোডটি সকলের দিকে ঠেলে দিন ওয়েবসভারগুলি, সমস্ত উইন্ডোজ বাক্সে সমস্ত ডেস্কটপ অ্যাপ্লিকেশনগুলি (ক্লিকোনস সহায়তা করতে পারে) পুনরায় ইনস্টল করুন

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

সুতরাং, 1 টি নতুন স্প্রোক, বা 4 টি নতুন ওয়েবসারভার ধাক্কা দেবেন?

এই ক্ষেত্রে এটি হল এক নতুন sproc ধাক্কা সহজ, কিন্তু আমার অভিজ্ঞতা, 'ধাক্কা পরিবর্তন' এর 95% কোড এবং ডাটাবেসের প্রভাবিত। যদি আপনি সেই মাসে 20 টি জিনিস ওয়েবসভারগুলিতে এবং 1 টি ডাটাবেসগুলিতে চাপ দিচ্ছেন, তবে আপনি যদি তার পরিবর্তে 21 টি জিনিস ওয়েবসাররে এবং ডাটাবেসে শূন্য করে থাকেন তবে আপনি খুব কমই হারাবেন lose

আরও সহজে কোড পর্যালোচনা।

আপনি কিভাবে ব্যাখ্যা করতে পারেন? আমি এই না। বিশেষত স্প্রোকগুলি সম্ভবত উত্স নিয়ন্ত্রণে নেই এবং তাই ওয়েব-ভিত্তিক এসসিএম ব্রাউজারগুলির মাধ্যমে অ্যাক্সেস করা যায় না।

আরও কনস:

স্টোরডপ্রসগুলি ডাটাবেসে লাইভ করে যা বাইরের বিশ্বের কাছে একটি কালো বক্স হিসাবে উপস্থিত হয়। এগুলি উত্স নিয়ন্ত্রণে রাখতে চাওয়ার মতো সাধারণ জিনিসগুলি একটি দুঃস্বপ্ন হয়ে যায়।

নিছক প্রচেষ্টার বিষয়টিও রয়েছে। এটা একটা মধ্যে ভেঙ্গে সবকিছু জানার জন্য হতে পারে মিলিয়ন স্তরে কোন মাত্র অতিরিক্ত donkeywork হলে আপনি আপনার প্রধান নির্বাহী কর্মকর্তা থেকে ন্যায্যতা কেন এটা শুধু তাদের 7 মিলিয়ন ডলার খরচ কিছু ফোরামে গড়ে তুলতে চেষ্টা করছেন, কিন্তু অন্যথায় প্রতি সামান্য জিনিস একটি storedproc তৈরি সুবিধা।


99

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

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

কোয়েরিগুলি কোডে দাখিল করা হয় এবং কোনও কেন্দ্রে থাকে না, অবস্থান পরিচালনা করতে সহজ হয় যখন উত্পাদন ডেটাবেসগুলিকে টিউন করা অত্যন্ত কঠিন হতে পারে।

[সম্পাদনা] এখানে আরও একটি বর্তমান আলোচনা


47

আমার মতে আপনি এই প্রশ্নে হ্যাঁ বা না কোনও পক্ষে ভোট দিতে পারবেন না। এটি সম্পূর্ণরূপে আপনার আবেদনের নকশার উপর নির্ভর করে।

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

(Pseudocode)

Function createOrder(Order yourOrder) 
Begin
  Call SP_createOrder(yourOrder)
End

সুতরাং শেষ পর্যন্ত আপনার মাঝারি স্তরটি খুব শীতল 4 সার্ভার ক্লাস্টারে চলছে তাদের প্রত্যেককে 16 টি সিপিইউস দিয়ে সজ্জিত করা হয়েছে এবং এটি আসলে কিছুই করবে না! কি অপচয়!

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


44

কোডের জন্য সুবিধা:

  • বজায় রাখা সহজ - কোয়েরিগুলি আপডেট করার জন্য কোনও এসকিউএল স্ক্রিপ্ট চালানোর দরকার নেই
  • অন্য ডিবিতে পোর্ট করা সহজ - কোনও পোর্টে পোর্টস নেই

আসলে, আমি মনে করি আপনার এটি পিছনের দিকে আছে। আইএমএইচও, কোডে এসকিউএল বজায় রাখতে ব্যথা হয় কারণ:

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

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

এটি বলেছে যে, স্টু আমার আগে বলেছিল হিসাবে সঞ্চিত প্রকল্পগুলির পারফরম্যান্স লাভটি ন্যূনতম এবং আপনি কোনও সঞ্চিত পদ্ধতিতে একটি ব্রেক পয়েন্ট রাখতে পারবেন না (এখনও)।


33

, CON

আমি দেখতে পেয়েছি যে সঞ্চিত প্রক্রিয়াগুলির অভ্যন্তরে প্রচুর প্রক্রিয়াকরণ করা আপনার ডিবি সার্ভারকে আপনার অ্যাক্সেসের স্কেলিংয়ের ক্ষেত্রে একক বিন্দুতে পরিণত করবে না।

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

অনুকূল

  1. এটি মূল্যবান হতে পারে তার জন্য পারফরম্যান্স (ডিবি ড্রাইভারের দ্বারা ক্যোয়ারী পার্সিং / পরিকল্পনা বিনোদনের ইত্যাদি এড়ানো)
  2. ডেটা ম্যানিপুলেশনটি সি / সি ++ / সি # কোডটিতে এম্বেড করা হয়নি যার অর্থ আমার কাছে কম স্তরের কোড দেখতে হবে। এসকিউএল হ'ল কম ভার্জোজ এবং আলাদাভাবে তালিকাভুক্ত হওয়ার পরে দেখতে সহজ।
  3. বিচ্ছেদের কারণে লোকেরা এসকিউএল কোডটি সহজেই খুঁজে পেতে এবং পুনরায় ব্যবহার করতে সক্ষম হয়।
  4. স্কিমা পরিবর্তিত হওয়ার সাথে সাথে জিনিসগুলি পরিবর্তন করা সহজ - আপনাকে কেবল কোডে একই আউটপুট দিতে হবে এবং এটি ঠিক কাজ করবে
  5. একটি পৃথক ডাটাবেসে পোর্ট করা সহজ।
  6. আমি আমার সঞ্চিত পদ্ধতিতে পৃথক অনুমতিগুলির তালিকা করতে পারি এবং সেই স্তরেও অ্যাক্সেস নিয়ন্ত্রণ করতে পারি।
  7. আমি আমার ডেটা ট্রান্সফর্মেশন কোড থেকে আলাদা করে আমার ডেটা ক্যোয়ারী / জেদী কোডটি প্রোফাইল করতে পারি।
  8. আমি আমার সঞ্চিত পদ্ধতিতে পরিবর্তনযোগ্য শর্তগুলি বাস্তবায়িত করতে পারি এবং গ্রাহক সাইটে এটি কাস্টমাইজ করা সহজ হবে।
  9. আমার কোডের অভ্যন্তরে যেখানে আমাকে সেগুলি সন্ধান করতে হবে তার চেয়ে আমার স্কিমা এবং বিবৃতিগুলি একসাথে রূপান্তর করতে কিছু স্বয়ংক্রিয় সরঞ্জাম ব্যবহার করা সহজ হয়ে যায়।
  10. আপনার যদি একক ফাইলের মধ্যে সমস্ত ডেটা অ্যাক্সেস কোড থাকে তখন ডেটা অ্যাক্সেসের জন্য সর্বোত্তম অনুশীলনগুলি নিশ্চিত করা সহজ - আমি অ-পারফরম্যান্ট টেবিলটি অ্যাক্সেস করে এমন প্রশ্নের জন্য বা চেক করতে পারি যা সিরিয়ালাইজেশনের উচ্চ স্তরের ব্যবহার করে বা কোডগুলিতে * এর নির্বাচন করে etc ।
  11. স্কিমার পরিবর্তনগুলি / ডেটা ম্যানিপুলেশন লজিক পরিবর্তনগুলি সন্ধান করা সহজ হয়ে যায় যখন এগুলি সব একটি ফাইলে তালিকাভুক্ত থাকে।
  12. এসকিউএল সম্পাদনাগুলি একই জায়গায় থাকাকালীন অনুসন্ধান করা এবং প্রতিস্থাপন করা সহজ হয়ে যায় যেমন সমস্ত সঞ্চিত প্রোক্সের জন্য লেনদেনের বিচ্ছিন্নতার বিবৃতি পরিবর্তন / যুক্ত করুন।
  13. আমি এবং ডিবিএ লোকটি দেখতে পাচ্ছি যে ডিবিএ যখন আমার এসকিউএল স্টাফটি পর্যালোচনা করে তখন আলাদা এসকিউএল ফাইল থাকা সহজ / সুবিধাজনক।
  14. অবশেষে আপনাকে এসকিউএল ইঞ্জেকশন আক্রমণগুলির বিষয়ে চিন্তা করার দরকার নেই কারণ আপনার দলের কিছু অলস সদস্য এম্বেডড স্কলগুলি ব্যবহার করার সময় প্যারামিট্রাইজড কোয়েরি ব্যবহার করেনি।

22

সঞ্চিত পদ্ধতিগুলির জন্য পারফরম্যান্স সুবিধা প্রায়শই উপেক্ষিত।

সঞ্চিত পদ্ধতিগুলির জন্য আরও সুবিধা:

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

16

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

ডেটা মডেলের সাথে আঁটসাঁট মিলনে আমার খুব বেশি সমস্যা নেই কারণ আমি দেখতে পাচ্ছি না যে এই মিলনটি সত্যিই ভাঙ্গা সম্ভব where একটি অ্যাপ্লিকেশন এবং এর ডেটা সহজাতভাবে মিলিত হয়।


13

সঞ্চিত পদ্ধতি

যদি কোনও ত্রুটি পিছলে যায় বা যুক্তি কিছুটা বদলে যায়, আপনাকে প্রকল্পটি পুনরায় সংকলন করতে হবে না। এছাড়াও, আপনি আপনার প্রকল্পে ক্যোরি কোড করেছেন এমন এক জায়গা নয়, এটি বিভিন্ন উত্স থেকে অ্যাক্সেসের অনুমতি দেয়।

আমি মনে করি না যে সঞ্চিত প্রক্রিয়াগুলি বজায় রাখা আরও কঠিন, আপনার সেগুলি সরাসরি ডাটাবেসে কোড করা উচিত নয় তবে পৃথক পৃথক ফাইলগুলিতে প্রথমে কোড করা উচিত নয়, তারপরে আপনি যে ডিবি সেট আপ করতে হবে তা কেবল আপনি এগুলি চালাতে পারেন।


24
আপনি যদি নিজের কোডটি পুনরায় সংবিধান এড়ানোর জন্য নিজেকে বুনিয়াদি স্থাপত্যিক সিদ্ধান্ত গ্রহণ করতে দেখেন তবে কিছু করার আগে, বিল্ড প্রক্রিয়াটি স্থির করুন যা পুরোপুরি স্তন্যপান হয় না। এটি একটি অ-যুক্তি।
মাইকেল বর্গওয়ার্ট

13

সঞ্চিত পদ্ধতিগুলির জন্য সুবিধা :

আরও সহজে কোড পর্যালোচনা।

কম মিলিত, অতএব আরও সহজে পরীক্ষিত।

আরও সহজেই সুর করা।

নেটওয়ার্ক ট্র্যাফিকের দৃষ্টিকোণ থেকে পারফরম্যান্সটি আরও ভাল হয় - আপনার যদি কার্সার বা একই রকম থাকে তবে ডাটাবেসে একাধিক ট্রিপ নেই

আপনি আরও সহজে ডেটাতে অ্যাক্সেস রক্ষা করতে পারেন, টেবিলগুলিতে সরাসরি অ্যাক্সেস সরিয়ে ফেলতে পারেন, প্রক্সের মাধ্যমে সুরক্ষা প্রয়োগ করতে পারেন - এটি আপনাকে কোনও টেবিল আপডেট করে এমন কোনও কোড তুলনামূলকভাবে দ্রুত সন্ধান করতে দেয়।

যদি সেখানে অন্য পরিষেবাদি জড়িত থাকে (যেমন রিপোর্টিং পরিষেবাদি), আপনি কোডের পরিবর্তে আপনার সমস্ত যুক্তি সঞ্চিত পদ্ধতিতে সংরক্ষণ করা এবং এটির সদৃশ করার পক্ষে আরও সহজ পেতে পারেন

অসুবিধা:

বিকাশকারীদের পক্ষে পরিচালনা করা শক্ত: স্ক্রিপ্টগুলির সংস্করণ নিয়ন্ত্রণ: প্রত্যেকেরই কি নিজস্ব নিজস্ব ডাটাবেস থাকে, সংস্করণ নিয়ন্ত্রণ ব্যবস্থাটি ডাটাবেস এবং আইডিইয়ের সাথে একীভূত হয়?


হ্যাঁ আপনার ভিজ্যুয়াল স্টুডিও 2012 ডাটাবেস প্রকল্প এবং টিএফএসে সঞ্চিত পদ্ধতি এবং ডাটাবেসের একটি সংস্করণ নিয়ন্ত্রণ থাকতে পারে।
হাজীরাজিন

11

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

যে কেউ তর্ক করতে পারে যে এটি কেবল এসকিউএল থেকে ওয়েব সার্ভারে কিছু প্রক্রিয়াকরণ সরিয়ে দেয় তবে সাধারণভাবে এটি ভাল জিনিস হবে।

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


1
কেন এই উত্তরটি নিচে ভোট দেওয়া হয়েছে তা নিশ্চিত নয় .. এটি সত্য যে একটি ছোট ক্যোয়ারী আরও ভাল অভিনয় করতে পারে। এমনকি এটি এসকিউএল সার্ভার দল দ্বারা মন্তব্য করেছে।
ব্র্যানন

9

আমি সঞ্চিত প্রকল্পগুলি পছন্দ করি, জানি না যে আমি সঞ্চিত পদ্ধতি ব্যবহার করে কোনও অ্যাপ্লিকেশনটিতে কতবার পরিবর্তন করতে পেরেছিলাম যা অ্যাপ্লিকেশনটিতে কোনও ডাউনটাইম তৈরি করে না।

লেনদেন এসকিউএল এর বড় ফ্যান, বড় প্রশ্নগুলি টিউন করা আমার পক্ষে খুব কার্যকর প্রমাণিত হয়েছে। প্রায় 6 বছরে কোনও ইনলাইন এসকিউএল লেখেনি!


আমি কোডে ক্যোরিগুলি ব্যবহার করে অন্য দৃষ্টিভঙ্গি বুঝতে পারি না, কেবল বুঝতে পারি না ...
চকী_ব্লাক

8

আপনি স্প্রোকের জন্য 2 টি প্রো-পয়েন্ট তালিকাভুক্ত করেছেন:

পারফরম্যান্স - আসলে না। SQL 2000 বা ততোধিক কোয়েরিতে প্ল্যানের অপ্টিমাইজেশানগুলি বেশ ভাল এবং ক্যাশেড ached আমি নিশ্চিত যে ওরাকল ইত্যাদি একই রকম কাজ করে। আমি মনে করি না আর পারফরম্যান্সের জন্য স্প্রোকের কোনও মামলা আছে।

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

যাইহোক পারফরম্যান্সের জন্য এটি সেরা অনুশীলন।

লিনক হ'ল আমি এখনই নতুন প্রকল্পে যাচ্ছি। এই একই পোস্ট দেখুন


অ্যাডহক এসকিউএল কার্যকর করার পরিকল্পনাগুলি কেবল নির্দিষ্ট পরিস্থিতিতেই পুনরায় ব্যবহার করা হয়: tinyurl.com/6x5lmd [কোড প্রমাণ সহ এসও উত্তর] এসকিউএল-এর লিনিকউ আনুষ্ঠানিকভাবে মারা গেছে: tinyurl.com/6298nd [ব্লগ পোস্ট]
এইচটিটিপি 410

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

8

@Keith

সিকিউরিটি? স্প্রোকগুলি আরও সুরক্ষিত হবে কেন?

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

(অবশ্যই স্প্রোকগুলি কার্যকর করা তাদের প্রয়োজনীয় সমস্ত ডেটা দিতে পারে তবে এটি উপলব্ধ স্প্রোকগুলির উপর নির্ভর করে the তাদের টেবিলগুলিতে অ্যাক্সেস দেওয়া তাদের সমস্ত কিছুর অ্যাক্সেস দেয়))


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

7

এই ভাবে চিন্তা করুন

আপনার কাছে ৪ টি ওয়েবসर्ভার এবং একত্রে উইন্ডোজ অ্যাপ্লিকেশন রয়েছে যা একই এসকিউএল কোডটি ব্যবহার করে এখন আপনি বুঝতে পেরেছেন যে এসকিউএল কোডের সাথে একটি ছোট সমস্যা আছে তাই আপনি বরং ...... 1 টি জায়গায় প্রোক পরিবর্তন করুন বা কোডটি সকলের দিকে ঠেলে দিন ওয়েবসভারগুলি, সমস্ত উইন্ডোজ বাক্সে সমস্ত ডেস্কটপ অ্যাপ্লিকেশনগুলি (ক্লিকোনস সহায়তা করতে পারে) পুনরায় ইনস্টল করুন

আমি সঞ্চিত প্রকল্পগুলি পছন্দ করি

কোনও প্রোকের বিরুদ্ধে পারফরম্যান্স টেস্টিং করা সহজ, কোয়েরি বিশ্লেষক সেট পরিসংখ্যানগুলিতে io / সময় সেট শোপলান_সেক্সট অন এবং ভয়েলা রাখুন

ঠিক কী বলা হচ্ছে তা দেখতে প্রোফাইলার চালানোর দরকার নেই

শুধু আমার 2 সেন্ট


6

আমি তাদের কোডে রাখাই পছন্দ করি (কোনও ওআরএম ব্যবহার করে, ইনলাইন বা অ্যাড-হক ব্যবহার করে না) তাই তারা। এসকিউএল ফাইলগুলি সাশ্রয় না করেই সোর্স কন্ট্রোলের আওতায় পড়ে।

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


6

আপনার অ্যাপ্লিকেশন কোডটি সর্বোত্তমভাবে হিসাবে ব্যবহার করুন: লজিক পরিচালনা করুন।
এটি সর্বোত্তমর জন্য আপনার ডাটাবেসটি ব্যবহার করুন: স্টোর ডেটা।

আপনি সঞ্চিত প্রক্রিয়াগুলি ডিবাগ করতে পারেন তবে আপনি ডিবাগ করতে পারবেন এবং কোডটিতে লজিক সংরক্ষণ করতে পারবেন। আপনি যখনই ডাটাবেস মডেলটি পরিবর্তন করেন তখন সাধারণত আপনি আপনার কোডটি পুনরায় সংকলন শেষ করবেন।

এছাড়াও searchচ্ছিক অনুসন্ধানের প্যারামিটারগুলির সাথে সঞ্চিত পদ্ধতিগুলি খুব অসুবিধাজনক কারণ আপনাকে সমস্ত সম্ভাব্য পরামিতি নির্দিষ্ট করতে হবে এবং জটিল অনুসন্ধানগুলি কখনও কখনও সম্ভব হয় না কারণ আপনি সিচটিতে কতগুলি পরামিতি পুনরাবৃত্তি হতে চলেছেন তা অনুমান করতে পারবেন না।


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

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

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

2
"একটি অ্যাপ্লিকেশন উপাদান থাকা উচিত যা একক ধরণের পরিবর্তনের সাথে কাজ করে" - পিএল / এসকিউএল-তে বলুন যে উপাদানটি একটি সঞ্চিত পদ্ধতি হতে পারে।
রাসেলএইচ

6

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

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

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

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

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


যখন মডেলটি পরিবর্তিত হয়, সাধারণত কোডটি স্প্রোকস বা ডায়নামিক এসকিএল ব্যবহার করছে কিনা তা নির্বিশেষে কোডেরও পরিবর্তন করা দরকার। এবং একবার আপনি সারণী / স্কিমা তৈরি করলে আপনি কেবল কতবার সারণি / স্কিমা পরিবর্তন করবেন? না প্রায়ই. ব্যবসায় থেকে সাধারণত পরিবর্তন আসে যেখানে তাদের অন্য কলাম বা অন্য একটি সারণী যুক্ত করা দরকার, সেক্ষেত্রে আমি সন্দেহ করি যে আপনি কোড পরিবর্তন ছাড়াই করতে পারেন can
জিহো হান

4

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


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

4

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


4

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

অ্যাপ্লিকেশন থেকে প্রেরিত এসকিউএল-এর চেয়ে সঞ্চিত প্রকল্পগুলি বজায় রাখা এবং পারফরম্যান্স টিউন করা আরও সহজ। ডেটা অ্যাক্সেস করার পথে ডাটাবেস কাঠামোগত পরিবর্তনের প্রভাব কী হবে তা দেখার জন্য তারা ডিবিএকে একটি উপায়ও মঞ্জুরি দেয়। আমি কখনও কোনও ভাল ডিবিএর সাথে দেখা করি নি যিনি ডেটাবেজে গতিশীল অ্যাক্সেসের অনুমতি দেবেন।


4

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

থেরেসা


3

ছোট লগ

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


3

আমি সঞ্চিত প্রক্রিয়াগুলির একটি বড় অনুরাগী নই, তবে আমি সেগুলি একটি শর্তে ব্যবহার করি:

যখন ক্যোয়ারী বেশ বিশাল হয়, কোড থেকে পাঠানোর পরিবর্তে এটি স্টোরেজ পদ্ধতি হিসাবে ডাটাবেজে সংরক্ষণ করা ভাল। এইভাবে, অ্যাপ্লিকেশন সার্ভার থেকে ডাটাবেসে স্ট্রিং অক্ষরগুলির বিশাল পরিমাণ পাঠানোর পরিবর্তে কেবল "EXEC SPNAME"কমান্ড প্রেরণ করা হবে।

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

কিন্তু মানুষ, তারা পরিচালনা করতে এত ভয়ঙ্কর। আমি যতটা পারি এগুলি এড়িয়ে চলি।


3

একটি এসকিউএল সঞ্চিত প্রো কোয়ের কার্যকারিতা বাড়ায় না


কীভাবে তা হতে পারে না? এই সম্পর্কে ব্যাখ্যা করুন।
সন্দেশ

এসকিউএল ক্যোয়ারী সংকলন করা যায় তবে এটি কার্য সম্পাদন বাড়িয়ে তুলবে।
টিটি।

3

স্পষ্টতই সঞ্চিত পদ্ধতি ব্যবহার করে কোডে এসকিউএল তৈরির বিভিন্ন সুবিধা রয়েছে।

  1. আপনার কোড বাস্তবায়ন এবং এসকিউএল একে অপরের থেকে স্বাধীন হয়ে যায়।
  2. কোড পড়া সহজ।
  3. একবার ব্যবহার অনেক বার লিখুন।
  4. একবার পরিবর্তন করুন
  5. ডাটাবেস সম্পর্কে প্রোগ্রামারকে অভ্যন্তরীণ বিশদ দেওয়ার দরকার নেই। ইত্যাদি, ইত্যাদি

আমি কখনই এমন পরিস্থিতিতে পড়িনি যেখানে কোড সমস্যা বা নতুন বৈশিষ্ট্য সম্পর্কে কম তথ্য থাকা আমার পক্ষে উপকৃত হয়েছে, আপনি কি 5 নম্বরটি পরিষ্কার করতে পারবেন?
ওপেন কোডারএক্স

2

সঞ্চিত পদ্ধতিগুলি আরও রক্ষণাবেক্ষণযোগ্য কারণ:

  • আপনি যখনই কিছু এসকিউএল পরিবর্তন করতে চান তখন আপনাকে আপনার সি # অ্যাপটি পুনরায় সংকলন করতে হবে না
  • আপনি এসকিউএল কোডটি পুনরায় ব্যবহার করছেন।

কোড পুনরাবৃত্তি হ'ল আপনি যখন একটি রক্ষণাবেক্ষণযোগ্য অ্যাপ্লিকেশন তৈরি করার চেষ্টা করছেন তখন আপনি সবচেয়ে খারাপ কাজ করতে পারেন!

আপনি যখন যুক্তিযুক্ত ত্রুটিটি খুঁজে পান যা একাধিক জায়গায় সংশোধন করা প্রয়োজন? আপনি আপনার শেষ কোডটি যেখানে অনুলিপি করে আপনার কোডটি অনুলিপি করেছেন তা পরিবর্তন করতে আপনি আরও প্রস্তুত হন।

আমার মতে, পারফরম্যান্স এবং সুরক্ষা লাভগুলি একটি যুক্ত প্লাস। আপনি এখনও নিরাপদ / অকার্যকর এসকিউএল সঞ্চিত পদ্ধতি লিখতে পারেন।

অন্য ডিবিতে পোর্ট করা সহজ - কোনও পোর্টে পোর্টস নেই

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


কেবল একটি নোট: "অন্য ডিবিতে পোর্ট করা সহজ - পোর্ট করার জন্য কোনও প্রোকস" কেবল অন্য কোনও ইনস্টলেশন নয়, অন্য ডিবিএমএসের কাছে পোর্টিংকে বোঝায় । সেখানে বিকল্প আছে, আপনি জানেন ;-)।
sleske

2

@ টেরাপিন - স্প্রোকগুলি ইনজেকশন আক্রমণে ঠিক ততটাই দুর্বল। যেমনটি আমি বলেছি:

সর্বদা সব প্রশ্নের প্যারামিটারাইজ করুন - ব্যবহারকারীর ইনপুট থেকে কখনই কোনও কিছুর ইনলাইন করবেন না এবং আপনি ভাল থাকবেন।

এটি স্প্রোকস এবং গতিশীল স্কয়ারের জন্য যায়।

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


@ গুয় - হ্যাঁ আপনি ঠিক বলেছেন, স্প্রোকস আপনাকে অ্যাপ্লিকেশন ব্যবহারকারীদের নিয়ন্ত্রণ করতে দেয় যাতে তারা কেবল স্প্রোক সম্পাদন করতে পারে, অন্তর্নিহিত ক্রিয়াটি নয়।

আমার প্রশ্নটি হ'ল: যদি আপনার অ্যাপ্লিকেশনটির মাধ্যমে এটি সমস্ত অ্যাক্সেস করে, সংযোগগুলি এবং আপডেট / সন্নিবেশ করানোর সীমাবদ্ধ অধিকার সহ ব্যবহারকারীদের ইত্যাদি ব্যবহার করে, তবে এই অতিরিক্ত স্তরটি সুরক্ষা বা অতিরিক্ত প্রশাসন যুক্ত করে?

আমার মতামত পরেরটি। যদি তারা আপনার অ্যাপ্লিকেশনটিকে এমন বিন্দুতে আপত্তি করে থাকে যেখানে তারা এটি আবার লিখতে পারে তবে তাদের ব্যবহার করার মতো প্রচুর পরিমাণে আক্রমণ রয়েছে।

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


এটি আপনার লড়াই করার প্রয়োজনের বাইরে নয় isn't আপনি এমন ব্যবহারকারীদের টেবিলগুলিতে সরাসরি অ্যাক্সেসের অনুমতি দিতে পারবেন না যারা জালিয়াতির জন্য ডেটা পরিবর্তন করতে পারে।
এইচএলজিইএম

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

ডায়ামিক্যালি-ইনলাইনড কোড সহ স্পিকারের বিরুদ্ধে এসকিউএল ইঞ্জেকশন এত কার্যকর নয় কারণ ডায়নামিক কোড কলারের অনুমতি নিয়ে কার্যকর করা হয়, মালিকের অনুমতি নয় (স্থির কোডের বিপরীতে)। এটি এসকিউএল সার্ভারের ক্ষেত্রে সত্য - ওরাকল সম্পর্কে নিশ্চিত নয়।
HTTP 410

2

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

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

সুতরাং, সঞ্চিত প্রক্রিয়াটিতে আটকে থাকুন যা ব্যবসায়িক যুক্তিযুক্ত সংস্থাগুলির চেয়ে কেবল সম্পর্কিত সম্পর্কিত বিবরণকে দূরে সরিয়ে দেয়।


"সঞ্চিত পদ্ধতি লিখার জন্য ব্যবহৃত ভাষাগুলি (পিএল / এসকিউএল একটি কুখ্যাত উদাহরণ হিসাবে) খুব নিষ্ঠুর [এবং] আজকের জনপ্রিয় ভাষাগুলিতে আপনি যে চমত্কার জিনিস দেখতে পাবেন তার কোনও প্রস্তাব দেয় না।" আপনাকে পিএল / এসকিউএল ডক্সটি পুনরায় পড়তে হবে ( download.oracle.com/docs/cd/B28359_01/appdev.111/b28370/toc.htm )। পিএল / এসকিউএলের প্যাকেজগুলি ব্যবহার করে এনজ্যাপসুলেশন রয়েছে, অবজেক্টের ধরণের মাধ্যমে ওওপি, ব্যতিক্রম হ্যান্ডলিং, কোডের গতিশীল সম্পাদন, ডিবাগার, প্রোফাইলার ইত্যাদি, এবং এইচটিটিপি কলগুলি থেকে এনক্রিপশন এবং নিয়মিত অভিব্যক্তিগুলিতে সবকিছু করার জন্য শত শত মানক, ওরাকল-সরবরাহিত প্যাকেজ / লাইব্রেরি রয়েছে । পিএল / এসকিউএল এর প্রচুর সুন্দরতা রয়েছে।
ওবিওয়ানকেনোবি

2

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

সঞ্চিত প্রকল্পগুলির সুরক্ষা সুবিধাগুলি সম্পর্কে পূর্ববর্তী উত্তরে অনেক কিছু বলা হয়েছিল। এগুলি দুটি বিস্তৃত বিভাগে পড়ে:

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

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


2

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

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

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


আপনি যখন সারণীতে পরিবর্তনগুলি প্রতিলিপি করতে "ভুলে যান" তখন কী হবে?
ক্রেগমোলিভার

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