কিছু পর্যবেক্ষণ
সঞ্চিত পদ্ধতি আপনাকে কোড পুনরায় ব্যবহার এবং এনক্যাপসুলেশন দেয় (সফ্টওয়্যার বিকাশের দুটি স্তম্ভ),
কেবলমাত্র যদি আপনি সে প্রসঙ্গে সঠিকভাবে ব্যবহার করেন তবে সেগুলি ব্যবহার করার কথা রয়েছে। একই দাবিটি ফাংশনগুলি (কাঠামোগত প্রোগ্রামিংয়ে) বা পদ্ধতিগুলি (অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিংয়ে) সম্পর্কে বলা যেতে পারে এবং তবুও আমরা 1 কে ফাংশন এবং মেগা-গাধা বস্তু দেখতে পাই।
শৈল্পিকাগুলি আপনাকে সেই সুবিধা দেয় না। এই নিদর্শনগুলির যথাযথ ব্যবহার হ'ল সেই সুবিধাগুলি।
সুরক্ষা (আপনি পৃথক সঞ্চিত প্রকল্পে অনুমতি প্রদান / প্রত্যাহার করতে পারেন),
হ্যাঁ. এটি একটি ভাল পয়েন্ট এবং আমি সঞ্চিত পদ্ধতিগুলি পছন্দ করার অন্যতম প্রধান কারণ। তারা কেবলমাত্র দর্শন এবং ব্যবহারকারীর অ্যাকাউন্টগুলির মাধ্যমে সাধারণত কী অর্জন করা যায় তার চেয়ে তারা সূক্ষ্ম-গ্রানুলারিটি অ্যাক্সেস নিয়ন্ত্রণ সরবরাহ করে।
এসকিউএল ইঞ্জেকশন আক্রমণ থেকে আপনাকে রক্ষা করুন,
এটি এসপিগুলির সাথে নির্দিষ্ট নয় কারণ আপনি প্যারামিটারাইজড এসকিউএল স্টেটমেন্ট এবং ইনপুট স্ক্রাবিংয়ের মাধ্যমে একই স্তরের সুরক্ষা অর্জন করতে পারেন। আমি তবে "গভীরতার সুরক্ষা" হিসাবে বিষয়টি ছাড়াও এসপিগুলিকে ব্যবহার করব ।
এবং গতিতে সহায়তা করে (যদিও এটি ডিবিএ বলেছিল যে এসকিউএল সার্ভার ২০০৮ থেকে শুরু করে যে নিয়মিত এসকিউএল অনুসন্ধানগুলি যথেষ্ট সময় চালিত হলে সংকলিত হয়)।
এটি অত্যন্ত ডাটাবেস বিক্রেতার নির্দিষ্ট, তবে সাধারণভাবে আপনার ডিবিএ সঠিক। এসকিউএল স্টেটমেন্ট (স্ট্যাটিক বা প্যারামাইট্রাইজড) সংকলিত হয় get আপনি যদি এসপিএল সাধারণ বিবৃতি দিয়ে না করতে পারেন এমন ডেটা সংহত এবং গণনা করতে চান তবে এসপিএসগুলি সহায়তা করে তবে এসকিউএল এর সাথে দৃ integrated়ভাবে সংহত হয়ে থাকে এবং অ্যাপ্লিকেশন সার্ভারে রাউন্ড-ট্রিপকে ওয়ারেন্ট দেয় না।
একটি ভাল উদাহরণ হ'ল একটি অস্থায়ী কার্সারে (বা কার্সারগুলি) যা থেকে অন্য একটি এসকিউএল নিজে চালানো হয় data আপনি এটি অ্যাপ্লিকেশন সার্ভারে প্রোগ্রামগতভাবে করতে পারেন, বা আপনি এটি ডিবি করে একাধিক রাউন্ড-ট্রিপগুলি সংরক্ষণ করতে পারেন।
তবে এটি আদর্শ হওয়া উচিত নয়। আপনার যদি সেইরকম অনেকগুলি মামলা থাকে, তবে এটি খারাপ ডাটাবেস ডিজাইনের একটি চিহ্ন (বা আপনি বিভাগগুলি জুড়ে না-তেমন সুসংগত ডাটাবেস স্কিমার থেকে ডেটা টানছেন are)
অ্যাগিল সফটওয়্যার ডেভলপমেন্ট পদ্ধতি ব্যবহার করে আমরা একটি জটিল অ্যাপ বিকাশ করছি।
তত্পরতা সফ্টওয়্যার ইঞ্জিনিয়ারিং প্রক্রিয়া এবং প্রয়োজনীয় পরিচালনার সাথে সম্পর্কিত নয় প্রযুক্তিগুলি নয়।
যে কেউ সঞ্চিত প্রকটগুলি ব্যবহার করতে চান না কেন তারা ভাল কারণগুলি সম্পর্কে ভাবতে পারেন?
ভুল প্রশ্ন
প্রশ্নটি ভুল এবং জিজ্ঞাসার সমতুল্য "গোটো ব্যবহার না করার কোনও ভাল কারণ আছে কি?" আমি এই বিষয়ে ডিজকস্ট্রার চেয়ে নিকলাস রথের পক্ষে। আমি বুঝতে পারি ডিজকস্ট্রার আবেগটি কোথা থেকে এসেছে তবে আমি বিশ্বাস করি না যে এটি সব ক্ষেত্রেই 100% প্রযোজ্য। স্টোর প্রোকস এবং যে কোনও প্রযুক্তির সাথে একই।
কোনও সরঞ্জাম তার উদ্দেশ্যযুক্ত উদ্দেশ্যে ভালভাবে ব্যবহার করা ভাল এবং যখন এটি নির্দিষ্ট কাজের জন্য সেরা সরঞ্জাম। অন্যথায় এটি ব্যবহার করা ইঙ্গিত নয় যে সরঞ্জামটি ভুল is তবে উইল্ডার জানেন না যে সে কী করছে।
সঠিক প্রশ্নটি হ'ল "কী ধরনের সঞ্চিত পদ্ধতি ব্যবহারের ধরণগুলি এড়ানো উচিত" " অথবা, "আমার কী অবস্থার অধীনে সঞ্চিত পদ্ধতি ব্যবহার করা উচিত (বা না করা উচিত)" । প্রযুক্তি ব্যবহার না করার কারণ অনুসন্ধান করে ইঞ্জিনিয়ারিংয়ের যেখানে-সেখানে ইঞ্জিনিয়ারিংয়ের দায়িত্ব যথাযথভাবে স্থাপন করার বিপরীতে কেবল এই সরঞ্জামটিকেই দোষ দেওয়া হচ্ছে।
অন্য কথায়, এটি একটি কপ-আউট বা অজ্ঞতার বিবৃতি।
আমার ধারণা ছিল যে ডিবিএগুলি এই সঞ্চিত প্রকোপগুলি বজায় রাখতে চায় নি, তবে এই জাতীয় নকশার সিদ্ধান্তকে ন্যায়সঙ্গত করার পক্ষে অনেকগুলি নেতিবাচক উপায় রয়েছে বলে মনে হয়।
তারপরে তারা যা করছে তা হ'ল তারা খারাপভাবে ব্যবহৃত সরঞ্জামগুলিতে তাদের খারাপ ইঞ্জিনিয়ারিং সিদ্ধান্তের ফলাফলগুলি প্রজেক্ট করছে।
আপনার ক্ষেত্রে কি করবেন?
আমার অভিজ্ঞতা হ'ল রোমে থাকাকালীন রোমানরা যেমন করে ।
এটি যুদ্ধ করবেন না। যদি আপনার সংস্থার লোকেরা স্টোর প্রোকে একটি খারাপ অভ্যাস হিসাবে লেবেল করতে চায় তবে তাদের দিন। তবে পরামর্শ দিন, এটি তাদের ইঞ্জিনিয়ারিং পদ্ধতিতে একটি লাল পতাকা হতে পারে।
খারাপ অনুশীলন হিসাবে জিনিসগুলির সাধারণ লেবেলিং সাধারণত সংস্থাগুলিতে প্রচুর অক্ষম প্রোগ্রামার রয়েছে with কিছু নির্দিষ্ট জিনিসকে কালো তালিকাভুক্ত করার মাধ্যমে, সংস্থাটি তাদের নিজস্ব অক্ষমতা দ্বারা অভ্যন্তরীণভাবে ক্ষয়ক্ষতি সীমাবদ্ধ করার চেষ্টা করে। আমি তোমাকে ছিলে না
সাধারণীকরণগুলি সমস্ত স্ক্রু আপগুলির জননী। বলছেন যে সঞ্চিত প্রকল্পগুলি (বা কোনও ধরণের প্রযুক্তি) একটি খারাপ অভ্যাস, এটি সাধারণীকরণ। সাধারণীকরণগুলি অদক্ষদের জন্য কপ-আউটস। প্রকৌশলী নির্মম সাধারণীকরণ নিয়ে কাজ করে না। তারা কেস-কেস-কেস ভিত্তিতে বিশ্লেষণ করে, বিশ্লেষণ ট্রেড-অফ করে এবং প্রকৌশল সিদ্ধান্ত এবং সমাধানগুলি বাস্তবায়নের সাথে হাতের তথ্য অনুসারে, যে প্রসঙ্গে তারা কোন সমস্যার সমাধান করার কথা বলেছিল।
ভাল ইঞ্জিনিয়াররা এ জাতীয় সাধারণ উপায়ে জিনিসগুলিকে খারাপ অনুশীলন হিসাবে চিহ্নিত করেন না। তারা সমস্যার দিকে নজর রাখে, উপযুক্ত যে সরঞ্জামটি নির্বাচন করে, বাণিজ্য বন্ধ করে দেয়। অন্য কথায় তারা ইঞ্জিনিয়ারিং করে।
এগুলি কীভাবে ব্যবহার করবেন না সে সম্পর্কে আমার মতামত
তাদের মধ্যে ডেটা সংগ্রহ (এবং সম্ভবত কিছু রূপান্তর) এর বাইরে জটিল যুক্তি স্থাপন করবেন না। তাদের মধ্যে কিছু ডেটা ম্যাসেজ করার যুক্তি যুক্ত করা বা তাদের সাথে একাধিক প্রশ্নের ফলাফল একত্রিত করা ঠিক আছে। কিন্তু এটি সম্পর্কে। এর বাইরে যে কোনও কিছু ব্যবসায়ের যুক্তি হিসাবে যোগ্যতা অর্জন করবে যা অন্য কোথাও থাকা উচিত।
এসকিউএল ইঞ্জেকশনের বিরুদ্ধে আপনার প্রতিরক্ষা একমাত্র প্রক্রিয়া হিসাবে এগুলি ব্যবহার করবেন না। কোনও কিছু খারাপ হয়ে গেলে আপনি এগুলিকে সেখানে রেখে দিন , তবে তাদের সামনে বেশ কয়েকটি প্রতিরক্ষামূলক যুক্তি থাকা উচিত - ক্লায়েন্ট-সাইডের বৈধতা / স্ক্রাবিং, সার্ভার-সাইডের বৈধতা / স্ক্রাবিং, সম্ভবত এমন ধরণের রূপান্তর যা আপনার ধারণাটি তৈরি করে ডোমেন মডেল, এবং অবশেষে প্যারামেট্রাইজড স্টেটমেন্টগুলিতে পাস করা (যা এসকিউএল স্টেটমেন্টগুলিকে প্যারাম্যাট্রাইজ করা যেতে পারে বা স্টোরেজ প্রক্সকে প্যারামেট্রাইজ করা যেতে পারে))
ডাটাবেসগুলি কেবল আপনার স্টোর প্রকোপযুক্ত স্থান তৈরি করবেন না। আপনি আপনার সি # বা জাভা উত্স কোড যেমন ব্যবহার করেন ঠিক তেমনই আপনার স্টোর প্রোকসও ব্যবহার করা উচিত। এটি হ'ল উত্সটি আপনার স্টোর প্রক্সের পাঠ্য সংজ্ঞাটি নিয়ন্ত্রণ করে। লোকেরা গালি দেয় যে স্টোর প্রোকগুলি উত্স নিয়ন্ত্রিত হতে পারে না - বুলক্র্যাপ, তারা কেবল রক্তাক্ত নরকের কথা বলছে তা তারা জানে না।
কীভাবে / কোথায় সেগুলি ব্যবহার করবেন সে সম্পর্কে আমার মতামত
আপনার অ্যাপ্লিকেশনটির এমন ডেটা দরকার যা একাধিক প্রশ্ন বা দর্শন থেকে স্থানান্তরিত বা একত্রিত করা দরকার। আপনি অ্যাপ্লিকেশন থেকে ডিবিতে অফলোড করতে পারেন। এখানে আপনাকে একটি পারফরম্যান্স বিশ্লেষণ করতে হবে যেহেতু) ক) ডাটাবেস ইঞ্জিনগুলি অ্যাপ্লিকেশন সার্ভারগুলি এই কাজগুলিতে আরও দক্ষ হয় তবে খ) অ্যাপ সার্ভারগুলি (কখনও কখনও) অনুভূমিকভাবে স্কেল করা সহজ।
সূক্ষ্ম শস্য অ্যাক্সেস নিয়ন্ত্রণ। আপনি চাইছেন না কিছু বোকা চলমান কার্টেসিয়ান আপনার ডিবিতে যোগ দেয়, তবে আপনি কেবল লোকজনের মতো স্বেচ্ছাসেবক এসকিউএল বিবৃতি কার্যকর করতে বাধা দিতে পারবেন না। একটি সাধারণ সমাধান হ'ল বিকাশ এবং ইউএটি পরিবেশে স্বেচ্ছাসেবী এসকিউএল স্টেটমেন্টগুলিকে মঞ্জুরি দেওয়া এবং সিস্টেমেস্ট এবং উত্পাদন পরিবেশে তাদের নিষেধ করার সময়। সিস্টেমে সিস্টেম বা উত্পাদনের জন্য এটি তৈরি করতে হবে এমন কোনও বিবৃতি একটি স্টোর পদ্ধতিতে চলে যায়, বিকাশকারী এবং ডিবিএস উভয়ই কোড-পর্যালোচনা করে।
কোনও স্টোর প্রোকে না করে এসকিউএল স্টেটমেন্ট চালানোর কোনও বৈধ প্রয়োজন একটি ভিন্ন ব্যবহারকারীর নাম / অ্যাকাউন্ট এবং সংযোগ পুলের মধ্য দিয়ে যায় (ব্যবহারের সাথে উচ্চ পর্যবেক্ষণ ও নিরুৎসাহিত হয়।)
- ওরাকল এর মতো সিস্টেমে আপনি এলডিএপি অ্যাক্সেস পেতে পারেন বা বাহ্যিক ডাটাবেসে সিমলিংক তৈরি করতে পারেন (ভিপিএন এর মাধ্যমে ব্যবসায়িক অংশীদারের ডিবিতে স্টোর প্রোকে ডাকা বলুন।) স্প্যাগেটি কোড করার সহজ উপায়, তবে এটি সমস্ত প্রোগ্রামিং প্যারাডিজমের ক্ষেত্রে সত্য এবং কখনও কখনও এটি সত্য that's আপনার নির্দিষ্ট ব্যবসায় / পরিবেশের প্রয়োজনীয়তা রয়েছে যার জন্য এটিই একমাত্র সমাধান। স্টোর প্রোকস একাই এক জায়গায় সেই ঘৃণ্যতাটিকে ডেটা কাছে এবং অ্যাপ্লিকেশন সার্ভারে প্রবেশ না করেই এক জায়গায় আবদ্ধ করতে সহায়তা করে।
আপনি এটি স্টোর প্রোক হিসাবে ডিবিতে চালিত করুন বা আপনার অ্যাপ্লিকেশন সার্ভারে আপনি যে ইঞ্জিনিয়ার হিসাবে তৈরি করতে হবে তা বাণিজ্য-বিশ্লেষণের উপর নির্ভর করে। উভয় বিকল্পকে কিছু ধরণের বিশ্লেষণের সাথে বিশ্লেষণ এবং ন্যায়সঙ্গত করতে হবে। অন্য বিকল্পটিকে কেবল "খারাপ অনুশীলন" হিসাবে দোষারোপ করে এক বা অন্য পথে যাওয়া, এটি কেবল এক খোঁড়া ইঞ্জিনিয়ারিং কোপ-আউট।
- আপনি কেবল আপনার অ্যাপ্লিকেশন সার্ভারকে স্কেল করতে পারবেন না (যেমন। নতুন হার্ডওয়্যার বা মেঘের উদাহরণগুলির জন্য কোনও বাজেট নয়) তবে ডিবি ব্যাক-এন্ডে যথেষ্ট পরিমাণের ক্ষমতা সহ (এটি আরও সাধারণ যা অনেক লোক স্বীকার করতে আগ্রহী), এটি প্রদান করে ব্যবসার যুক্তি স্টোর প্রোকে স্থানান্তরিত করতে। সুন্দর নয় এবং রক্তাল্পতাযুক্ত ডোমেন মডেলগুলির দিকে নিয়ে যেতে পারে ... তবে আবার ... বাণিজ্য-বিশ্লেষণ, বেশিরভাগ সফ্টওয়্যার যে জিনিসটি চুরি করে তা এটিকে চূড়ান্ত করে তোলে।
এটি স্থায়ী সমাধান হয়ে উঠুক বা না হোক, এটি সেই নির্দিষ্ট মুহূর্তে লক্ষ্য করা বাধার জন্য নির্দিষ্ট।
আশা করি এটা সাহায্য করবে.