সঞ্চিত পদ্ধতিগুলি বিশ্বের বৃহত্তম আইটি সফ্টওয়্যার পরামর্শ সংস্থাগুলির মধ্যে একটি খারাপ অনুশীলন?


148

আমি বিশ্বের শীর্ষ 3 আইটি পরামর্শদাতা সংস্থাগুলির একটিতে একটি প্রকল্পে কাজ করছি, এবং একটি ডিবিএ জানিয়েছিল যে সংস্থার সেরা অনুশীলনের স্টেট স্টোরেজ পদ্ধতিগুলি "সেরা অনুশীলন" নয়। এটি আমি শিখেছি সমস্ত কিছুর বিপরীতে।

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

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


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

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

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

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

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

উত্তর:


280

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

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


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

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

16
মেয়ের মিলিয়নে আমার মিলিয়ন যুক্ত কর বিতরিত ব্যবসায়িক যুক্তি আপনাকে ভাল অনুশীলনের মহাসড়ক থেকে সরাসরি সোজা পাগলের গলিতে নিয়ে যায়
নিকো

27
সঞ্চিত পদ্ধতি ব্যবহার করার সময় +1 ব্যবসার যুক্তি ডলের সাথে বিচ্ছিন্ন হওয়া একটি বড় উদ্বেগ।
সিস্টেমটি ডাউন

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

163

কিছু পর্যবেক্ষণ

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

কেবলমাত্র যদি আপনি সে প্রসঙ্গে সঠিকভাবে ব্যবহার করেন তবে সেগুলি ব্যবহার করার কথা রয়েছে। একই দাবিটি ফাংশনগুলি (কাঠামোগত প্রোগ্রামিংয়ে) বা পদ্ধতিগুলি (অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিংয়ে) সম্পর্কে বলা যেতে পারে এবং তবুও আমরা 1 কে ফাংশন এবং মেগা-গাধা বস্তু দেখতে পাই।

শৈল্পিকাগুলি আপনাকে সেই সুবিধা দেয় না। এই নিদর্শনগুলির যথাযথ ব্যবহার হ'ল সেই সুবিধাগুলি।

সুরক্ষা (আপনি পৃথক সঞ্চিত প্রকল্পে অনুমতি প্রদান / প্রত্যাহার করতে পারেন),

হ্যাঁ. এটি একটি ভাল পয়েন্ট এবং আমি সঞ্চিত পদ্ধতিগুলি পছন্দ করার অন্যতম প্রধান কারণ। তারা কেবলমাত্র দর্শন এবং ব্যবহারকারীর অ্যাকাউন্টগুলির মাধ্যমে সাধারণত কী অর্জন করা যায় তার চেয়ে তারা সূক্ষ্ম-গ্রানুলারিটি অ্যাক্সেস নিয়ন্ত্রণ সরবরাহ করে।

এসকিউএল ইঞ্জেকশন আক্রমণ থেকে আপনাকে রক্ষা করুন,

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

এবং গতিতে সহায়তা করে (যদিও এটি ডিবিএ বলেছিল যে এসকিউএল সার্ভার ২০০৮ থেকে শুরু করে যে নিয়মিত এসকিউএল অনুসন্ধানগুলি যথেষ্ট সময় চালিত হলে সংকলিত হয়)।

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

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

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

অ্যাগিল সফটওয়্যার ডেভলপমেন্ট পদ্ধতি ব্যবহার করে আমরা একটি জটিল অ্যাপ বিকাশ করছি।

তত্পরতা সফ্টওয়্যার ইঞ্জিনিয়ারিং প্রক্রিয়া এবং প্রয়োজনীয় পরিচালনার সাথে সম্পর্কিত নয় প্রযুক্তিগুলি নয়।

যে কেউ সঞ্চিত প্রকটগুলি ব্যবহার করতে চান না কেন তারা ভাল কারণগুলি সম্পর্কে ভাবতে পারেন?

ভুল প্রশ্ন

প্রশ্নটি ভুল এবং জিজ্ঞাসার সমতুল্য "গোটো ব্যবহার না করার কোনও ভাল কারণ আছে কি?" আমি এই বিষয়ে ডিজকস্ট্রার চেয়ে নিকলাস রথের পক্ষে। আমি বুঝতে পারি ডিজকস্ট্রার আবেগটি কোথা থেকে এসেছে তবে আমি বিশ্বাস করি না যে এটি সব ক্ষেত্রেই 100% প্রযোজ্য। স্টোর প্রোকস এবং যে কোনও প্রযুক্তির সাথে একই।

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

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

অন্য কথায়, এটি একটি কপ-আউট বা অজ্ঞতার বিবৃতি।

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

তারপরে তারা যা করছে তা হ'ল তারা খারাপভাবে ব্যবহৃত সরঞ্জামগুলিতে তাদের খারাপ ইঞ্জিনিয়ারিং সিদ্ধান্তের ফলাফলগুলি প্রজেক্ট করছে।

আপনার ক্ষেত্রে কি করবেন?

আমার অভিজ্ঞতা হ'ল রোমে থাকাকালীন রোমানরা যেমন করে

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

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

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

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

এগুলি কীভাবে ব্যবহার করবেন না সে সম্পর্কে আমার মতামত

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

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

  • ডাটাবেসগুলি কেবল আপনার স্টোর প্রকোপযুক্ত স্থান তৈরি করবেন না। আপনি আপনার সি # বা জাভা উত্স কোড যেমন ব্যবহার করেন ঠিক তেমনই আপনার স্টোর প্রোকসও ব্যবহার করা উচিত। এটি হ'ল উত্সটি আপনার স্টোর প্রক্সের পাঠ্য সংজ্ঞাটি নিয়ন্ত্রণ করে। লোকেরা গালি দেয় যে স্টোর প্রোকগুলি উত্স নিয়ন্ত্রিত হতে পারে না - বুলক্র্যাপ, তারা কেবল রক্তাক্ত নরকের কথা বলছে তা তারা জানে না।

কীভাবে / কোথায় সেগুলি ব্যবহার করবেন সে সম্পর্কে আমার মতামত

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

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

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

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

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

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

এটি স্থায়ী সমাধান হয়ে উঠুক বা না হোক, এটি সেই নির্দিষ্ট মুহূর্তে লক্ষ্য করা বাধার জন্য নির্দিষ্ট।

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


14
এটি সত্যিই ভাল উত্তর।
yfeldblum

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

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

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

1
@ শেন আপনি ঠিক বলেছেন তবে আমি বিশ্বাস করি যে এই উত্তরটি যা জানাতে চাইছে তা হ'ল ইঞ্জিনিয়ারদের কিছু গ্রুপের খারাপ অনুশীলন কার্ডে কল করে তাদের জ্ঞান বা বিশ্লেষণের অভাবকে ক্ষমা করার প্রবণতা। উত্তরটি আমাদের আরও অনভিজ্ঞদের জন্য কিছু উন্নতি দেখতে পেয়েছিল, যদিও।
সিজার হার্নান্দেজ

56

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

(সঞ্চিত পদ্ধতি) আপনাকে এসকিউএল ইঞ্জেকশন আক্রমণ থেকে রক্ষা করে

এটি আসলে প্যারামিট্রাইজড ক্যোয়ারিং যা আপনাকে রক্ষা করে যা আপনি সহজেই সরল পাঠ্য স্কেল কোয়েরিতে করতে পারেন।


18
এবং যদি আপনার সঞ্চিত প্রোক কোনও স্ট্রিং প্যারামিটারের সাথে কোনও ধরণের ডায়নামিক স্কোয়েল ব্যবহার করে থাকে তবে আপনি যেখানেই শুরু করেছিলেন ঠিক সেখানে ফিরে আসছেন।
জেফো

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

19
"কোনও নির্দিষ্ট ডিবিতে আপনাকে বাঁধা" যুক্তিটি আমি কখনই বুঝতে পারি নি। আপনি কত ঘন ঘন আপনার প্রোগ্রামটি নিয়ে যান এবং একে সম্পূর্ণ আলাদা ডাটাবেসে স্থানান্তরিত করেন?
ম্যাসন হুইলারের

11
@ ম্যাসনভিয়েল - প্রতিবার +1 করুন। পর্যাপ্ত পরিমাণে কোনও বড় প্রকল্পে, আপনার অ্যাপ্লিকেশনটি কোনও প্রদত্ত ডিবি পণ্যটির ফাউবিলের বিরুদ্ধে লেখা হবে। অন্য ডিবিতে রূপান্তর একটি বড় কাজ হয়ে ওঠে কারণ তা নয় কারণ নতুন ডিবিতে বিভিন্ন বৈচিত্র্য থাকবে!
মাইকেল কোহনে

6
@ এইচএলজিইএম - তবে সিওটিএস জগতে একাধিক ডিবি প্রারম্ভিক সময়ে ব্যতীত হয় (বাস্তবে আপনি সামঞ্জস্যপূর্ণ ডিবিগুলি চয়ন করেন)। আপনি যে পোর্ট করেন তা নয়, আপনি বিভিন্ন ব্যাক-এন্ড সমর্থন করেন যা কোনও বন্দর করার চেয়ে সম্পূর্ণ ভিন্ন প্রাণী।
মাইকেল কোহনে

46

আমি সঞ্চিত প্রকল্পগুলির সাথে সম্মত হওয়ার কয়েকটি কারণ সর্বোত্তম অনুশীলন নয়।

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

7
আপনি সঞ্চিত পদ্ধতিতে টেস্ট-প্রথম প্রোগ্রামিংয়ের মতোই সহজ করতে পারেন।

5
হুঁ, ভাল ... ১) ডিবি সঞ্চিত প্রক্রিয়াগুলির ব্যবহারের দ্বারা বোঝা যায় না যে তাদের মধ্যে ব্যবসায়িক যুক্তি যুক্ত করা হচ্ছে। 2) সঞ্চিত প্রকল্পগুলি ইউনিট পরীক্ষার জন্য সহজতম কিছু বিষয়। 3) স্টোর প্রোকগুলি অগত্যা টেস্ট-প্রথম অনুশীলনের পরিবাহী হয় না, সত্য, তবে গণনাযোগ্য সমস্ত কিছুই পরীক্ষার প্রথম হতে পারে না। ৪) ডিবাগিং কোনও সমস্যা হওয়া উচিত না কারণ স্টোর প্রোকগুলিতে সহজেই যাচাই করা এসকিউএল স্টেটমেন্ট এবং কার্সার ছাড়া আর কিছু থাকা উচিত নয়। এছাড়াও, প্রথমে কোডে এসকিউএল স্টেটমেন্টগুলি পরীক্ষা করে এবং ডিবাগ করে ডিবাগিংয়ের জায়গা নেওয়া উচিত, এবং তারপরে স্টোর প্রোকগুলিতে সরানো হয় ... কেবল আইএমও বিটিডব্লিউ।
luis.espinal

6
আপনি অবশ্যই কোনও ডিবি দেব নন। উত্স নিয়ন্ত্রণ, আইডিই - আপনি এসইডি বা সংস্করণের সাথে একই জাতীয় আইডিই ব্যবহার করছেন তবে এসপি ডিবাগ করা সহজ।
gbjbaanb

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

3
+1 এছাড়াও, সঞ্চিত প্রক্রিয়া ভাষা (pl / sql, t-sQL, plpgsql, ইত্যাদি) খুব ক্লঙ্কি এবং ভার্বোজ। একটি ডাটাবেস সংযোগ তৈরি করতে এবং ডাটাবেসের বাইরে ব্যবসায়ের যুক্তি পরিচালনা করতে স্ক্রিপ্টিং ভাষা ব্যবহার করা আমার পক্ষে অনেক সহজ।

22

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

হ্যাঁ, তবে অন্যান্য চটজলদি নকশার লক্ষ্যগুলি অর্জন করতে সক্ষম হয়ে। এগুলি রক্ষণাবেক্ষণ করা আরও কঠিন one যদি আমি যে প্রকল্পটিতে আছি তা যদি কোনও ইঙ্গিত হয় তবে আপনি সম্ভবত একাধিক, বেমানান এসপিদের সাথে শেষ করবেন যা মূলত একই কাজটি করে, কোনও সুবিধা ছাড়াই।

এসকিউএল ইঞ্জেকশন আক্রমণ থেকে আপনাকে রক্ষা করুন,

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

এবং গতিতে সহায়তা করে (যদিও এটি ডিবিএ বলেছিল যে এসকিউএল সার্ভার ২০০৮ থেকে শুরু করে যে নিয়মিত এসকিউএল অনুসন্ধানগুলি যথেষ্ট সময় চালিত হলে সংকলিত হয়)।

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

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

আপনার ডিবিএ শুনুন। সে জানে যে কি ঘটেছে।


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

17
@ গ্রেফ্যাড - " এসপিদের জন্য এখনও সোর্স নিয়ন্ত্রণ দেখতে পাইনি" - আপনি কি আমার সাথে মজা করছেন? একটি স্টোর প্রোক হ'ল একটি রক্তাক্ত টেক্সট ফাইল যা আপনি আপনার ডাটাবেস ইঞ্জিনে আপলোড করেন (এটি এটি গ্রহণ করে, এটি সংকলন করে এবং প্রয়োগের জন্য এটি ইনস্টল করে)) আমি যে সমস্ত জায়গাতেই কাজ করেছি যা প্রোস সংরক্ষণ করেছে, আমরা স্টোর প্রো উত্স কোড সংরক্ষণ করি, বলুন, সিভিএস, ক্লিয়ারকেস বা যে কোনও এসসিএম ব্যবহৃত হয়েছিল। স্টোর প্রোকগুলি উত্স-নিয়ন্ত্রিত হতে পারে না (কারণ তারা ডিবিতে রয়েছে) আমার অ্যাপ্লিকেশন উত্স কোড (জাভা, সি # বা যাই হোক না কেন) উত্স নিয়ন্ত্রিত হতে পারে না কারণ এটি সঙ্কলন করা হয় এবং উত্পাদনে মোতায়েন করা হয়।
luis.espinal

2
@ luis.espinal: আমি বলিনি যে তারা উত্স নিয়ন্ত্রণে থাকতে পারে না । আমি কেবল বলেছি যে এসপিদের ইতিহাস বজায় রাখার জন্য আমি কোনও সরঞ্জাম সম্পর্কে জানতাম না, ডাটাবেসের মধ্যে সেই ইতিহাস বজায় রাখার ইঙ্গিত দিয়েছিলাম। আপনি কিছু ভুল পড়েছেন বলে দয়া করে আমার দিকে কৌতুক করবেন না।
গ্রেফ্যাড

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

1
@ luis.espinal এটি সাধারণত যে কোনও সঞ্চিত পদ্ধতির উত্সটি ডাটাবেস থেকে পরে পাওয়া যায়? যদি তা হয় তবে আপনার কাছে কেবল একটি সরঞ্জাম থাকতে পারে যা এটিকে নিয়মিতভাবে বাইরে টেনে আনতে পারে এবং স্ক্র্যাচ থেকে কোনও ইনস্টলেশন পুনরায় তৈরি করতে অন্য সরঞ্জামগুলি রাখতে পারে। এটি সঠিক হওয়ার জন্য একবারে তা করুন।

17

কয়েক বছর আগে আমি যখন বিগ ফাইভের একটিতে কাজ করেছি তখন এটি সরকারী রেখা ছিল। যুক্তিটি হ'ল এসপিরা যেহেতু নির্দিষ্ট বাস্তবায়নের সাথে আবদ্ধ (PL / SQL বনাম টি / এসকিউএল বনাম ...), তারা অকারণে প্রযুক্তির পছন্দগুলিকে সীমাবদ্ধ করে।

টি / এসকিউএল থেকে পিএল / এসকিউএল-তে একটি বৃহত সিস্টেমে স্থানান্তরিত হওয়ার মধ্য দিয়ে আমি যুক্তিটি বুঝতে পারি। আমি মনে করি এটি কিছুটা ক্যানডের মধ্যেই রয়েছে - কতটা জায়গা সত্যই কোনও ডাটাবেস থেকে অন্য ডেটাবেসে সরে যায়?


10
@ ডেভি: একটি এন্টারপ্রাইজ সমাধানের জন্য আপনি সম্ভবত সঠিক। আপনি যদি প্যাকেজযুক্ত সফ্টওয়্যার তৈরি করেন, এমএসএসকিউএল শিপিংয়ের সাথে সাথে আপনার সবচেয়ে বড় সম্ভাবনা এটি ওরাকলে চালানো চাইবে।
এরিক জে।

3
@ এরিক: খুব সত্য। আমি এখন যেখানেই রয়েছি, আমরা প্রচুর এসপি ব্যবহার করি এবং লোকেরা এমএসএসকিউএল না চাইলে তাদের 'না' বলি। এটি করতে পেরে ভাল লাগছে।
ডেভই

3
@ ডেভি: বিক্রয় দল কি ইচ্ছে করছে আপনি "হ্যাঁ" বলতে পারেন?
এরিক জে।

2
এটি একটি সিস্টেমকে অন্য ডাটাবেস থেকে অন্য ডাটাবেসে স্থানান্তরিত করার মতো নয়, তবে গ্রাহকের ইতিমধ্যে যে কোনও ডাটাবেস সিস্টেম ব্যবহার করতে সক্ষম হওয়া একটি সিস্টেম রয়েছে। বড় ডেটাবেস ব্যয়বহুল।

@ এরিকজে: হ্যাঁ, তবে তারা একবার দেখবে যে তাদের কমিশনটির জন্য ব্যয় কী করবে, অনুরোধটি বন্ধ হয়ে যায়।
ডেভই

17

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

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

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

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

এছাড়াও শুধু গতি। ডেটাসেটগুলিতে প্রচুর অপারেশনগুলি সেট ভিত্তিক নয়। আপনি যদি সারি ভিত্তিক স্টাফ করার চেষ্টা করেন, হয় আপনি একটি কার্সার ব্যবহার করতে যাচ্ছেন, বা আপনি একটি "কার্সর" ব্যবহার করতে যাচ্ছেন (যখন বিকাশকারীরা প্রায়শই প্রতিটি সারিতে একের পর এক জিজ্ঞাসা করেন এবং সামগ্রীগুলি ঠিক একটি কার্সারের মতো @ ভেরিয়েবলগুলিতে সঞ্চয় করেন)। .. যদিও এটি প্রায়শই ফরওয়ার্ডপথের জন্য কার্সারের চেয়ে ধীর হয়)। এসকিউএল সার্ভার 2000 এর সাথে আমার এমন কিছু ছিল যা এটি মেরে ফেলার আগে 1 ঘন্টা চলছিল। আমি সেই কোডটি পার্লে আবার লিখেছিলাম এবং এটি 20 মিনিটের মধ্যে শেষ হয়েছে। যখন স্ক্রিপ্টিং ভাষা সি-এর চেয়ে 20-80x ধীর গতিতে এসকিউএলকে পারফরম্যান্সে ধূমপান করে তখন আপনার কাছে অবশ্যই এসকিউএল-এ কোনও রাইটিং ওরিয়েন্টেড ক্রিয়াকলাপ নেই।

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

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

লেনদেন-এসকিউএল সুবিধাগুলিও দেখুন। স্ট্রিং ম্যানিপুলেশন? আমি যে কোনও দিন জাভা স্ট্রিং ক্লাস / টোকেনাইজার / স্ক্যানার / রেজেক্স ক্লাস করব। হ্যাশ টেবিল / লিঙ্কযুক্ত তালিকাগুলি / ইত্যাদি আমি জাভা কালেকশন ফ্রেমওয়ার্কগুলি নিয়ে যাব ... এবং। নেট হিসাবে একই ... সি # এবং জাভা উভয়ই লেনদেন এসকিউএল এর চেয়ে বেশি বিকশিত ভাষা ... ট্রান্সঅ্যাক্ট-এসকিউএল সহ হেক কোডিং আমাকে সি সম্পর্কে alousর্ষা করে তোলে makes ।

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

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

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

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

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


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

12

আপনি সার্ভারে সঞ্চিত পদ্ধতিগুলি কীভাবে সংস্করণ করবেন?

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

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

সঞ্চিত পদ্ধতিগুলি বহনযোগ্য নয়, তবে সাধারণত এসকিউএল হয় না (কখনও কখনও দেখা যায় ওরাকল ডেট পরিচালনা - uggghh)।

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


6
আপনি সার্ভারে সঞ্চিত পদ্ধতিগুলি কীভাবে সংস্করণ করবেন? - আপনি সংস্করণটি সংগ্রহের উত্স কোডটি নিয়ন্ত্রণ করে। যখন মোতায়েন করার সময় হয়ে যায়, আপনি স্টোর প্রোসগুলি (প্রদত্ত বেসলাইন থেকে) ধরেন এবং আপনি (বা আপনার ডিবিএ) উত্পাদনে নিযুক্ত হন। পুনর্নবীকরণ (এটি পরীক্ষার বা উত্পাদনের ক্ষেত্রেই হোক) অবশ্যই সঞ্চিত কার্যনির্বাহী পরিকল্পনাটি ফুটিয়ে তোলে তবে আপনি উত্সটি আপনার এসপিগুলিকে নিয়ন্ত্রণ করেন কিনা তা স্বাধীনভাবে ঘটবে।
luis.espinal

1
@ ব্যারিব্রাউন জনগণের সরাসরি সার্ভারে অ্যাক্সেস থাকে এবং সঞ্চিত পদ্ধতি পরিবর্তন করতে পারে তবে এটি কাজ করে না। আমার কাছে এমন একটি প্রক্রিয়া থাকতে হবে যা এসপিদের নজর রাখবে, বা প্রতিটি ব্যবহারের আগে একটি পরীক্ষা করিয়ে নেব ...
ক্রিস্টোফার মাহান

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

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

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

9

এটি আমি শিখেছি সমস্ত কিছুর বিপরীতে।

আপনার আরও কিছু বের করার প্রয়োজন হতে পারে। [গ্রিন] গম্ভীরভাবে, সঞ্চিত প্রকল্পগুলি কমপক্ষে 10 বছর ধরে হ্রাস পাচ্ছে। এনডিয়ার ক্লায়েন্ট-সার্ভার প্রতিস্থাপনের পর থেকেই বেশ সুন্দর। পতন কেবল জাভা, সি #, পাইথন ইত্যাদির মতো ওও ভাষা গ্রহণের মাধ্যমেই ত্বরান্বিত হয়েছে languages

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

সঞ্চিত পদ্ধতি আপনাকে কোড পুনরায় ব্যবহার এবং এনক্যাপসুলেশন দেয় (সফ্টওয়্যার বিকাশের দুটি স্তম্ভ)

খুবই সত্য. তবে, এটি একটি শালীন আর্কিটেক্ট ওও স্তরও করে।

সুরক্ষা (আপনি স্বতন্ত্র সঞ্চিত প্রোকটিতে অনুমতি দিতে বা প্রত্যাহার করতে পারেন)

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

এসকিউএল ইঞ্জেকশন আক্রমণ থেকে আপনাকে রক্ষা করুন

প্যারামেট্রাইজড কোয়েরি করা ছাড়া আর কিছুই নয়। যা আপনার যাইহোক করা প্রয়োজন

এবং গতিতে সহায়তা করে (যদিও এটি ডিবিএ বলেছিল যে এসকিউএল সার্ভার ২০০৮ থেকে শুরু করে যে নিয়মিত এসকিউএল অনুসন্ধানগুলি যথেষ্ট সময় চালিত হলে সংকলিত হয়)।

আমি মনে করি এটি এমএসএসকিউএল 7 বা 2000 সালে শুরু হয়েছিল stored এবং, আপনার যদি এটির প্রয়োজন হয়, পরীক্ষা করুন।

অ্যাগিল সফটওয়্যার ডেভলপমেন্ট পদ্ধতি ব্যবহার করে আমরা একটি জটিল অ্যাপ বিকাশ করছি। যে কেউ সঞ্চিত প্রকটগুলি ব্যবহার করতে চান না কেন তারা ভাল কারণগুলি সম্পর্কে ভাবতে পারেন?

আপনি চাইবেন এমন অনেক কারণ আমি ভাবতে পারি না । জাভা / সি # / যে কোনও তৃতীয় জিএল ভাষা এনক্যাপসুলেশন, পুনঃব্যবহার এবং নমনীয়তা ইত্যাদিতে টি-এসকিউএল এর চেয়ে অনেক বেশি সক্ষম which

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


1
একটা হল অনেক যদি আপনি ডাটাবেস থেকে বের রাক্ষুসে ডেটাসেট স্থানান্তর করতে সহজ কাপড় যা করতে হবে না performancewise লাভ। প্রয়োজন হলে পরিমাপ করুন এবং অনুকূলিত করুন।

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

1
আপনার ডাটাবেস সার্ভারকে হ্রাস করবেন না। কীভাবে এটি সঠিকভাবে ব্যবহার করতে হয় তা শিখুন।
ক্রেগ

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

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

4

উপরের সমস্ত ক্ষেত্রে বিবেচনা করে, আমি আরও একটি যুক্ত করতে চাই। এসপি-র পছন্দটি লোকের পছন্দের উপরও নির্ভর করে।

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

এসপি কেবল সাধারণ অপারেশনের জন্য ব্যবহার করা উচিত। ভাল যে আমার পছন্দ।


4

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

এটি করার জন্য আমাদের কারণটি হ'ল ক্রস ল্যাঙ্গুয়েজ কোয়েরি পুনরায় ব্যবহারের সুবিধার্থে। সততার সাথে এটি করার আরও ভাল উপায় আর নেই।

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

সুতরাং কন পাশ।

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

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

  3. # 1 কারণে সংযুক্ত পদ্ধতিতে ইন্টারফেসে পরিবর্তনগুলি কিছুটা সমস্যাযুক্ত তবে বিপুল সংখ্যক ক্লায়েন্ট অ্যাপ্লিকেশন জড়িত থাকলে এটি একটি খুব বড় দুঃস্বপ্নে পরিণত হতে পারে।

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

ইতিবাচক দিকে। উপরের সমস্যাগুলি সমাধান করতে পারবেন বলে ধরে নিলে আপনি পাবেন:

  1. সেট অপারেশনগুলিতে বর্ধিত স্পষ্টতার সম্ভাবনা। আপনার ক্যোয়ারী খুব বড় বা খুব নমনীয় হলে এটি বিশেষভাবে সত্য। এটি বর্ধিত পরীক্ষাযোগ্যতা বাড়ে।

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

  3. পুনরায় ব্যবহার অনুসন্ধান করুন।

ওহ এবং কয়েকটি জিনিস আপনার এসপিতে প্রায় কখনও করা উচিত নয়:

  1. অ-লেনদেন যুক্তি। আপনি ইমেলটি প্রেরণ করেছেন যে অর্ডারটি প্রেরণ করা হয়েছে তবে লেনদেনটি আবার ঘুরিয়েছে ... বা এখন আপনি ইমেল সার্ভারটি অনলাইনে আসার অপেক্ষায় রয়েছেন .... বা আরও খারাপ আপনি আপনার লেনদেনটি ব্যাক করতে পারেন কারণ আপনি পৌঁছাতে পারবেন না ইমেল সার্ভার ....

  2. প্রচুর ছোট্ট প্রশ্নগুলি আলগাভাবে একসাথে জড়িত, পদ্ধতিগত যুক্তি দিয়ে ছিটানো ....


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

3

কার জন্য কাজ কর?

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

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

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

এখানে চিত্র বর্ণনা লিখুন

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


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

এছাড়াও আপনি 2004 থেকে একটি নিবন্ধ যুক্ত করেছেন, আইএমএইচও এর পরে ল্যান্ডস্কেপটি বেশ খানিকটা বদলে গেছে। OR / M's অনেক বেশি সাধারণ হয়ে উঠেছে। রুবি / রেলস অ্যাক্টিভেকর্ড, এমএস পাইকন এবং ইএফ, জ্যাঙ্গো সহ পাইথন ইত্যাদি নিয়ে এসেছিল
ব্রুক

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

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

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

3

ডাটাবেস ব্র্যান্ডগুলি স্যুইচ করা এবং একই সঞ্চিত প্রক্রিয়াটি ব্যবহার করা খুব কঠিন।

আপনার দলে হয় একটি ডিবিএ নেই এবং অন্য কারও সাথে স্কুএল দিয়ে কিছু করতে চায় না।

এটি কোনও প্রোগ্রামার ভি ডিবিএ পিসিং প্রতিযোগিতা ছাড়া আর কিছুই নয়।


2

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


ডাউনভোটাররা মন্তব্য করবেন।
স্যান্ডরক

2

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

এটি বলেছিল, আমি এমন সংস্থাগুলি জানি যাগুলি ডাটাবেসে থাকা পিএল / এসকিউএল প্যাকেজগুলিতে সমস্ত ব্যবসায়ের যুক্তি যুক্ত করে বেশ ভাল করে । এগুলি খুব বড় অ্যাপ্লিকেশন নয়, তবে তুচ্ছ নয়; 20K-100K এলওসি বলুন। (পিএল / এসকিউএল টি-এসকিউএল এর চেয়ে ভাল সে ধরণের সিস্টেমের জন্য উপযুক্ত, সুতরাং আপনি যদি কেবল টি-এসকিউএল জানেন তবে আপনি সম্ভবত এখন অবিশ্বাসের দিকে মাথা নেড়েছেন ...)


2

এটি এখনও উল্লেখ করা হয়নি এমন অন্য একটি বিষয়:

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

সুতরাং আপনি যদি ডেটা-ট্রান্সফার-অবজেক্ট ডিটিও এবং ডিএও স্তরটি স্বয়ংক্রিয়ভাবে তৈরি করার জন্য কোনও সরঞ্জাম ব্যবহার করতে চান (যেমন লাইফ্রেয়ের "পরিষেবা নির্মাতা" করেন) তবে আপনি সহজেই এটি করতে পারবেন না।

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


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

2

প্রোগ্রামিং একক, আমি সঞ্চিত প্রক্রিয়া লেখার প্রতিরোধ করতে পারি না

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

সুতরাং, আমি একটি পদ্ধতি বলা হয় logIn। আপনি যখন লগ ইন করেন, আপনি সর্বদা সবে পাস usernameএবং password। ফিরে পাসের ফলাফলটি পূর্ণসংখ্যা userId

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


1

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


3
এটি একটি ডাটাবেস স্কেল করা কঠিন?
জেফো

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

স্কেলিং ডাটাবেস কোনও গল্পের অ্যাপের শেষের স্কেলিংয়ের চেয়ে শক্ত নয়
ব্রায়ান ওগডেন

1

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

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

হ্যাঁ, স্কিমা আপডেট হয়ে গেলে এসপিগুলিকে অপসারণ করা আমাদের উদ্দেশ্য। তবে, কর্পোরেট বিকাশের সমস্ত কিছুর মতো, আমরা দেখব যে এটি কখনও ঘটে কিনা! [নীরবে]


0

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

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

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

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


-1

"আমার জন্য" সঞ্চিত পদ্ধতি ওএলএপি "কেবল পঠনযোগ্য" অপারেশনগুলির জন্য উপযুক্ত, বিরল ব্যবহার।

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

আমার জন্য গুরুত্বপূর্ণ বিষয় হ'ল ডিবাগ সঞ্চিত প্রক্রিয়াগুলির তুলনায় ব্যবসায়ের স্তরে ডিবাগ করা সহজ।


আপনি কিছু অনুমান করেছেন: ওপির ওএলএপি প্রয়োজন (প্রশ্নে বর্ণিত নয়); যে প্ল্যাটফর্মটি ব্যবহৃত হচ্ছে তার জাভা অ্যাপ্লিকেশন সার্ভার রয়েছে (ট্যাগটি এসকিউএল সার্ভার সম্পর্কে সম্ভাব্য নয়) unlikely এছাড়াও আপনি উত্তর কিছু আছে যা অন্য 22 টি উত্তর ইতিমধ্যে গোপন করিলাম না আনতে না
আদম জুকারম্যান

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

এই কিছু সারগর্ভ প্রস্তাব উপর পয়েন্ট তৈরি এবং পূর্বে 24 উত্তর ব্যাখ্যা, কমই একটি একটি 4 বছর বয়সী প্রশ্ন bumping মূল্য বিষয়বস্তু বলে মনে হচ্ছে না
মশা

-2

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

আপনার সরঞ্জামগুলি বুদ্ধিমানের সাথে চয়ন করুন এবং আপনি দীর্ঘমেয়াদে নিজেকে আঘাতের একটি পৃথিবী বাঁচান।


যদি আপনি ডাউনওয়েতে যাচ্ছেন তবে তা করুন তবে কমপক্ষে কেন তা ব্যাখ্যা করুন।
নিকো

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

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