TypeORM Configuration Best Practices
TypeORM একটি শক্তিশালী ORM লাইব্রেরি যা ডেটাবেস ম্যানেজমেন্টকে সহজ করে তোলে। TypeORM এর কনফিগারেশন সঠিকভাবে সেটআপ করা খুবই গুরুত্বপূর্ণ, কারণ সঠিক কনফিগারেশন ডেটাবেসের কর্মক্ষমতা এবং অ্যাপ্লিকেশনের স্থিতিশীলতা প্রভাবিত করতে পারে।
TypeORM কনফিগারেশন নিয়ে কিছু best practices এবং environment specific settings নিয়ে আলোচনা করা হলো।
১. Configuration File Structure
TypeORM কনফিগারেশনটি সাধারণত একটি কনফিগারেশন ফাইলে সংরক্ষণ করা হয়, যেমন ormconfig.json বা কোডে createConnection() ফাংশনের মাধ্যমে সেট করা হয়।
ormconfig.json ফাইল উদাহরণ:
{
"type": "mysql",
"host": "localhost",
"port": 3306,
"username": "root",
"password": "password",
"database": "test_database",
"synchronize": true,
"logging": false,
"entities": [
"src/entity/**/*.ts"
],
"migrations": [
"src/migration/**/*.ts"
],
"subscribers": [
"src/subscriber/**/*.ts"
],
"cli": {
"migrationsDir": "src/migration"
}
}
এখানে, synchronize এবং logging ফ্ল্যাগগুলি সেট করা হয়েছে, যা ডেভেলপমেন্ট এবং প্রোডাকশন পরিবেশে পরিবর্তিত হতে পারে।
২. Environment Specific Settings
প্রত্যেকটি প্রকল্পের মধ্যে বিভিন্ন environment specific settings থাকতে পারে, যেমন development, production, test ইত্যাদি। এই পরিবেশ অনুযায়ী বিভিন্ন কনফিগারেশন ব্যবহার করা হয়।
Environment Specific Configuration ফাইল:
ormconfig.development.json:- Development পরিবেশের জন্য কনফিগারেশন, যেখানে
synchronizeটু TRUE এবংloggingTRUE রাখা যায়। - এই পরিবেশে ডাটাবেসে schema অটোমেটিকালি আপডেট হতে পারে (যেমন, টেবিল সৃষ্টির জন্য
synchronize: true)।
- Development পরিবেশের জন্য কনফিগারেশন, যেখানে
ormconfig.production.json:- Production পরিবেশের জন্য, এখানে
synchronizeটু FALSE থাকবে এবংloggingটু FALSE থাকবে যাতে প্রোডাকশন পরিবেশে কোনও অপ্রয়োজনীয় লগ না থাকে এবং ডাটাবেস স্কিমা পরিবর্তন না হয়।
- Production পরিবেশের জন্য, এখানে
ormconfig.test.json:- Testing পরিবেশে ডেটাবেসের সাথে কাজ করার জন্য, টেস্ট ডাটাবেস ব্যবহৃত হয়, যেখানে
synchronize: trueথাকতে পারে।
- Testing পরিবেশে ডেটাবেসের সাথে কাজ করার জন্য, টেস্ট ডাটাবেস ব্যবহৃত হয়, যেখানে
ormconfig.json সেটআপ করতে ভিন্ন পরিবেশের জন্য:
TypeORM এ আপনার কনফিগারেশন সেটআপ করার জন্য একটি পরিবেশ ভেরিয়েবল ব্যবহার করতে পারেন।
import { ConnectionOptions } from "typeorm";
const connectionOptions: ConnectionOptions = {
type: process.env.DB_TYPE || "mysql",
host: process.env.DB_HOST || "localhost",
port: Number(process.env.DB_PORT) || 3306,
username: process.env.DB_USERNAME || "root",
password: process.env.DB_PASSWORD || "password",
database: process.env.DB_DATABASE || "test_database",
synchronize: process.env.DB_SYNCHRONIZE === 'true',
logging: process.env.DB_LOGGING === 'true',
entities: [
"src/entity/**/*.ts"
],
migrations: [
"src/migration/**/*.ts"
],
subscribers: [
"src/subscriber/**/*.ts"
],
cli: {
migrationsDir: "src/migration"
}
};
export default connectionOptions;
এখানে, environment variables ব্যবহার করে আপনি কনফিগারেশন ফাইলটি পরিবেশ অনুযায়ী পরিবর্তন করতে পারেন। যেমন, process.env.DB_TYPE পরিবেশ ভেরিয়েবল ব্যবহার করা হয়েছে ডেটাবেস টাইপের জন্য।
৩. Separate Configuration for Development, Production, and Testing
কনফিগারেশন ফাইলের মধ্যে ডেভেলপমেন্ট, প্রোডাকশন এবং টেস্টিং জন্য আলাদা সেটিংস রাখা একটি ভাল অভ্যাস। TypeORM কনফিগারেশন অনুযায়ী আপনার অ্যাপ্লিকেশন ডেটাবেসের সাথে সঠিকভাবে যোগাযোগ করতে পারে। এজন্য আপনি ভিন্ন ভিন্ন কনফিগারেশন ফাইল তৈরি করতে পারেন এবং পরিবেশ অনুযায়ী সেগুলি ব্যবহার করতে পারেন।
এটি করতে একটি সহজ পদ্ধতি হতে পারে:
- Create different config files for each environment:
ormconfig.development.json- ডেভেলপমেন্ট কনফিগারেশনormconfig.production.json- প্রোডাকশন কনফিগারেশনormconfig.test.json- টেস্ট কনফিগারেশন
- Use environment variables to load the appropriate config: আপনি
dotenvলাইব্রেরি ব্যবহার করে পরিবেশ ভেরিয়েবল সেট করতে পারেন এবং তা অনুযায়ী কনফিগারেশন লোড করতে পারেন।
dotenv লাইব্রেরি ব্যবহার:
npm install dotenv
app.ts ফাইলে dotenv ব্যবহার:
import * as dotenv from "dotenv";
import { createConnection } from "typeorm";
import connectionOptions from "./ormconfig"; // Import the configuration file
dotenv.config(); // Load environment variables
createConnection(connectionOptions).then(async connection => {
console.log("Database connected!");
}).catch(error => console.log(error));
এখানে, আপনি .env ফাইলে development, production, এবং test এর জন্য ভিন্ন ভিন্ন কনফিগারেশন সেট করতে পারবেন এবং সেগুলি অ্যাপ্লিকেশনে ব্যবহার করতে পারবেন।
৪. Security Best Practices
- Sensitive Information: ডেটাবেসের পাসওয়ার্ড এবং অন্যান্য সেনসিটিভ তথ্য সরাসরি কোডে রাখা নিরাপদ নয়। সেগুলিকে পরিবেশ ভেরিয়েবল ব্যবহার করে লুকানো উচিত।
- Use SSL/TLS for Production: প্রোডাকশন পরিবেশে সংযোগের জন্য SSL/TLS ব্যবহার নিশ্চিত করুন। এটি ডেটাবেসের সাথে নিরাপদ যোগাযোগের জন্য প্রয়োজনীয়।
- Avoid
synchronize: truein Production: প্রোডাকশন পরিবেশেsynchronize: trueব্যবহার করা উচিত নয়, কারণ এটি ডেটাবেসের schema পরিবর্তন করতে পারে। তাই, migrations ব্যবহারের মাধ্যমে schema আপডেট করুন। - Backups: প্রোডাকশন পরিবেশে ডেটাবেসের নিয়মিত ব্যাকআপ নিন এবং স্কিমার বড় পরিবর্তনগুলি করার আগে নিশ্চিত ব্যাকআপের ব্যবস্থা রাখুন।
৫. Migrations ব্যবহার করা
Migrations ব্যবহার করার মাধ্যমে ডেটাবেস স্কিমার উন্নয়ন এবং পরিবর্তনগুলি ট্র্যাক করা হয়। Migrations TypeORM-এ ডেটাবেসের 구조 পরিবর্তন (যেমন নতুন টেবিল তৈরি, কলাম পরিবর্তন ইত্যাদি) সঠিকভাবে পরিচালনা করতে সহায়তা করে।
Migrations ব্যবহারের জন্য TypeORM CLI এর মাধ্যমে প্রয়োজনীয় মাইগ্রেশন তৈরি এবং চালাতে পারেন:
npx typeorm migration:generate -n MigrationName
npx typeorm migration:run
এই কমান্ডগুলির মাধ্যমে ডেটাবেসের schema পরিবর্তনগুলি মাইগ্রেশন ফাইলে সংরক্ষিত হবে এবং অ্যাপ্লিকেশন চালানোর সময় তা প্রযোজ্য হবে।
সারাংশ
TypeORM Configuration Best Practices হল ডেটাবেসের সাথে কার্যকরী এবং সুরক্ষিত উপায়ে যোগাযোগ করার জন্য সঠিক কনফিগারেশন সেটআপ করা। Environment Specific Settings ব্যবহারের মাধ্যমে আপনি ডেভেলপমেন্ট, প্রোডাকশন, এবং টেস্টিং পরিবেশের জন্য আলাদা কনফিগারেশন ফাইল তৈরি করতে পারেন। এছাড়া Migrations ব্যবহার করে ডেটাবেস স্কিমার উন্নয়ন এবং পরিবর্তন ট্র্যাক করা যায়। Security Best Practices অনুসরণ করে আপনি অ্যাপ্লিকেশনের নিরাপত্তা নিশ্চিত করতে পারেন।
Read more