একটি ডাটাবেস পুনরায় নকশার জন্য সেরা অভ্যাস


24

আমি কোনও অ্যাপ্লিকেশনটির জন্য একটি ডাটাবেস ডিজাইন করার সময় কয়েকটি সাধারণ সেরা অনুশীলন সম্পর্কে সচেতন, তবে পুনরায় ডিজাইনিংয়ের কী?

আমি অভ্যন্তরীণ ব্যবসায়ের অ্যাপ্লিকেশনটিকে নতুন করে ডিজাইনের কাজ করার জন্য একটি দলে রয়েছি, যদিও আমি "অভ্যন্তরীণ" বলার পরেও, আমি দুর্ভাগ্যক্রমে অনেক লোকের, সিস্টেমের প্রকৃত ব্যবহারকারীদের সাথে যোগাযোগ থেকে দূরে রয়েছি of

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

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

পুনর্লিখনের শেষ ফলাফলটি এমএস এসকিউএল সার্ভারের সাথে পিছনের শেষের জন্য এএসপি.নেট এ চলমান একটি ওয়েব-ভিত্তিক সংস্করণ হতে চলেছে।

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

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

সুতরাং আমার প্রশ্নের হৃদয়: একটি বিদ্যমান অ্যাপ্লিকেশনটির ডাটাবেস স্তর থেকে পুনরায় ডিজাইন করার জন্য কয়েকটি সেরা অনুশীলন কী?


5
বেশিরভাগ দলই নতুন প্রযুক্তির সাথে পরিচিত না হলে প্রকল্পটি মিষ্টি সাফল্য পাবে না। বর্ণিত বর্তমান প্রযুক্তিগত প্রোফাইলটি এই কাজের জন্য উপযুক্ত নয়।
NoChance

2
আমি এমাদ কারিমের সাথে একমত, আপনি কিছু মূল দক্ষতা নিখোঁজ করছেন। দেখে মনে হচ্ছে আপনার দলে এএসপি.এনইটি / সি#, এসকিউএল সার্ভার / ডিবি ডিজাইন এবং অবজেক্ট অরিয়েন্টেড ডিজাইনটি জানেন এমন স্তরের অভাব হতে পারে যা আপনাকে বরং এটি উচ্চাভিলাষী প্রকল্পটি বন্ধ করতে হবে।
jfrankcarr

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

উত্তর:


23

আমি মনে করি আপনি কীভাবে একটি ডেটাবেসকে সাধারণীকরণ করবেন তা ইতিমধ্যে জানেন।

নতুন ডাটাবেসে সমস্ত সফ্টওয়্যার স্থানান্তরিত করার সময় আপনার যা দরকার তা হ'ল ঝুঁকি হ্রাস করার কৌশলগুলি।

আমি যা পরামর্শ দিচ্ছি তা হ'ল কম ঝুঁকির জন্য বাণিজ্য বন্ধ হিসাবে কাজ করা।

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

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

নতুন সাধারণ করা ডাটাবেসের দিকে ইঙ্গিত করে আপনার নতুন এএসপি.এনইটি সিস্টেমের ক্যোয়ারী অংশটি তৈরি করুন।

আপনার নতুন সিস্টেমের ক্যোয়ারির ফলাফলগুলি মূল সিস্টেমের ক্যোয়ারী ফলাফলের সাথে তুলনা করা উচিত।

আপনি এই মুহুর্তে থামতে পারে। এটি কোনও ব্যবসায়ের সিদ্ধান্ত, কোনও প্রযুক্তিগত সিদ্ধান্ত নয়।

আপনার অবসর সময়ে, আপনি আপনার নতুন এএসপি.এনইটি সিস্টেমে নতুন সন্নিবেশ / আপডেট / কার্যকারিতা মুছুন। আপনি নতুন কার্যকারিতা তৈরি করার সাথে সাথে আপনি মূল সিস্টেমের অংশগুলি বন্ধ করে দিন। এক পর্যায়ে, মূল সিস্টেমের কিছুই অবশিষ্ট নেই।

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

আপনি একবারে সন্নিবেশ / আপডেট / কার্যকারিতা এক প্রক্রিয়া মুছে ফেলেন। ব্যবসায়ের যুক্তি ভুল বুঝে যদি সমস্যা হয় তবে আপনার ব্যবহারকারীরা মূল সিস্টেমটি ব্যবহার করার সময় এটি ঠিক করা যেতে পারে।

আপনার জনবহুল প্রক্রিয়াটি আরও নিখুঁতভাবে সামঞ্জস্যপূর্ণ হওয়া ছাড়াই এটি করা উচিত।


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

2

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

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


পছন্দসই দক্ষতা থাকার গুরুত্বকে স্বীকৃতি দেওয়ার জন্য +1।
NoChance

দুর্ভাগ্যক্রমে, আমরা ঠিকাদার। এখানে সমস্ত প্রোগ্রামাররা। আমাদের দলের নেতৃত্বগুলি খুব বেশি, তবে আমাদের মাতারা গ্রাহকের নিজস্ব পরিচালন ব্যবস্থার বিভিন্ন স্তরের are
ইউটোপিয়া লিঃ

2

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

যেহেতু আপনি এসকিউএল সার্ভার ব্যবহার করছেন তাই আপনি এসএসআইএসের মাধ্যমে প্রকৃত স্থানান্তর করতে পারেন।

পরীক্ষার ক্ষেত্রে একটি ভাল শক্ত সেট তৈরি করুন যাতে আপনি পুরানো সিস্টেমের সাথে ফলাফলগুলি নতুন সিস্টেমের সাথে একই রকমের তুলনা করতে পারেন।

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


1

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

আপনার ডাটাবেস স্কিমাটির সর্বজনীনভাবে উপলব্ধ পৃষ্ঠটিকে ছোট করার চেষ্টা করুন।

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

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

বই থেকে প্রাপ্তদের জন্য নয়, বাস্তব-বিশ্বের মানদণ্ডের জন্য অনুকূলিত করার চেষ্টা করুন।

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

প্রোফাইল অধিবেশন রেকর্ড করুন এবং তাদের বিশ্লেষণ করুন।

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


0

এখানে আমার উত্তর:

  1. প্রথমে আপনার বর্তমান ডাটাবেস সিস্টেমটি যতটা সম্ভব বুঝতে পারবেন। ব্যবহারকারীদের পাশাপাশি এই সিস্টেমের সমস্ত ব্যবহার সম্পর্কে আপনাকে জানতে হবে। আপনাকে সিস্টেমের সমস্ত উত্স এবং সেইসাথে যে সিস্টেমগুলি এটির উত্স সিস্টেম হিসাবে পরিবেশন করতে পারে তা জানতে হবে।

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

  3. বর্তমান ETL প্রক্রিয়াটি বিশ্লেষণ করুন এবং বুঝতে পারবেন যা ডেটাবেজে ডেটা লোড করে এবং ডাটাবেস থেকে ডেটা আহরণ করে।

  4. ডাটাবেসের সমস্ত ডেটা উপাদানগুলি বুঝতে এবং যদি আপনি একটি বক্স ম্যাট্রিক্স তৈরি করতে পারেন যা আপনাকে সদৃশ উপাদানগুলি সনাক্ত করতে সহায়তা করতে পারে।

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

  6. শুভকামনা!

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