ترحيلات قواعد البيانات في TypeScript: دليل شامل للأدوات والمناهج

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

ترحيلات قواعد البيانات في TypeScript: كيفية إدارة المخطط دون ألم

تتطلب التطوير باستخدام TypeScript ليس فقط كتابة كود صارم الأنواع، بل أيضًا إدارة موثوقة لهيكل قاعدة البيانات. الترحيلات هي طريقة لإصدار تغييرات مخطط قاعدة البيانات، مما يسمح للفريق بمزامنة حالة قاعدة البيانات مع كود التطبيق. في هذه المقالة، سنستعرض المكتبات الرئيسية للترحيلات في مشاريع TypeScript، وميزاتها، ونقدم أمثلة عملية.



ما هي الترحيلات ولماذا هي مطلوبة؟

الترحيل هو ملف يحتوي على تعليمات تصف تغييرات مخطط قاعدة البيانات (إنشاء أو تعديل أو حذف الجداول والفهارس والعلاقات). مزايا استخدام الترحيلات:

  • إصدار التغييرات — يتم تسجيل كل تغيير في ملف منفصل مع طابع زمني أو رقم.
  • قابلية التكرار — يمكن نشر قاعدة البيانات من الصفر على أي إصدار.
  • العمل الجماعي — يطبق جميع المطورين نفس التغييرات.
  • التراجع — إمكانية إلغاء التغييرات غير الناجحة.


الأدوات الشائعة للترحيلات في TypeScript



1. TypeORM

TypeORM هو ORM يعمل مع TypeScript وJavaScript. نظام الترحيلات المدمج يعتمد على سطر الأوامر.

التثبيت:

npm install typeorm reflect-metadatanpm install @types/node --save-dev

مثال على إنشاء ترحيل:

npx typeorm migration:create src/migration/AddUserTable

مثال على كود الترحيل:

import { MigrationInterface, QueryRunner, Table } from "typeorm";

export class AddUserTable1234567890123 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", length: "255" }, { name: "email", type: "varchar", length: "255", isUnique: true } ] })); }

public async down(queryRunner: QueryRunner): Promise<void> { await queryRunner.dropTable("users"); }}

تشغيل الترحيلات:

npx typeorm migration:run

المزايا: تكامل وثيق مع TypeORM، إنشاء تلقائي بناءً على الكيانات.

العيوب: قد يكون بطيئًا في المشاريع المعقدة، يتطلب إعداد التهيئة.



2. Prisma

Prisma هو ORM حديث مع نظام ترحيلات قوي. يستخدم لغة تعريفية (Prisma Schema Language).

التثبيت:

npm install prisma @prisma/clientnpx prisma init

مثال على المخطط (schema.prisma):

model User {  id    Int     @id @default(autoincrement())  name  String  email String  @unique  posts Post[]}

model Post { id Int @id @default(autoincrement()) title String content String? authorId Int author User @relation(fields: [authorId], references: [id])}

إنشاء وتطبيق الترحيل:

npx prisma migrate dev --name init

يقوم Prisma تلقائيًا بإنشاء ملف SQL وتطبيقه على قاعدة البيانات. يمكن أيضًا عرض الحالة:

npx prisma migrate status

المزايا: نهج تعريفي، إنشاء تلقائي، توثيق ممتاز.

العيوب: مرتبط بـ Prisma، يصعب تجاوزه في السيناريوهات الخاصة.



3. Knex.js

Knex.js هو منشئ استعلامات خفيف الوزن لـ Node.js، يتضمن نظام ترحيلات. يعمل مع TypeScript من خلال إضافات

توصيات