0Pricing
Learn Rust Coding · درس

الترحيلات

تطوير المخطط

الترحيلات درس مجاني في Learn Rust Coding على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Learn Rust Coding، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Learn Rust Coding 4 دروس في المجموع.

لماذا نستخدم عمليات الترحيل؟

عملية migration هي تغيير مُصدَر بإصدار في مخطط قاعدة البيانات، مثل إضافة جدول أو عمود. وتتيح لكم تطوير المخطط بأمان وبطريقة قابلة لإعادة الإنتاج.

  • تُتتبَّع في نظام التحكم بالإصدارات
  • تُطبَّق بالترتيب، مرة واحدة بالضبط

أداة sqlx-cli

يوفّر sqlx واجهة سطر أوامر لإدارة عمليات الترحيل. ثبّتوها مرة واحدة باستخدام cargo.

cargo install sqlx-cli --no-default-features --features postgres

إنشاء عملية ترحيل

ينشئ sqlx migrate add ملف SQL يتضمن طابعًا زمنيًا داخل مجلد migrations/. ويحدد الطابع الزمني ترتيب التنفيذ.

sqlx migrate add create_users

كتابة SQL الخاص بعملية الترحيل

يحتوي كل ملف ترحيل على SQL اللازم لتطوير المخطط. احرصوا على وضع تغيير منطقي واحد في كل ملف.

CREATE TABLE users (
    id   SERIAL PRIMARY KEY,
    name TEXT NOT NULL,
    email TEXT
);

تشغيل عمليات الترحيل

يطبّق sqlx migrate run جميع عمليات الترحيل المعلّقة على DATABASE_URL، ويسجل كل واحدة منها في جدول تتبّع.

sqlx migrate run

جدول التتبّع

يسجل sqlx عمليات الترحيل المُطبّقة في _sqlx_migrations، ويحفظ الإصدار وقيمة تحقق، حتى لا يعيد تطبيق أي عملية أو يغيّرها دون إشعار.

عمليات الترحيل القابلة للعكس

أضيفوا الخيار -r لإنشاء ملفين منفصلين للتطبيق والتراجع. يشغّل sqlx migrate revert أحدث ملف للتراجع.

sqlx migrate add -r create_posts

نمذجة تتبّع عمليات الترحيل

يطبّق مشغّل عمليات الترحيل الإصدارات الأحدث فقط من آخر إصدار مُطبّق. يوضّح هذا المثال القابل للتشغيل ذلك القرار.

fn pending(all: &[u32], applied: u32) -> Vec<u32> {
    all.iter().cloned().filter(|v| *v > applied).collect()
}

fn main() {
    let migrations = [1, 2, 3, 4];
    let last_applied = 2;
    println!("{:?}", pending(&migrations, last_applied));
}

تضمين عمليات الترحيل في الملف الثنائي

تضمّن وحدة الماكرو migrate! مجلد عمليات الترحيل داخل الملف الثنائي، بحيث يتمكن التطبيق من تطبيقها عند بدء التشغيل، دون الحاجة إلى CLI في بيئة الإنتاج.

use sqlx::{Pool, Postgres};

async fn migrate(pool: &Pool<Postgres>) {
    sqlx::migrate!("./migrations")
        .run(pool)
        .await
        .unwrap();
}

قيم التحقق وعدم القابلية للتغيير

لا تعدّلوا عملية ترحيل سبق تشغيلها. يخزّن sqlx قيمة تحقق، ويرفض المتابعة إذا تغيّر محتوى عملية ترحيل سابقة. أضيفوا عملية ترحيل جديدة بدلًا من ذلك.

SQL القابل للتكرار بأمان

أحاطوا العبارات بالشرط IF NOT EXISTS حتى تكون إعادة التشغيل في بيئة جديدة آمنة ومتوقعة.

CREATE TABLE IF NOT EXISTS tags (
    id   SERIAL PRIMARY KEY,
    name TEXT NOT NULL UNIQUE
);

تحقق سريع

اختبروا فهمكم لعمليات الترحيل.

مراجعة

لقد تعلمتم عمليات ترحيل المخطط:

  • عمليات الترحيل تغييرات مرتبة ومُصدَرة بإصدارات في المخطط
  • تديرها أوامر sqlx migrate add/run/revert
  • تُحفظ الإصدارات المُطبّقة وقيم التحقق في _sqlx_migrations
  • تضمّنها migrate! لتطبيقها عند بدء التشغيل
  • لا تعدّلوا عملية ترحيل مُطبّقة؛ أضيفوا عملية جديدة

بهذا تكتمل دورة sqlx.

الأسئلة الشائعة

هل درس «الترحيلات» مجاني؟

نعم — نص درس «الترحيلات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Learn Rust Coding، انتقل إلى CoddyKit PRO. تتضمن دورة Learn Rust Coding 4 دروس في المجموع.

ماذا ستتعلم في «الترحيلات»؟

تطوير المخطط تتمرن على Learn Rust Coding مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Learn Rust Coding؟

لا تُشترط خبرة سابقة. Learn Rust Coding على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «الترحيلات»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Learn Rust Coding هذا؟

نعم. كل درس في Learn Rust Coding يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. الاتصال بقاعدة بيانات
  2. استعلامات متحقَّق منها وقت الترجمة
  3. عمليات CRUD
  4. الترحيلات
← العودة إلى Learn Rust Coding