Datenbankmigrationen in JavaScript (Node.js): vollständiger Werkzeugüberblick
Datenbankmigrationen sind eine Möglichkeit zur kontrollierten und versionierten Änderung des Datenbankschemas. In der Node.js-Welt gibt es mehrere leistungsstarke Bibliotheken, die die Automatisierung dieses Prozesses ermöglichen. In diesem Artikel betrachten wir die drei beliebtesten Werkzeuge: Sequelize, Knex.js und TypeORM.
Was sind Migrationen und warum werden sie benötigt?
Migrationen lösen das Problem der Synchronisation der Datenbankstruktur zwischen Entwicklern und Umgebungen (dev, staging, production). Anstatt SQL-Skripte manuell auszuführen, beschreiben Sie die Änderungen im Code in JavaScript/TypeScript. Vorteile:
- Automatische Anwendung von Änderungen
- Möglichkeit des Rollbacks auf eine vorherige Version
- Speicherung des Änderungsverlaufs im Repository
- Unterstützung verschiedener DBMS (PostgreSQL, MySQL, SQLite u.a.)
1. Sequelize — ORM mit integriertem Migrationssystem
Sequelize ist einer der beliebtesten ORMs für Node.js. Es bietet ein CLI-Werkzeug zur Verwaltung von Migrationen. Installation:
npm install --save sequelizenpm install --save-dev sequelize-clinpx sequelize-cli initNach der Initialisierung werden die Ordner migrations, models, seeders und die Konfigurationsdatei config/config.json erstellt.
Erstellung einer Migration
npx sequelize-cli migration:generate --name create-users-tableBeispielinhalt einer Migration:
'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'); }};Anwendung und Rückgängigmachen
npx sequelize-cli db:migratenpx sequelize-cli db:migrate:undo2. Knex.js — SQL Query Builder mit Migrationen
Knex.js ist kein ORM, sondern ein leistungsstarker Query Builder. Sein Migrationssystem gilt als eines der flexibelsten. Installation:
npm install knex --savenpm install pg --save # oder mysql, sqlite3npx knex initErstellung und Schreiben einer Migration
npx knex migrate:make create_posts_tableBeispielcode:
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');};Befehle für die Arbeit
npx knex migrate:latestnpx knex migrate:rollbacknpx knex migrate:status # Status anzeigenKnex unterstützt auch "Seeds" für die initiale Datenbefüllung:
npx knex seed:make 01_demo_usersnpx knex seed:run3. TypeORM — Migrationen für TypeScript-Projekte
TypeORM ist ein moderner ORM, der sowohl JavaScript als auch TypeScript unterstützt. Sein Migrationssystem ist eng mit Entitäts-Dekorateuren integriert. Installation:
npm install typeorm reflect-metadata --savenpm in Auch in der Bibliothek
Arbeit mit XML in Java: Bibliotheken und Werkzeuge für das Parsing
Arbeiten mit CSV in Kotlin: Bibliotheken und Codebeispiele
Überwachung von C# (.NET)-Anwendungen mit OpenTelemetry und Prometheus
PDF-Berichte in Java mit iText und Apache PDFBox generieren