অ্যাপ্লিকেশন কোডটি লেখার আগে আপনার ডাটাবেসটি ডিজাইন করা উচিত?


57

একটি ডাটাবেস ডিজাইনের সবচেয়ে সহজ এবং কার্যকর উপায় কি? আমার দৃষ্টিকোণ থেকে, অ্যাপ্লিকেশনটির ডেটা স্টোর ডিজাইনের জন্য কয়েকটি বিকল্প রয়েছে:

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

আপনার অভিজ্ঞতায়, আপনি সবচেয়ে উত্পাদনশীল এবং দক্ষ পদ্ধতি বলে মনে করেন?


বিভাজক এবং
এসডিএলসি

1
আপনি flywaydb.org আকর্ষণীয় মনে হতে পারে । এটি আপনাকে আপনার ডাটাবেস স্কিমা সংস্করণে অনুমতি দেয়।
থরবজর্ন রাভন অ্যান্ডারসন

উত্তর:


41

অন্যান্য উত্তর ছাড়াও ...

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

একবার এটি বেশিরভাগ স্থির হয়ে যায়, তারপরে আপনার কাছে আবেদনটি তৈরি করার জন্য আপনার কাছে একটি স্থিতিশীল ডাটাবেস থাকে। এটি আপনার প্রথম বিকল্পের বিপরীতে।

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

স্কিমাতে ছোটখাটো পরিবর্তনগুলি, সংযুক্তকরণ বা টেবিলগুলির বিভক্তকরণ, সম্পর্কের পরিবর্তন ইত্যাদির ঘটনা ঘটবে তবে স্থানীয়করণ "দ্বীপপুঞ্জগুলিতে" এবং আপনার মডেল + বেসিক ডিজাইনটি অপরিবর্তিত থাকবে।


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

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

@ জিংকিং: আমি এখনই এটি চটপটে কাজটি করছি।
gbn

@gbn, নীচের প্রশ্নটি এখানে জিজ্ঞাসা করুন। কীভাবে পরিস্থিতিটি পরিচালনা করা যায় তা সম্পর্কে আমার কোনও ধারণা নেই। দয়া করে একটি চেহারা আছে। stackoverflow.com/questions/46285924/… । দয়া করে আমাকে আরও ভাল সমাধান প্রস্তাব।
আরজিএস

27

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

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

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

আমি অনুমান করি যে আমার ভোটটি আপনার বিকল্প 2 দিয়ে রাখে এবং আমার সন্দেহ হয় যে আমি সম্ভবত এই একটিতে শীতকালে দাঁড়িয়ে আছি!


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

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

3
আমি প্রশ্নটি "এখনও কোনও
ডিবিবিহীন

তেমনি, আমি কোথাও আপনার পয়েন্ট মিস করছি :) একজন চ্যাট করতে যাবেন?
মার্ক স্টোরি-স্মিথ

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

12

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

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

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

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

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


7
প্রকল্প চলাকালীন প্রচুর নতুন প্রয়োজনীয়তা যুক্ত করা "অনুচিত" নয়। এটি এমন কিছু যা আপনার বিকাশের পদ্ধতিগুলি www.agilemanifesto.org/pr
اصول

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

11

ওয়েব, অ্যাক্সেস এবং সি # সহ বিভিন্ন ফ্রন্ট প্রান্ত সহ আমি বেশ কয়েকটি মাঝারি জটিল ডেটাবেস ডিজাইনের বিলাসিতা পেয়েছি।

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

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

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

আমি যা করি তাতে আমি খুব ভালো। তবে এমন পরিবেশে আমার মধ্যে কেবল একজনই আছেন যা "উন্নয়ন করে না"।

যা যা বলেছিল, আমি ব্যবসায়ের নিয়মগুলি আবিষ্কার করতে আরও ভাল হয়ে যাচ্ছি। এবং আমি এক ধরণের তৃতীয় বিকল্প দেখতে পাচ্ছি:

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

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

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

আমার মতে এটি একটি বিশাল জয় is


+1 দুর্দান্ত উত্তর। সুবিধাযুক্ত প্রয়োজনীয়তা বিকাশ একাধিক স্টেকহোল্ডার প্রকল্পে একটি বিশাল প্লাস।
জায়েনে এস হালসাল

10

বেশিরভাগ উদ্দেশ্যে আমি বিকল্প 2 বেছে নেব: অন্যান্য উপাদানগুলির সাথে সমান্তরালে ডাটাবেস তৈরি করুন। যেখানেই সম্ভব একটি পুনরাবৃত্ত পদ্ধতির অবলম্বন করুন এবং প্রতিটি টুকরো তৈরি করার সাথে সাথে শেষ থেকে শেষের কার্যকারিতা সরবরাহ করুন।

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

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


2
আপনি কি ভাবেন না যে ধারণাগত মডেলটি সংজ্ঞায়িত করার জন্য কিছু সুস্পষ্ট চিন্তাভাবনার প্রয়োজন হবে?
gbn

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

আমি সন্দেহ করি @ ডোর্টাস এবং আমি একই পরিবেশে কাজ করি :)
মার্ক স্টোর-স্মিথ

9

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

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

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

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

উপসংহার

আমি অবশ্যই স্পষ্টভাবে বিকল্প 1 এ যাব এটি সঠিক পরিকল্পনা, ডেটা মডেলিং এবং চলমান ডেটা বিশ্লেষণ লাগে takes তবুও, এটি দীর্ঘমেয়াদে ডাটাবেস পরিবর্তনগুলি হ্রাস করতে হবে।


1
@ রোল্যান্ডোমাইএসকিউএলডিবিএ, আপনি ধরে নিচ্ছেন যে অ্যাপ্লিকেশন বিকাশের সময় নির্মিত একটি ডাটাবেস ডিজাইনটি আগে তৈরির চেয়ে দরিদ্র নকশা হবে? কেন? বিপরীতটি প্রায়শই সত্য।
nvogel

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

2
'আরের জন্য বিট-বালতি নয় রিলেশনাল ডাটাবেস হিসাবে আরডিবিএমএস ব্যবহারের জন্য +1 - আপনি
জ্যাক ডগলাস

2
@ ডোর্টাস: এটি সত্য (ব্যবসায়ের নিয়ম পরিবর্তন) হওয়ার সাথে সাথে, একটি ভাল ডিজাইন করা ডিবি একটি পুনরাবৃত্তির (বা স্প্রিন্ট, বা যাই হোক না কেন) এবং অন্যগুলির মধ্যে মূলত পরিবর্তিত হবে না, কারণ এটি কার্য প্রক্রিয়ার সমস্ত প্রাসঙ্গিক ডেটা কাঠামোর প্রতিফলন করে। যদি এটি হয় (মূল পরিবর্তন), এর অর্থ ব্যবসায়ের বিধি বিধানে ব্যর্থতা।
ফ্যাব্রিকিও আরাউজো

3
@ ডোর্টাস: সমস্ত ডিবি পরিবর্তন করে না, কেবলমাত্র রেডিকাল। গৌণ পরিবর্তনগুলি সফ্টওয়্যার করার ব্যবসায়ের অংশ। তবে কাজের মাঝখানে 2 টি পৃথক ডাটাবেসে ডেটা বিভক্ত করা হ'ল নকশা এবং ক্যাপচারিং ব্যবসায়ের নিয়মগুলির ব্যর্থতা। (এটি আমার কাছে আসলে হয়েছিল
ফ্যাব্রিকিও আরাউজো

9

আমি মনে করি অ্যাপ্লিকেশনটির জন্য কোনও আসল কোড আসার আগে এটি করা উচিত , তবে অ্যাপ্লিকেশনটি ডিজাইন করার আগে নয়।

আমার আদর্শ ওয়ার্কফ্লো, যদি একা কাজ করা হয় তা হ'ল:

  1. অ্যাপ্লিকেশনটি কী করতে হবে তা নির্ধারণ করুন
  2. পুনরায় ব্যবহারযোগ্য উপাদানগুলির জন্য কোনও কাজ ভেঙে ফেলা যায় কিনা তা দেখুন
  3. ডেটা স্টোরেজের সাথে প্রতিটি টাস্কের কীভাবে ইন্টারঅ্যাক্ট করতে হবে তা নির্ধারণ করুন - তারা ডেটা সম্পর্কে কোন ধরণের প্রশ্ন জিজ্ঞাসা করবে, তারা কতবার লিখবে ইত্যাদি etc.
  4. ডাটাবেসটি ডিজাইন করুন যাতে এটি আমাদের জিজ্ঞাসা করা উচিত সমস্ত প্রশ্নের উত্তর দিতে সক্ষম হওয়া উচিত এবং সর্বাধিক ঘন কাজগুলির জন্য ভাল সম্পাদন করা উচিত।
  5. আবেদন লিখুন।

যেহেতু আমি প্রায়শই একটি দলের অংশ হিসাবে কাজ করি এবং আমরা ভৌগলিকভাবে ছড়িয়ে পড়েছি (এবং সময়ের অঞ্চল জুড়ে), আমাদের প্রাথমিক কিকঅফ বৈঠক করার ঝোঁক রয়েছে:

  1. অ্যাপ্লিকেশনটি কী করতে হবে তা নির্ধারণ করুন।
  2. অ্যাপ্লিকেশনটিকে স্বয়ংসম্পূর্ণ উপাদানগুলিতে ভাঙতে কোথায় ভাল পয়েন্ট রয়েছে তা নির্ধারণ করুন
  3. প্রতিটি উপাদানকে কীভাবে অন্যের সাথে ইন্টারঅ্যাক্ট করতে হবে তা নির্ধারণ করুন।
  4. প্রতিটি ইন্টারঅ্যাকশনের জন্য একটি API এ সম্মত হন।

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


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

8

আমার মনে মনে এই ফোলিংয়ের নিয়ম রয়েছে: "আপনি কেবল ডেটাবেস থেকে তথ্য তৈরি করতে পারবেন যা আপনার কাছে ডেটা উত্পন্ন করার জন্য রয়েছে"। সুতরাং, আমি প্রথমে ডাটাবেস পরে কোডটি ডিজাইন করি।

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

যদি প্রাসঙ্গিক ডেটা না থাকে বা এটি সেখানে থাকে তবে (আন) এমনভাবে কাঠামোযুক্ত হয় যা আমি প্রয়োজনীয় তথ্য পুনরুদ্ধার করতে পারি না - এটি কীভাবে কোড করা যায়?


7

সাধারণত, এটি নির্ভর করে;)

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

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

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