الترحيلات
تطوير المخطط
الترحيلات درس مجاني في 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 يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.