ভয়াবহভাবে ডিজাইন করা ডাটাবেসের উপরে কী ভাল কোড লেখার আশা আছে?


18

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

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

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

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

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


2
একটু চিন্তা করুন আপনি একটি লাইব্রেরির বিরুদ্ধে কীভাবে কোড করবেন যেখানে বিশেষ কেস "2 + 2" ফিরে আসে নি 4 এটি সহজ নয়।

8
সুতরাং, আমি এই সমস্ত কি শুনছি তা হ'ল আপনার আর একটি কাজ সন্ধানের জন্য 30 দিন সময় আছে। Careers.stackoverflow.com ;-) চেষ্টা করুন
স্টিভেন এ। লো


@ গ্যাनेट: খুব কাছেও নেই।
রবার্ট হার্ভে

উত্তর:


27

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

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

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


1
+1 আমি মূলত আপনার উত্তরটি পুরোপুরি পড়ার আগে আমার উত্তরে একই জিনিসটি বলেছিলাম তবে আমার উত্তরটি মুছার কোনও উপায় দেখতে পাচ্ছি না কারণ আপনার একই উপাদানটি অন্তর্ভুক্ত।
ওমিনাস

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

3
@ ম্যাপেল_শ্যাফ্ট সম্মত হয়েছে তবে ওপি বলেছে যে তাকে স্ক্র্যাচ থেকে একটি নতুন অ্যাপ্লিকেশন তৈরি করতে বলা হয়েছে যা ডাটাবেসের সাথে ইন্টারেক্ট করবে। এর মতো ক্ষেত্রে নতুন অ্যাপ্লিকেশনটি সঠিকভাবে তৈরি করা বুদ্ধিমান নয় ।
ওয়েইন মোলিনা

1
@ ম্যাপেল_শ্যাফ্ট, অ্যাপ্লিকেশনটির একমাত্র ক্রেপ অংশটি ক্রপ ডেটাবেসের সাথে ইন্টারঅ্যাক্ট করবে। এটি এন-টিয়ার আর্কিটেকচার এবং এসওসি-র মূল বিষয়।
স্টুপারউজার

1
@ ম্যাপেল_শ্যাফ্ট হ'ল লক্ষ্য হ'ল ডাটাবেসটিকে বিভিন্ন ধরণের "ব্ল্যাক বক্স" এ স্থাপন করা এবং অ্যাপ্লিকেশনটিকে এটির জন্য একটি ইন্টারফেস দেওয়া যা আরও আদর্শ এবং এটি প্রয়োজনীয়ভাবে ডেটাবেস ডিজাইনের প্রতিনিধি নয়।
মাইকেল ডিন

10

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


আপনি কীভাবে নিজের উত্তরগুলি মুছতে পারেন বা এটি কোনও সম্ভাবনা নয়?
ওমিনাস

আপনি নিজের উত্তর মুছতে পারেন। আপনি তাদের রঙিন পটভূমিতে দেখছেন এবং এটি "মালিক দ্বারা মুছে ফেলা" জাতীয় কিছু বলবে। আপনি ব্যতীত কেবলমাত্র মডারেটর শক্তিযুক্ত ব্যক্তিরা এটি দেখতে পাবেন।
মার্জন ভেনেমা

@ ওমিনিস: এটি সম্ভব হওয়া উচিত, তবে আপনি কেন চান? আপনি 3 upvotes পেয়েছেন!
হতাশিত

1
@ মারজান: মডারেটর এবং যে কেউ> 10 কে প্রতিনিধি সহ।
জেরি কফিন

1
আপনি এই উত্তরটি মুছতে চান কেন? আমি মনে করি এটি একটি দুর্দান্ত সমাধান।
জিম জি

6

ওচ ... আপনি একটি দুঃস্বপ্নের উত্তেজনা উত্তরাধিকার সূত্রে পেয়েছেন, আপনার প্রতিষ্ঠানের পক্ষে এটি ব্যবহারযোগ্য করে তোলার জন্য আপনার 30 দিন সময় রয়েছে, এবং অর্ধেক দিন আপনার অপারেশন কার্যগুলি নিয়ে যায়?

আমি নিশ্চিত আপনি অশোধক করতে পারেন কিন্তু সময় পরিমাণে অবশ্যই না।

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

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


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

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

1
@ জন, এটি ভাল যে তারা পুনঃসংশোধন করার প্রয়োজনীয়তাটি স্বীকার করে। এটি দীর্ঘমেয়াদী ব্যবস্থাপনার নিদর্শন এবং প্রকৃতপক্ষে রিফ্যাক্টরিংয়ের প্রথম পদক্ষেপ।
ম্যাপেল_শ্যাফ্ট

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

6

অন্যান্য কোডগুলির মতোই ডাটাবেসগুলি রিফ্যাক্টর করা যায়। কোডটি দ্বারা যে অংশটি প্রভাবিত হয়েছে সে অংশটি ঠিক করুন যাতে আপনার অন্য কিছু ভঙ্গ না হয় তা নিশ্চিত করতে পরীক্ষা লিখতে এবং লিখতে হবে write অন্যান্য রিফ্যাক্টরিংয়ের মতো একই সময়ে একটি ছোট কিছু করুন। ডাটাবেস রিফ্যাক্টরিংয়ের জন্য একটি ভাল বই রয়েছে যা আপনাকে জগাখিচুড়ি পরিষ্কার করতে সহায়তা করতে পারে। http://www.amazon.com/Refactoring-Databases-Evolutionary-paperback-Addison-Wesley/dp/0321774515/ref=sr_1_1?ie=UTF8&qid=1307025831&sr=8-1

এছাড়াও অন্যান্য রয়েছে, কিন্তু আমি ব্যক্তিগতভাবে এইগুলির কৌশলগুলি পড়েছি এবং তার সাথে কাজ করেছি।

এবং ভুলে যাবেন না যে আপনার পক্ষে জিজ্ঞাসা করা সহজ যে স্ট্রাকচারে আপনার জন্য বাজে রূপান্তরমূলক কাজ করার জন্য ভিউ তৈরি করে আপনার যেভাবে ডাটাবেসকে জিজ্ঞাসা করতে হবে তা পুনর্গঠন করতে পারেন।


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

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

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

5

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


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

4

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

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

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

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


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