সঞ্চিত পদ্ধতিগুলি কি ত্রি-স্তরের পৃথকীকরণ লঙ্ঘন করে?


41

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

আমি মনে করি বিশ্ব সংরক্ষণের পদ্ধতি ছাড়াই খুব মারাত্মক জায়গা হয়ে উঠবে।

তারা কি সত্যিই ত্রি-স্তরের বিচ্ছেদ লঙ্ঘন করে?


9
তাদের জিজ্ঞাসা করুন যে তারা
3/2

7
মনে রাখবেন স্তর এবং স্তর এক এবং এক নয়।
NoChance

2
@ emmad-কারিম এই প্রশ্নের আমাকে সাহায্য ( stackoverflow.com/questions/120438/... )। সমস্যাটি হ'ল স্প্যানিশ (আমার মাতৃভাষা) ভাষার প্রযুক্তিগত সাহিত্যের জন্য এটি একটি শব্দ ব্যবহার করে ("কপা"), যেখানে ইংরেজির দুটি খুব স্বতন্ত্র শব্দ রয়েছে।
তুলাইনস কর্ডোভা

1
@ ব্যবহারকারী 1598390, আপনি ঠিক বলেছেন এটি বিশেষত বিভ্রান্তিকর হয়ে উঠতে পারে যে সফটওয়্যারটির জগতের ভাষাগুলি যখন এক ভাষাতেই সংজ্ঞায়িত হয় তখন একটি ভাষাতেই সংজ্ঞা আসে।
NoChance

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

উত্তর:


33

আপনার সহকর্মীরা বাস্তবায়নের সাথে আর্কিটেকচারকে আবদ্ধ করছেন।

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

আসুন একটি ত্রি-স্তরযুক্ত অ্যাপ্লিকেশনটি দেখুন যেখানে দুটি ডাটায়ার প্রয়োগ করা হয়েছে:

  • ডেটা টিয়ার: চার মান টেবিল অপারেশন দিয়ে অ্যাক্সেস করা ডাটাবেস সারণি গঠিত ( INSERT, UPDATE, DELETEএবং SELECT)।
  • লজিক স্তর: কেবলমাত্র ব্যবসায়ের যুক্তি প্রয়োগ করে এবং উপরে বর্ণিত পদ্ধতিগুলি ব্যবহার করে ডেটা স্তরকে অ্যাক্সেস করে এমন সঞ্চিত পদ্ধতি রয়েছে।
  • উপস্থাপনা স্তর: একটি ওয়েব সার্ভার চলমান কোড নিয়ে গঠিত যা কেবলমাত্র সঞ্চিত প্রক্রিয়া কল করে লজিক স্তরকে অ্যাক্সেস করে।

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

এই ধরণের জিনিস এবং এটি যে বাণিজ্য নিয়ে আসে তা কোনও নির্দিষ্ট পরিস্থিতিতে গ্রহণযোগ্য কিনা তা আপনার এবং আপনার সহকর্মীদের আপনার রায় ব্যবহার করে নির্ধারণ করতে হবে।


2
সুতরাং আমি কী তাদের সংরক্ষণ করতে পারি যে স্টোরেজ পদ্ধতিগুলি লজিক স্তর, আর্কিটেকচার-ভিত্তিক, তারা ডাটাবেসে সঞ্চিত আছে তা নির্বিশেষে একটি অংশ?
তুলাইনস কর্ডোভা

3
@ ব্যবহারকারী 1598390: হ্যাঁ। যদিও এটি 3-স্তর বলার স্তর হবে, এবং 3 স্তরের নয়।
jmoreno

4
@ ব্যবহারকারী 1598390: আপনি যতক্ষণ তা প্রমাণ করতে পারবেন তা বলতে পারেন। প্রথমবারের মতো উপস্থাপনা স্তরটি SELECTসরাসরি টেবিলগুলি (ডেটা স্তর) থেকে বের হয়ে মডেলটি ভেঙে যায়।
blrfl

@blrfl এটাই আমি যত্ন নিয়েছি;)
তুলিনস কর্ডোভা

2
@ ব্যবহারকারী 1598390: এটি ঠিক আছে, কেবল মনে রাখবেন লক্ষ্যটি উদ্বেগের যৌক্তিক বিভাজন, বিভিন্ন হার্ডওয়্যারে জিনিস না রেখে।
jmoreno

19

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

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


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

1
আমেন। লোকেরা মনে করে যে স্প্রোকস = ব্যবসায় "কোড"। এগুলিকে একটি ডিবি 'এপিআই' হিসাবে ভাবা উচিত এবং তারপরে তারা আরও অনেক কিছু বোঝায়। অবশ্যই, তারা আপনার প্রবণতা থেকেও পারফরম্যান্স প্রয়োজন যেখানে প্রান্তের কেসগুলি ঠিক করতে পারে!
gbjbaanb

5

২০০৪ সালের অ্যাটউডের পরামর্শ আজও সত্য, কেবল আমাদের কাছে এখন ওআরএমের সুবিধাও রয়েছে।

http://blog.codinghorror.com/who-needs-stored-procedures-anyways/

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


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

3

সংক্ষিপ্তসার সংক্ষিপ্তসার: এটি সত্যিই আপনার সঞ্চিত পদ্ধতি এবং ব্যবসায়ের প্রয়োজনীয়তার ব্যবহারের উপর নির্ভর করে।

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

পরিভাষা সম্পর্কে বলতে গিয়ে, সাধারণ কথায় এই স্তরগুলি বর্ণিত:

  • উপস্থাপনা স্তর , বা ব্যবহারকারী পরিষেবাদি স্তর - একটি ব্যবহারকারীকে অ্যাপ্লিকেশনটিতে অ্যাক্সেস দেয়।
  • মাঝারি স্তর , বা ব্যবসায়ের পরিষেবা স্তর - ব্যবসায় এবং ডেটা বিধি নিয়ে গঠিত।
  • ডেটা স্তর , বা ডেটা পরিষেবাদি স্তর - সাধারণত একটি ডাটাবেসে বা স্থায়ী সঞ্চয়স্থানে সঞ্চিত অবিরাম ডেটা দিয়ে ইন্টারঅ্যাক্ট করে।

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

ত্রি-স্তরের ডিজাইনের সুবিধাগুলি হ'ল:

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

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


2

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

একটি স্তর হ'ল আপনার সফ্টওয়্যার সমাধান তৈরি করে এমন উপাদানগুলির জন্য একটি লজিক্যাল স্ট্রাকচারিং মেকানিজম; স্তর একটি সিস্টেম অবকাঠামোর জন্য একটি শারীরিক কাঠামোগত প্রক্রিয়া। ( রেফারেন্স )

আমার মতে ডাটাবেসে ব্যবসায়ের যুক্তি নির্মাণের ক্ষেত্রে দুটি বড় সমস্যা রয়েছে:

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

  2. অনুভূমিক স্কেলিবিলিটি: আপনার সিস্টেমটি স্কেল করার একমাত্র উপায় হ'ল সেই শারীরিক সার্ভার পরিবর্তন করে যার উপরে আরও শক্তিশালী ডেটাবেস, যা ব্যয়বহুল (64 জিবি র‌্যাম সহ একটি সার্ভার); রিলেশনাল ডাটাবেসগুলি অনুভূমিকভাবে খুব খারাপ এবং এমনকি আরও বেশি ব্যয়ে স্কেল। ওও অন্তর্নির্মিত সার্ভারে ব্যবসায়িক যুক্তি সহ আপনি অনেকগুলি নোডে সার্ভার স্থাপন করে আনুভূমিকভাবে বেশ ভাল স্কেল করতে পারবেন (জাভাতে অনেক অ্যাপ্লিকেশন সার্ভার এটি সমর্থন করে)।


-1

কিছুক্ষণ আগে আমাদের অফিসে এই বিতর্ক হয়েছিল, আমি ডেটাবেস ডেভলপমেন্টের পক্ষে ছিলাম, আমি এর সম্পর্কে আমার মতামত অনুসরণ করছি

  1. যদি আপনি ওরাকল ডেটাবেস ব্যবহার করেন তবে আপনার যথাসম্ভব পিএল / এসকিউএল ব্যবহার করা উচিত, কারণ নিশ্চিত যে বিনিয়োগকারী সংস্থাগুলি এখন থেকে কমপক্ষে 10 বছর ধরেও ওরাকলকে আটকে থাকবে। গতকাল অ্যাপ্লিকেশনে থাকাকালীন আপনি ওরাকল ফর্মগুলি ব্যবহার করছেন, আজ। নেট ওয়েব ফর্মগুলি, তারপরে এমভিসি, তারপরে আগামীকাল আপনি অ্যাংুলারজ ব্যবহার করবেন এবং কেবলমাত্র বিশ্রামের অ্যাপস দরকার need যদি আপনার সর্বোচ্চ যুক্তি ডাটাবেসে থাকে তবে আপনি সহজেই নতুন ফ্রন্ট এন্ড প্রযুক্তিগুলিতে মাইগ্রেট করতে পারেন।
  2. ডেটাবেস বিকাশ খুব দ্রুত এবং খুব দক্ষ পারফরম্যান্স অনুযায়ী। আপনাকে কেবল একটি সম্ভাবনা দেওয়ার জন্য। আমাদের প্রকল্পে application টি অ্যাপ্লিকেশন বিকাশকারী এবং একটি ডাটাবেস বিকাশকারী ছিলেন এবং ৮০% যুক্তি ডাটাবেসে ছিল।
  3. যদি আপনি ওরাকল ব্যবহার করে থাকেন তবে আপনি আপনার ডাটাবেস পদ্ধতিগুলি সরাসরি রেস ফুল এপিতে রূপান্তর করতে ইউটিলিটিগুলি ব্যবহার করতে পারেন।

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


"যদি আপনি ওরাকল ডেটাবেস ব্যবহার করেন তবে আপনার যথাসম্ভব পিএল / এসকিউএল ব্যবহার করা উচিত," সঞ্চিত পদ্ধতিগুলি কোনও স্থাপত্যের মধ্যে সবচেয়ে বেশি বোতল-ঘাড় এবং স্কেল সিস্টেমের পক্ষে সবচেয়ে বেশি বোঝা যুক্ত করে। সংস্করণ নিয়ন্ত্রণ এবং ইউনিট-পরীক্ষার দৃষ্টিকোণ থেকে পরিচালনা করার জন্য এগুলিও একটি বেদনা "কারণ নিশ্চিত যে বিনিয়োগকারী সংস্থাগুলি এখন থেকে কমপক্ষে 10 বছরেরও বেশি সময় ধরে ওরাকলকে আটকে থাকবে।" এটি কেবল বাজে কথা। এটা চিন্তা করছো কেন? আপনি যদি নিজের সিস্টেমটিকে বোকা পিএল / এসকিউএল প্রক্রিয়াজাতীয় আবর্জনা দিয়ে পূর্ণ করেন তবে আপনি কোনও সংস্থাকে সমসাময়িক কিছুতে যেতে বাধা দিতে পারেন। এটা সত্য হতে পারে।
জিমি জেমস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.