Migrations কী?
Migrations হল একটি প্রক্রিয়া যা ডেটাবেস স্কিমা পরিবর্তন বা আপডেট করার জন্য ব্যবহৃত হয়। যখন ডেটাবেসের কাঠামো পরিবর্তন করতে হয় (যেমন নতুন টেবিল তৈরি করা, কোলাম যোগ করা বা মুছে ফেলা, বা অন্যান্য কাঠামোগত পরিবর্তন), তখন Migrations ব্যবহার করা হয়। এটি ডেটাবেসের সংস্করণ কন্ট্রোলের মত কাজ করে, যাতে আপনি ডেটাবেসে করা পরিবর্তনগুলি ট্র্যাক করতে পারেন এবং এটি বিভিন্ন পরিবেশে (উদাহরণস্বরূপ ডেভেলপমেন্ট, স্টেজিং এবং প্রোডাকশন) সিঙ্ক্রোনাইজ করা সহজ হয়।
TypeORM মাইগ্রেশন ব্যবহার করে ডেটাবেসের স্কিমা পরিবর্তন এবং আপডেট করার জন্য একটি শক্তিশালী উপায় প্রদান করে, যা ডেটাবেসের কাঠামোকে ট্র্যাক করা এবং কার্যকরভাবে পরিচালনা করা সহজ করে।
কেন Migrations প্রয়োজন?
Migrations ডেটাবেস স্কিমা পরিবর্তনের ইতিহাস ট্র্যাক করতে এবং স্কিমা আপডেটের প্রক্রিয়াকে সিস্টেমেটিকভাবে পরিচালনা করতে সহায়তা করে। এখানে কেন মাইগ্রেশন প্রয়োজন তার কিছু গুরুত্বপূর্ণ কারণ দেওয়া হলো:
- স্কিমা পরিবর্তনের ইতিহাস ট্র্যাক করা: যখন একটি বড় প্রজেক্টে একাধিক ডেভেলপার কাজ করেন, তখন স্কিমা পরিবর্তনগুলি ট্র্যাক করা এবং সঠিকভাবে প্রয়োগ করা প্রয়োজন। Migrations এর মাধ্যমে আপনি ডেটাবেসের কাঠামো পরিবর্তনগুলি সিস্টেমেটিকভাবে ট্র্যাক করতে পারেন।
- সহজ আপডেট এবং রোলব্যাক: Migrations এর মাধ্যমে ডেটাবেসের আপডেটগুলো পরিচালনা করা সহজ হয়ে ওঠে। যদি কোন আপডেট সমস্যা তৈরি করে, আপনি সহজেই পূর্ববর্তী সংস্করণে ফিরে যেতে পারবেন।
- প্রোডাকশন এবং ডেভেলপমেন্ট পরিবেশে সিঙ্ক্রোনাইজেশন: Migrations ডেটাবেসের পরিবর্তনগুলোকে একাধিক পরিবেশে সিঙ্ক্রোনাইজ করতে সাহায্য করে, যাতে ডেভেলপমেন্ট, স্টেজিং, এবং প্রোডাকশন পরিবেশে স্কিমা সঠিক থাকে।
TypeORM এ Migrations তৈরি এবং রান করা
TypeORM মাইগ্রেশন তৈরি এবং রান করার জন্য কিছু সহজ কমান্ড সরবরাহ করে। এগুলি ব্যবহারের মাধ্যমে আপনি ডেটাবেস স্কিমা পরিবর্তন করতে পারেন এবং সেগুলির ইতিহাস ট্র্যাক করতে পারেন।
১. Migrations কনফিগারেশন
মাইগ্রেশন সঠিকভাবে কাজ করার জন্য, প্রথমে আপনার ormconfig.json বা ormconfig.ts ফাইলটি কনফিগার করতে হবে। এখানে একটি সাধারণ কনফিগারেশন দেখানো হলো:
{
"type": "mysql",
"host": "localhost",
"port": 3306,
"username": "root",
"password": "password",
"database": "test_db",
"synchronize": false,
"logging": true,
"migrations": [
"src/migration/**/*.ts"
],
"cli": {
"migrationsDir": "src/migration"
}
}
এখানে migrations এবং cli.migrationsDir নির্দেশ করে যে মাইগ্রেশন ফাইল কোথায় রাখা হবে এবং TypeORM সেই ফাইলগুলো কোথায় সন্ধান করবে।
২. Migrations তৈরি করা
TypeORM CLI ব্যবহার করে আপনি নতুন মাইগ্রেশন তৈরি করতে পারেন। মাইগ্রেশন তৈরির জন্য migration:generate অথবা migration:create কমান্ড ব্যবহার করতে হয়।
migration:create: এটি একটি খালি মাইগ্রেশন ফাইল তৈরি করে। আপনি নিজে থেকে মাইগ্রেশন কোড লিখবেন।migration:generate: এটি ডেটাবেসের স্কিমা পরিবর্তন ট্র্যাক করে এবং সেই অনুযায়ী একটি মাইগ্রেশন ফাইল তৈরি করে।
migration:create কমান্ডের উদাহরণ:
typeorm migration:create -n CreateUsersTable
এই কমান্ডটি একটি নতুন মাইগ্রেশন ফাইল তৈরি করবে যার নাম হবে CreateUsersTable। ফাইলটি সাধারণত src/migration ফোল্ডারে তৈরি হবে।
migration:generate কমান্ডের উদাহরণ:
typeorm migration:generate -n AddNewColumnToUsers
এই কমান্ডটি আপনার বর্তমান ডেটাবেস স্কিমা এবং TypeORM এ তৈরি হওয়া Entity এর মধ্যে পার্থক্য চেক করবে এবং একটি নতুন মাইগ্রেশন ফাইল তৈরি করবে।
৩. Migrations রান করা
একবার মাইগ্রেশন ফাইল তৈরি হলে, আপনি TypeORM CLI ব্যবহার করে মাইগ্রেশনটি ডেটাবেসে প্রয়োগ করতে পারেন। এটি ডেটাবেসের স্কিমা আপডেট করবে এবং প্রয়োজনীয় টেবিল বা কোলাম তৈরি করবে।
migration:run কমান্ডের উদাহরণ:
typeorm migration:run
এই কমান্ডটি সব মাইগ্রেশন ফাইল রান করবে যা এখনও ডেটাবেসে প্রয়োগ করা হয়নি।
৪. Migrations রোলব্যাক করা
যদি আপনি কোন মাইগ্রেশন বাতিল করতে চান বা পূর্ববর্তী সংস্করণে ফিরে যেতে চান, তাহলে আপনি migration:revert কমান্ড ব্যবহার করতে পারেন। এটি শেষ হওয়া মাইগ্রেশনটি রোলব্যাক করে দেবে।
migration:revert কমান্ডের উদাহরণ:
typeorm migration:revert
এই কমান্ডটি আপনার ডেটাবেস থেকে সর্বশেষ মাইগ্রেশনটি রোলব্যাক করবে।
উদাহরণ
ধরা যাক, আমাদের একটি Users টেবিল তৈরি করতে হবে, এবং আমাদের প্রথম মাইগ্রেশন ফাইল তৈরি করতে হবে:
- মাইগ্রেশন ফাইল তৈরি করা:
typeorm migration:create -n CreateUsersTable
- মাইগ্রেশন কোড লেখা:
src/migration/1633652245401-CreateUsersTable.ts ফাইলে কোড লিখুন:
import {MigrationInterface, QueryRunner, Table} from "typeorm";
export class CreateUsersTable1633652245401 implements MigrationInterface {
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.createTable(new Table({
name: 'users',
columns: [
{
name: 'id',
type: 'int',
isPrimary: true,
isGenerated: true,
generationStrategy: 'increment',
},
{
name: 'name',
type: 'varchar',
},
{
name: 'email',
type: 'varchar',
isUnique: true,
},
],
}));
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.dropTable('users');
}
}
এখানে, up মেথডটি users টেবিল তৈরি করবে, এবং down মেথডটি users টেবিল মুছে ফেলবে।
- মাইগ্রেশন রান করা:
typeorm migration:run
এটি ডেটাবেসে users টেবিল তৈরি করবে।
সারাংশ
Migrations TypeORM এ একটি অত্যন্ত গুরুত্বপূর্ণ ফিচার যা ডেটাবেসের কাঠামো পরিবর্তন করার জন্য ব্যবহৃত হয়। এটি স্কিমার পরিবর্তনগুলি ট্র্যাক করার জন্য ব্যবহৃত হয় এবং ডেটাবেসে সেগুলি সিঙ্ক্রোনাইজ করার কাজ করে। Migrations তৈরি এবং রান করার জন্য TypeORM CLI কমান্ডগুলো ব্যবহৃত হয়। migration:create দিয়ে নতুন মাইগ্রেশন ফাইল তৈরি করা যায়, এবং migration:run দিয়ে তা ডেটাবেসে প্রয়োগ করা যায়। Migrations আপনার ডেটাবেসের স্কিমা পরিবর্তন ব্যবস্থাপনা সহজ এবং সুসংগঠিত রাখে, বিশেষ করে টিম ডেভেলপমেন্টে।
Read more