Migrations হল Ruby on Rails অ্যাপ্লিকেশনে ডেটাবেসের কাঠামো পরিবর্তন করার একটি প্রক্রিয়া। এটি একটি ধরনের স্ক্রিপ্ট যা ডেটাবেসের টেবিল, কলাম, ইন্ডেক্স ইত্যাদি তৈরি, পরিবর্তন বা মুছে ফেলতে ব্যবহৃত হয়। Migrations ডেটাবেসের কাঠামো পরিবর্তনের জন্য Ruby কোড ব্যবহার করে, এবং Rails এই কোডগুলোকে SQL কমান্ডে রূপান্তর করে ডেটাবেসে কার্যকর করে।
Migrations এর ভূমিকা
Rails অ্যাপ্লিকেশন তৈরির সময়, আপনি প্রায়ই ডেটাবেসের কাঠামো পরিবর্তন করতে হতে পারে, যেমন নতুন টেবিল তৈরি করা, কলাম যোগ করা বা বাদ দেওয়া। এর জন্য SQL কোড ব্যবহার করার বদলে, Rails Migrations ব্যবহার করে ডেটাবেসের কাঠামো পরিচালনা করা সহজ এবং রোবস্ট হয়।
Migrations এর মাধ্যমে:
- টেবিল তৈরি বা মুছে ফেলা করা যায়।
- কলাম যোগ বা মুছে ফেলা করা যায়।
- ইন্ডেক্স এবং কন্সট্রেইন্ট তৈরি বা পরিবর্তন করা যায়।
- ডেটাবেস পরিবর্তনগুলো ডেভেলপমেন্ট, টেস্টিং এবং প্রোডাকশন পরিবেশে একসাথে সিঙ্ক্রোনাইজ করা যায়।
Migrations এর মূল সুবিধা
- Version Control: Migrations ডেটাবেসের কাঠামো পরিবর্তনগুলো ট্র্যাক করতে সাহায্য করে। যেহেতু এটি কোডের মতোই কাজ করে, তাই বিভিন্ন পরিবর্তনগুলো সহজে ভার্সন কন্ট্রোলে রাখা যায়।
- Consistency: একাধিক ডেভেলপার যখন একই প্রকল্পে কাজ করেন, তখন Migrations ডেটাবেসের কাঠামো সমন্বিত রাখে। এটি নিশ্চিত করে যে, সমস্ত ডেভেলপার এবং সার্ভারে ডেটাবেসের কাঠামো একই থাকবে।
- Rollback: যদি ডেটাবেসে কোনো সমস্যা হয় বা পরিবর্তনটি ভুল হয়, তবে আপনি Migrations এর মাধ্যমে পূর্বাবস্থায় ফিরে যেতে পারেন (rollback)।
Migrations তৈরি করা
Rails-এ নতুন Migration তৈরি করতে, আপনি rails generate migration কমান্ড ব্যবহার করেন। এর মাধ্যমে একটি নতুন মাইগ্রেশন ফাইল তৈরি হবে।
উদাহরণ:
নতুন টেবিল তৈরি করা:
ধরুন, আপনি একটি
usersটেবিল তৈরি করতে চান, যাnameএবংemailনামে দুটি কলাম থাকবে।rails generate migration CreateUsers name:string email:stringএর ফলে একটি মাইগ্রেশন ফাইল তৈরি হবে যা দেখতে এরকম হতে পারে:
class CreateUsers < ActiveRecord::Migration[6.0] def change create_table :users do |t| t.string :name t.string :email t.timestamps end end endএখানে
create_tableমেথডটিusersটেবিল তৈরি করছে, যেখানেnameএবংemailকলাম রয়েছে।কলাম যোগ করা:
যদি আপনি পরে
usersটেবিলেageনামে একটি কলাম যোগ করতে চান, তাহলে মাইগ্রেশন তৈরি করুন:rails generate migration AddAgeToUsers age:integerএর ফলে মাইগ্রেশন ফাইলে কলাম যোগের কোড থাকবে:
class AddAgeToUsers < ActiveRecord::Migration[6.0] def change add_column :users, :age, :integer end endকলাম মুছে ফেলা:
যদি আপনি
usersটেবিল থেকেageকলাম মুছে ফেলতে চান, আপনি এমন একটি মাইগ্রেশন তৈরি করতে পারেন:rails generate migration RemoveAgeFromUsers age:integerএর ফলে মাইগ্রেশন ফাইলে কলাম মুছে ফেলার কোড থাকবে:
class RemoveAgeFromUsers < ActiveRecord::Migration[6.0] def change remove_column :users, :age, :integer end end
Migrations চালানো
নতুন মাইগ্রেশন তৈরি করার পরে, ডেটাবেসে পরিবর্তন আনতে আপনাকে migrate করতে হবে। এই জন্য নিচের কমান্ডটি ব্যবহার করুন:
rails db:migrate
এই কমান্ডটি সব নতুন মাইগ্রেশন ফাইল চালাবে এবং ডেটাবেসের কাঠামোকে আপডেট করবে।
উদাহরণ:
ধরা যাক, আপনি CreateUsers মাইগ্রেশন তৈরি করেছেন, তবে এখনও তা ডেটাবেসে কার্যকর করেননি। rails db:migrate চালানোর পরে, ডেটাবেসে users টেবিল তৈরি হবে।
Migrations এর Rollback
যদি কোনো মাইগ্রেশন চালানোর পর আপনি পূর্বাবস্থায় ফিরে যেতে চান, তাহলে আপনি rollback কমান্ড ব্যবহার করতে পারেন:
rails db:rollback
এই কমান্ডটি শেষ মাইগ্রেশনটি উল্টে দিবে। যদি আপনি নির্দিষ্ট সংখ্যা (যেমন দুটি মাইগ্রেশন) ফিরে যেতে চান, তবে:
rails db:rollback STEP=2
এটি শেষ দুটি মাইগ্রেশন ফাইলকে উল্টে দিয়ে ডেটাবেসের পূর্বাবস্থায় ফিরিয়ে আনবে।
Migrations এর অন্যান্য বৈশিষ্ট্য
Change Method: Rails মাইগ্রেশন ফাইলে সাধারণত
changeমেথড ব্যবহার করা হয়, যা অটোমেটিকভাবে পরিবর্তন এবং তার উল্টো (rollback) কার্যকর করে। তবে কিছু বিশেষ ক্ষেত্রে, যেমন add_index বা remove_column, আপনাকেupএবংdownমেথড ব্যবহার করতে হতে পারে।class AddIndexToUsers < ActiveRecord::Migration[6.0] def up add_index :users, :email end def down remove_index :users, :email end end- Evolving Database Schema: মাইগ্রেশন আপনাকে ডেটাবেস স্কিমার ইvolves করতে সাহায্য করে। আপনি যখন নতুন ফিচার বা মডেল যোগ করেন, তখন মাইগ্রেশন ব্যবহার করে টেবিল বা কলাম পরিবর্তন করতে পারেন।
সারমর্ম
Migrations Ruby on Rails-এ ডেটাবেসের কাঠামো পরিবর্তন করার জন্য একটি গুরুত্বপূর্ণ টুল। এটি ডেটাবেস টেবিল তৈরি, কলাম যোগ বা মুছে ফেলা, ইন্ডেক্স তৈরি এবং কন্সট্রেইন্ট প্রয়োগের মতো কাজগুলো সহজে করে। Migrations ডেভেলপারদের ডেটাবেসের পরিবর্তনগুলি ট্র্যাক করতে এবং সহজে একসাথে সিঙ্ক্রোনাইজ করতে সহায়তা করে, যা ডেভেলপমেন্ট এবং ডিপ্লয়মেন্টের সময়ে খুবই উপকারী।
Read more