Schema migration
সফ্টওয়্যার ইঞ্জিনিয়ারিং-এ, স্কিমা মাইগ্রেশন (এছাড়াও ডাটাবেস মাইগ্রেশন, ডাটাবেস পরিবর্তন ব্যবস্থাপনা) রিলেশনাল ডাটাবেস স্কিমা-তে সংস্করণ-নিয়ন্ত্রিত, বর্ধিত এবং বিপরীতমুখী পরিবর্তনের ব্যবস্থাপনাকে বোঝায়। একটি স্কিমা মাইগ্রেশন একটি ডাটাবেসে সঞ্চালিত হয় যখনই সেই ডাটাবেসের স্কিমা আপডেট বা কোনও নতুন বা পুরানো সংস্করণে ফিরিয়ে আনার প্রয়োজন হয়। স্কিমা মাইগ্রেশন টুল ব্যবহার করে প্রোগ্রামগতভাবে মাইগ্রেশন করা হয়। যখন একটি নির্দিষ্ট পছন্দসই স্কিমা সংস্করণের সাথে আহ্বান করা হয়, তখন সরঞ্জামটি কাঙ্ক্ষিত অবস্থায় না আনা পর্যন্ত স্কিমা পরিবর্তনের একটি উপযুক্ত ক্রমের ধারাবাহিক প্রয়োগ বা বিপরীতটিকে স্বয়ংক্রিয় করে তোলে। বেশিরভাগ স্কিমা মাইগ্রেশন সরঞ্জামের লক্ষ্য হল ডাটাবেসের যে কোনও বিদ্যমান ডেটাতে স্কিমা পরিবর্তনের প্রভাব হ্রাস করা। তা সত্ত্বেও, সাধারণভাবে তথ্য সংরক্ষণের নিশ্চয়তা দেওয়া হয় না কারণ একটি ডাটাবেস কলাম মুছে ফেলার মতো স্কিমা পরিবর্তনগুলি তথ্য ধ্বংস করতে পারে (অর্থাৎ। সেই সারির সমস্ত সারির জন্য সেই কলামের অধীনে সংরক্ষিত সমস্ত মান মুছে ফেলা হয়)। পরিবর্তে, সরঞ্জামগুলি তথ্যের অর্থ সংরক্ষণ করতে বা নতুন প্রয়োজনীয়তা পূরণের জন্য বিদ্যমান তথ্য পুনর্গঠন করতে সহায়তা করে। যেহেতু তথ্যের অর্থ প্রায়শই এনকোড করা যায় না, তাই সরঞ্জামগুলির বিন্যাসে সাধারণত ম্যানুয়াল হস্তক্ষেপের প্রয়োজন হয়। স্কিমা স্থানান্তরের ঝুঁকি ও উপকারিতা ভুল সংশোধন এবং প্রয়োজনীয়তার পরিবর্তনের সাথে সাথে তথ্যকে মানিয়ে নেওয়ার অনুমতি দেয়। এগুলি সফ্টওয়্যার বিবর্তনের একটি অপরিহার্য অংশ, বিশেষত চটপটে পরিবেশে (নীচে দেখুন)। একটি উৎপাদন ডাটাবেসে স্কিমা স্থানান্তর প্রয়োগ করা সর্বদা একটি ঝুঁকি। উন্নয়ন এবং পরীক্ষার ডেটাবেসগুলি ছোট এবং পরিষ্কার হতে থাকে। এগুলির মধ্যে থাকা তথ্যগুলি আরও ভালভাবে বোঝা যায় বা, যদি অন্য সমস্ত কিছু ব্যর্থ হয়, তবে তথ্যের পরিমাণ একজন মানুষের প্রক্রিয়া করার জন্য যথেষ্ট কম। উৎপাদন তথ্যভাণ্ডারগুলি সাধারণত বিশাল, পুরানো এবং বিস্ময়ে পূর্ণ। বিস্ময় অনেক উৎস থেকে আসতে পারেঃ দুর্নীতিগ্রস্ত তথ্য যা সফ্টওয়্যারের পুরানো সংস্করণগুলি দ্বারা লেখা হয়েছিল এবং সঠিকভাবে পরিষ্কার করা হয়নি ডেটাতে নির্ভরশীলতা যা সম্পর্কে আর কেউ জানে না লোকেরা নির্দিষ্ট সরঞ্জামগুলি ব্যবহার না করে সরাসরি ডাটাবেস পরিবর্তন করে স্কিমা মাইগ্রেশন সরঞ্জামগুলিতে বাগগুলি কীভাবে ডেটা স্থানান্তরিত করা উচিত অনুমানগুলিতে ভুল এই কারণগুলির জন্য, মাইগ্রেশন প্রক্রিয়াটির একটি উচ্চ স্তরের শৃঙ্খলা, পুঙ্খানুপুঙ্খ পরীক্ষা এবং একটি ভাল ব্যাকআপ কৌশল প্রয়োজন। স্কিমা মাইগ্রেশনগুলি সম্পূর্ণ হতে দীর্ঘ সময় নিতে পারে এবং 24/7 পরিচালিত সিস্টেমগুলির জন্য ডাউনটাইম ছাড়াই ডাটাবেস মাইগ্রেশন করতে সক্ষম হওয়া গুরুত্বপূর্ণ। সাধারণত এটি ফিচার ফ্ল্যাগ এবং অবিচ্ছিন্ন ডেলিভারির সাহায্যে করা হয়। একটি ডাটাবেস দ্বারা সমর্থিত সফ্টওয়্যার অ্যাপ্লিকেশনগুলি বিকাশ করার সময়, ডেভেলপাররা সাধারণত একটি বিবর্তিত ডাটাবেস স্কিমার সাথে অ্যাপ্লিকেশন সোর্স কোডটি বিকাশ করে। কোডটির সাধারণত কঠোর প্রত্যাশা থাকে যে ডাটাবেস স্কিমে কোন কলাম, টেবিল এবং সীমাবদ্ধতাগুলি উপস্থিত রয়েছে যখনই এটির সাথে ইন্টারঅ্যাক্ট করার প্রয়োজন হয়, তাই শুধুমাত্র ডাটাবেস স্কিমার সংস্করণ যার বিরুদ্ধে কোডটি তৈরি করা হয়েছিল তা সোর্স কোডের সেই সংস্করণের সাথে সম্পূর্ণ সামঞ্জস্যপূর্ণ বলে মনে করা হয়। সফ্টওয়্যার পরীক্ষায়, ডেভেলপাররা একক পরীক্ষার জন্য একটি সামঞ্জস্যপূর্ণ ডাটাবেস সিস্টেমের উপস্থিতিকে উপহাস করতে পারে, এর চেয়ে বেশি পরীক্ষার যে কোনও স্তর (যেমন। ইন্টিগ্রেশন টেস্টিং বা সিস্টেম টেস্টিং) ডেভেলপারদের জন্য স্থানীয় বা দূরবর্তী পরীক্ষার ডাটাবেসের বিরুদ্ধে তাদের অ্যাপ্লিকেশন পরীক্ষা করা সাধারণ বিষয় যা পরীক্ষার অধীনে সোর্স কোডের সংস্করণের সাথে পরিকল্পিতভাবে সামঞ্জস্যপূর্ণ। উন্নত প্রয়োগগুলিতে, মাইগ্রেশন নিজেই মাইগ্রেশন পরীক্ষার বিষয় হতে পারে। স্কিমা মাইগ্রেশন প্রযুক্তির সাথে, ডেটা মডেলগুলি আর সম্পূর্ণরূপে আপ-ফ্রন্ট ডিজাইন করার প্রয়োজন নেই এবং সফ্টওয়্যার বিকাশের জীবনচক্র জুড়ে পরিবর্তিত প্রকল্পের প্রয়োজনীয়তার সাথে খাপ খাইয়ে নিতে আরও সক্ষম। সংশোধন নিয়ন্ত্রণ ব্যবস্থার সঙ্গে সম্পর্ক সফ্টওয়্যার ডেভেলপারদের দলগুলি সাধারণত সোর্স কোডের সংস্করণগুলিতে করা পরিবর্তনগুলি পরিচালনা এবং সহযোগিতা করার জন্য সংস্করণ নিয়ন্ত্রণ ব্যবস্থা ব্যবহার করে। বিভিন্ন ডেভেলপার একই সোর্স কোডের ভিন্ন, তুলনামূলকভাবে পুরানো বা নতুন শাখাগুলিতে বিকাশের সময় পরিবর্তন এবং সংযোজন করতে পারে। মনে করুন যে উন্নয়নের অধীনে থাকা সফ্টওয়্যারটি একটি ডাটাবেসের সাথে মিথস্ক্রিয়া করে, সোর্স কোডের প্রতিটি সংস্করণ কমপক্ষে একটি ডাটাবেস স্কিমার সাথে যুক্ত হতে পারে যার সাথে এটি সামঞ্জস্যপূর্ণ। ভাল সফ্টওয়্যার পরীক্ষার অনুশীলনের অধীনে, স্কিমা স্থানান্তরগুলি পরীক্ষার ডাটাবেসে করা যেতে পারে যাতে তাদের স্কিমা সোর্স কোডের সাথে সামঞ্জস্যপূর্ণ হয়। এই প্রক্রিয়াটিকে সহজতর করার জন্য, একটি স্কিমা মাইগ্রেশন টুল সাধারণত স্বয়ংক্রিয় পরীক্ষার পর্বের পূর্বশর্ত হিসাবে একটি স্বয়ংক্রিয় সফ্টওয়্যার নির্মাণের অংশ হিসাবে আহ্বান করা হয়। স্কিমা মাইগ্রেশন সরঞ্জামগুলি ডাটাবেস স্কিমার জন্য সংস্করণ সমস্যা সমাধান করতে পারে ঠিক যেমন সংস্করণ নিয়ন্ত্রণ ব্যবস্থা সোর্স কোডের জন্য সংস্করণ সমস্যা সমাধান করে। বাস্তবে, অনেক স্কিমা মাইগ্রেশন সরঞ্জাম আসলে স্কিমা পরিবর্তনের পাঠ্য উপস্থাপনার উপর নির্ভর করে (যেমন এসকিউএল বিবৃতি সম্বলিত ফাইল) যাতে স্কিমা পরিবর্তনের সংস্করণ ইতিহাস কার্যকরভাবে ভি. সি. এস-এর মধ্যে প্রোগ্রাম সোর্স কোডের পাশাপাশি সংরক্ষণ করা যায়। এই পদ্ধতিটি নিশ্চিত করে যে একটি নির্দিষ্ট কোড শাখার জন্য একটি সামঞ্জস্যপূর্ণ ডাটাবেস স্কিমা পুনরুদ্ধারের জন্য প্রয়োজনীয় তথ্য সোর্স ট্রি থেকেই পুনরুদ্ধারযোগ্য। এই পদ্ধতির আরেকটি সুবিধা হল সমবর্তী দ্বন্দ্বমূলক স্কিমা পরিবর্তনগুলি পরিচালনা করা; ডেভেলপাররা পার্থক্যগুলি পুনর্মিলন করতে তাদের স্বাভাবিক পাঠ্য-ভিত্তিক দ্বন্দ্ব সমাধান সরঞ্জামগুলি ব্যবহার করতে পারে। স্কিমা বিবর্তনের সাথে সম্পর্ক স্কিমা মাইগ্রেশন টুলিংকে একটি বিবর্তিত স্কিমার ইতিহাস ট্র্যাক করার সুবিধা হিসাবে দেখা যেতে পারে। সুবিধা ডেভেলপারদের স্ক্র্যাচ থেকে একটি নতুন পরীক্ষার ডাটাবেস তৈরি করার জন্য পুরো পরীক্ষার ডাটাবেসটি সরিয়ে ফেলার প্রয়োজন নেই (যেমন। ডিডিএল প্রজন্মের সরঞ্জাম থেকে স্কিমা তৈরির স্ক্রিপ্ট ব্যবহার করে)। উপরন্তু, যদি পরীক্ষার তথ্য তৈরিতে অনেক সময় লাগে, তবে বিকাশকারীরা পরিকল্পনায় ছোট, অ-ধ্বংসাত্মক পরিবর্তনের জন্য পরীক্ষার তথ্য পুনরুত্পাদন এড়াতে পারেন। তথ্যসূত্র লিঙ্ক মার্টিন ফাউলারঃ বিবর্তনীয় ডাটাবেস ডিজাইন সক্রিয় রেকর্ড স্থানান্তর ডাটাবেস সফ্টওয়্যার রক্ষণাবেক্ষণ চটপটে সফ্টওয়্যার উন্নয়ন