JavaScript (Node.js) में डेटाबेस माइग्रेशन: टूल्स का पूर्ण अवलोकन
डेटाबेस माइग्रेशन डेटाबेस स्कीमा को नियंत्रित और वर्ज़न-आधारित तरीके से बदलने का एक तरीका है। Node.js की दुनिया में कई शक्तिशाली लाइब्रेरीज़ हैं जो इस प्रक्रिया को स्वचालित करने में मदद करती हैं। इस लेख में हम तीन सबसे लोकप्रिय टूल्स पर चर्चा करेंगे: Sequelize, Knex.js और TypeORM।
माइग्रेशन क्या हैं और इनकी आवश्यकता क्यों है?
माइग्रेशन डेवलपर्स और वातावरणों (dev, staging, production) के बीच डेटाबेस संरचना को सिंक्रोनाइज़ करने की समस्या का समाधान करते हैं। मैन्युअल रूप से SQL स्क्रिप्ट चलाने के बजाय, आप JavaScript/TypeScript में कोड के माध्यम से बदलावों का वर्णन करते हैं। लाभ:
- बदलावों का स्वचालित अनुप्रयोग
- पिछले वर्ज़न पर वापस जाने (रोलबैक) की क्षमता
- रिपॉजिटरी में बदलावों के इतिहास का भंडारण
- विभिन्न DBMS (PostgreSQL, MySQL, SQLite आदि) के लिए समर्थन
1. Sequelize — अंतर्निहित माइग्रेशन सिस्टम वाला ORM
Sequelize Node.js के लिए सबसे लोकप्रिय ORM में से एक है। यह माइग्रेशन प्रबंधन के लिए CLI टूल प्रदान करता है। इंस्टॉलेशन:
npm install --save sequelizenpm install --save-dev sequelize-clinpx sequelize-cli initइनिशियलाइज़ेशन के बाद migrations, models, seeders फ़ोल्डर और कॉन्फ़िगरेशन फ़ाइल config/config.json बनाई जाती है।
माइग्रेशन बनाना
npx sequelize-cli migration:generate --name create-users-tableमाइग्रेशन की सामग्री का उदाहरण:
'use strict';module.exports = { up: async (queryInterface, Sequelize) => { await queryInterface.createTable('Users', { id: { type: Sequelize.INTEGER, primaryKey: true, autoIncrement: true }, username: { type: Sequelize.STRING, allowNull: false, unique: true }, email: { type: Sequelize.STRING, allowNull: false }, createdAt: { type: Sequelize.DATE, allowNull: false }, updatedAt: { type: Sequelize.DATE, allowNull: false } }); }, down: async (queryInterface, Sequelize) => { await queryInterface.dropTable('Users'); }};लागू करना और वापस लेना
npx sequelize-cli db:migratenpx sequelize-cli db:migrate:undo2. Knex.js — माइग्रेशन के साथ SQL क्वेरी बिल्डर
Knex.js एक ORM नहीं है, बल्कि एक शक्तिशाली क्वेरी बिल्डर है। इसकी माइग्रेशन प्रणाली को सबसे लचीली में से एक माना जाता है। इंस्टॉलेशन:
npm install knex --savenpm install pg --save # या mysql, sqlite3npx knex initमाइग्रेशन बनाना और लिखना
npx knex migrate:make create_posts_tableकोड का उदाहरण:
exports.up = function(knex) { return knex.schema.createTable('posts', (table) => { table.increments('id').primary(); table.string('title', 255).notNullable(); table.text('content'); table.integer('user_id').unsigned().references('id').inTable('users'); table.timestamps(true, true); });};
exports.down = function(knex) { return knex.schema.dropTableIfExists('posts');};काम करने के लिए कमांड
npx knex migrate:latestnpx knex migrate:rollbacknpx knex migrate:status # स्थिति देखेंKnex प्रारंभिक डेटा भरने के लिए "सीड्स" (seeds) का भी समर्थन करता है:
npx knex seed:make 01_demo_usersnpx knex seed:run3. TypeORM — TypeScript प्रोजेक्ट्स के लिए माइग्रेशन
TypeORM एक आधुनिक ORM है जो JavaScript और TypeScript दोनों को सपोर्ट करता है। इसकी माइग्रेशन प्रणाली एंटिटी डेकोरेटर्स के साथ गहराई से एकीकृत है। इंस्टॉलेशन:
npm install typeorm reflect-metadata --savenpm in