ব্যবসায়ের যুক্তি সঞ্চিত পদ্ধতিতে রাখবেন কিনা?


21

বিষয়টিকে নিয়ে সর্বদা একটি বিতর্ক থাকে - "ব্যবসায়ের যুক্তি সঞ্চিত পদ্ধতিতে রাখবেন কি না?" আমরা যদি ওআরএম সরঞ্জামটি ব্যবহার না করার এবং ব্যবসায়ের লজিককে সঞ্চিত পদ্ধতিতে না রাখার সিদ্ধান্ত নিয়ে থাকি তবে আমরা ব্যবসায় যুক্তি কোথায় রাখব?

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

কোন পরামর্শ ...?


আমি পক্ষপাতদুষ্ট -> সর্বদা संग्रहিত প্রকস। তবে আমি পক্ষপাতিত্ব করছি। অ্যাগিল প্রোগ্রামিং ভুলে যান, দুঃখজনক বাস্তবতা হ'ল ব্যবসায়ের জগতে সর্বদা পরিবর্তন ঘটে এবং "তাত্ক্ষণিকভাবে" করা দরকার। সঞ্চিত পদ্ধতিগুলি এটির অনুমতি দেয়। এটি একটি জীবন রক্ষাকারী। কোডবেসের মাধ্যমে এ জাতীয় পরিবর্তনগুলি করার চেষ্টা করা সম্ভব হবে না।
অন্ধকার রাত

4
@ ডার্কনাইট, আপনার প্ল্যাটফর্ম এবং আর্কিটেকচারে এটির মতো বিবৃতি দেওয়ার জন্য ভারী নির্ভর করে। আমি দেখতে পাচ্ছি না যে কেন একটি ডাটাবেসে স্টোরেজ পদ্ধতি মোতায়েন করা একটি নতুন ওয়ার ওয়ার্ড তৈরির জন্য একটি বিল্ড এবং মোতায়েন করা স্ক্রিপ্ট কার্যকর করে, এটি মোতায়েন করে অ্যাপ্লিকেশন সার্ভারটি পুনরায় আরম্ভ করার চেয়ে অনেক কম সময় লাগে ing
ম্যাপেল_শ্যাফ্ট

7
সঞ্চিত পদ্ধতি - কম্পিউটার বিজ্ঞানের সেপটিক ট্যাঙ্ক।
মংগাস পং 13

1
সঞ্চিত পদ্ধতি - অন্যগুলির মতো ঠিক একটি সরঞ্জাম।
সাম ইয়ি

উত্তর:


15

আমি একটি ব্যবহারিক পদ্ধতির অবলম্বন করব - historতিহাসিকভাবে ব্যবসায়ের যুক্তি সঞ্চিত প্রক্সগুলিতে রাখার প্রাথমিক 'সুবিধা' হ'ল পারফরম্যান্স কারণে (2.5 স্তরের আর্কিটেকচার), যেখানে বিজনেস লজিককে বিএলএল স্তরকে আলাদা করা (3 / এন স্তর) সাধারণত একটি থেকে ক্লিনার রক্ষণাবেক্ষণের দৃষ্টিভঙ্গি এবং পরীক্ষার পক্ষে সহজ (উপায়ে অ্যাক্সেস / স্টাট ডেটা অ্যাক্সেস)।

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

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


1
অ্যাপ্লিকেশন স্তরে ইউনিট পরীক্ষাগুলি লিখতে সহজতর জন্য +1, তবে স্বয়ংক্রিয় ডিবি ইউনিট পরীক্ষার কাঠামো অনেক দীর্ঘ এগিয়ে গেছে।
ম্যাপেল_শ্যাফ্ট

14

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

যাইহোক, বিভিন্ন প্রযুক্তি ব্যবহার করে প্রচুর বিতরণ অ্যাপ্লিকেশন (সি #, জাভা, পিক (জিজ্ঞাসা করবেন না) দিয়ে বৃহত উদ্যোগের জন্য কাজ করার পরে সঞ্চিত পদ্ধতি ব্যবহারের একটি উল্লেখযোগ্য সুবিধা স্পষ্ট হয়ে উঠেছে:

সঞ্চিত পদ্ধতিগুলি বিভিন্ন অ্যাপ্লিকেশন জুড়ে ভাগ করা যায়


খুব ভাল পয়েন্ট
NoChance

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

2
আপনি যদি নিজের ডেটা
ম্যানেজমেন্টকে

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

1
fyi এই উত্তরটি বেলুনি, 6 বছর পরে - কেবল ডাটাবেসে ডেটা যায়। আপনি সেখানে যুক্তি রেখেছেন যে আপনি অনেকটা সমস্যায় পড়েছেন লাইনে। ডিবি অ্যাক্সেস করে এমন আপনার পছন্দের ভাষায় কেবল মাইক্রোসার্চিস তৈরি করুন।
নিমচিম্পস্কি

6

আমাদের দলের এখানে একটি নরম নিয়ম রয়েছে। কখনও কখনও টি-এসকিউএল এ ব্যবসায় যুক্তি সমাধান করা আরও ভাল, কখনও কখনও এটি সি # (বিজনেস লেয়ার) এ করা সহজ।

সুতরাং আমাদের কাছে একটি ব্যবহারিক সমাধান রয়েছে: যেখানে এটি আরও ভাল ফিট করে সেখানে রাখুন। আমি জানি তত্ত্বটি কখনও কখনও এটি সম্পর্কে খুব কঠোর হয় ... তবে এটি তত্ত্ব :-)


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

2
নাঃ। এটি সর্বদা ব্যবসায় স্তর বা টি-এসকিউএল এর মধ্যে থাকে। যুক্তিটি কোথায় সংরক্ষণ করা হয়েছে তা রক্ষণাবেক্ষণের ক্ষেত্রে আসে সবচেয়ে ছোট সমস্যা।
gsharp

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

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

4
এসকিউএল সার্ভার যে আরও ভাল করতে পারে এবং তদ্বিপরীত সেগুলির জন্য আমি সি # এর অপব্যবহার করার সত্যিকার অর্থেই দেখছি না।
gsharp

3

উভয়েরই সুবিধা এবং অসুবিধা রয়েছে (আমার মতে):

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

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


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

2

আমরা আমাদের বিজনেস লজিককে সর্বদা বিজনেস লজিক লেয়ারে রাখি। আপনি যদি এটি স্টোরেড পদ্ধতিতে রাখেন, আপনি একবার আপনার আরডিবিএমএস পরিবর্তন করার পরে এটি হারিয়ে যাবে।


16
সর্বশেষ যেটি পরিবর্তন হয় তা হ'ল RDBMS ;-)
gsharp

সুতরাং এর অর্থ কি, আপনি তথ্য সংগ্রহ, আপডেট এবং সন্নিবেশ করাতে সঞ্চিত পদ্ধতিটিকে সীমাবদ্ধ করেন ....?
প্রবীণ পাতিল

1
প্রতিটি বড় ব্যবস্থা আমি দেখেছি, বাস্তবতা হ'ল ডাটাবেস হল সিস্টেম। প্রোগ্রামিং ল্যাঙ্গুয়েজগুলি ঠিক "সামনের প্রান্ত" হিসাবে এই মুহুর্তে প্রায় অপ্রাসঙ্গিক হয়ে যায় ..
ডার্কনাইট

2
@gsharp, এটি সর্বদা সত্য নয়। আপনি হয় আরাকলির মতো অন্য আরডিবিএমএস যুক্ত করতে বা বিদ্যমানটিকে সম্পূর্ণরূপে প্রতিস্থাপন করতে চাইতে পারেন। বা, কিছু ক্ষেত্রে, আপনি ডামি ডেটা সহ বাস্তব ডেটা প্রতিস্থাপন করতে চান।
jলজেকার

2
@ এলজেকার অবশ্যই এটি সর্বদা সত্য নয়। তবে এটি সম্ভবত ডিবি-র পরিবর্তে প্রোগ্রামটি পরিবর্তন করে (সফ্টওয়্যারটির নতুন ডিজাইন, নতুন প্রোগ্রামিং ভাষা ইত্যাদি) পরিবর্তন করে।
gsharp

2

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

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

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


1

যুক্তি সর্বদা বিএলএলে থাকা উচিত কারণ:

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

আমি বিশ্বাস করি একটি আইন থাকা উচিত যা জানিয়েছে যে এসপি এক্স লাইনের চেয়ে বেশি দীর্ঘ হওয়ার পরে এটি উদ্দেশ্য অনুযায়ী কাজ করে না।


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

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

0

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

আমি মনে করি ডাটাবেস বহনযোগ্যতা বাদে এই পদ্ধতির সর্বাধিক সুবিধা হ'ল আপনি নিজের অনুসন্ধানের উত্তরগুলি একটি সন্ধানে খুঁজে পেতে পারেন।

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


0

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

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