এমভিসি: সম্পূর্ণ জনবহুল মডেল বা আংশিকভাবে পূর্ণ মডেল?


10

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

কখনও কখনও এটি কেবলমাত্র 20 টি মডেল অবজেক্টের একটি তালিকা ডাটাবেস থেকে সমস্ত মান সহ পূরণ করার জন্য মনে হয় যখন আপনি জানেন যে আপনার মধ্যে কয়েকটি মাত্র প্রয়োজন হবে।

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

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

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

হার্ডওয়্যার সস্তা, উন্নয়ন ব্যয়বহুল। অ্যাপটি প্রতি ঘন্টা কয়েক লক্ষ অনুরোধের স্কেল করার প্রয়োজন পরেও কি এটি সত্য?


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

>> সত্যি? আপনি এই অনুশীলন থেকে কোনও কর্মক্ষমতা ওভারহেড পরিমাপ করেছেন? << - আমি এটির প্রত্যাশা করেছি। না আমি নেই। তবে এটি পরিমাপ করা এবং অন্যথায় ভুল প্রমাণিত হওয়া আকর্ষণীয় হবে।
প্রীতম বারহাতে

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

1
আমি একটি দুর্দান্ত নিবন্ধ পেয়েছি যা আপনার ডোমেন মডেলটি বনাম এমএসডিএন.মিকায়সফ্রোসফেসন /en-us/magazine/ee236638.aspx এ একটি ডিটিও প্রেরণ সম্পর্কিত প্রশ্নকে কভার করে ।
মায়ো

উত্তর:


3

আপনার দুটি বিকল্প রয়েছে:

1) মডেলটির কিছু ক্ষেত্র পূরণ না করে

2) আপনার নির্দিষ্ট পরিস্থিতির জন্য একটি অতিরিক্ত "হালকা" মডেল তৈরি করুন

কোনটি চয়ন করতে হবে তা আবার দুটি বিষয়ের উপর নির্ভর করে:

ক) "পূর্ণ" মডেলের কতগুলি ক্ষেত্র উপেক্ষা করা হচ্ছে

খ) এই "লাইট" মডেলটি কতবার ইনস্ট্যান্ট করা হবে

যদি কেবল দু'একটি বা আরও বেশি ক্ষেত্র থাকে যা পূরণ করা যায় না, তবে 1 দিয়ে যাওয়া ঠিক হবে)।

খ) যদি কেবল ব্যতিক্রমী পৃথক পরিস্থিতি হয় তবে কেবলমাত্র একটি ব্যবহারের ক্ষেত্রে অতিরিক্ত মডেল তৈরির কোনও কারণ নেই।

আর একটি পদ্ধতি হ'ল "লাইট" মডেলটি সংজ্ঞায়িত করা এবং এটি থেকে "পূর্ণ" মডেলটি উত্তরাধিকারী।


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

3

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

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

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

হার্ডওয়্যার সস্তা, তবে কোনও পরিমাণ হার্ডওয়্যারই খারাপ ডিজাইনটি ভালভাবে সম্পাদন করতে পারে না।


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

1
প্রশ্ন বলছে যে এই ক্ষেত্রে কেবল 2 টি সম্পত্তি প্রয়োজন properties
স্টিভ

-2

মডেলটি কোনও ডিএও নয়।

এবং অন্য একটি জিনিস: আপনি যদি বলেন যে আপনার কাছে 20 টি মডেল রয়েছে (গ্রাহকরা, আপনার উদাহরণ থেকে), তবে এটি কোনও এমভিসি মডেল নয়। ডোমেন মডেলটি একক টেবিল সারিতে সরাসরি মানচিত্র দেয় না । পরিবর্তে এটি আপনার "গ্রাহকদের" সাথে করা সমস্ত ক্রিয়াকলাপের জন্য দায়বদ্ধ হওয়া উচিত।

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

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


PS যদি আপনার মডেলের ভিতরে ডাটাবেস যুক্তি থাকে তবে এটি ডোমেন ব্যবসায়ের যুক্তিটিকে নিয়ামকের মধ্যে ঠেলে দেবে।
mefisto

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