0Pricing
SQL Academy · درس

الأدوات: Flyway وLiquibase وSqitch

قارن أدوات ترحيل المخططات الشائعة ونماذج إدارة الإصدارات الخاصة بها وتكاملها مع CI

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

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

يجب أن تكون تغييرات المخطط:

  • مُدارة بالإصدارات في نظام التحكم بالمصدر
  • مطبقة بترتيب حتمي
  • منفّذة تلقائيًا في CI/CD
  • قابلة للتراجع، أحيانًا

Flyway

أداة قائمة على Java وتستخدم ترحيلات قائمة على الملفات. يُسمّى كل ملف ببادئة رقم الإصدار:

-- V1__create_users.sql
CREATE TABLE users (id BIGSERIAL PRIMARY KEY, email TEXT NOT NULL);

-- V2__add_full_name.sql
ALTER TABLE users ADD COLUMN full_name TEXT;

-- Flyway tracks applied migrations in a flyway_schema_history table.

واجهة Flyway لسطر الأوامر

طبّقوا الترحيلات:

flyway -url=jdbc:postgresql://localhost/mydb -user=app migrate
flyway info        # show what would run
flyway repair      # fix the history table after a failure

Liquibase

تستخدم "مجموعات تغييرات" مبنية على XML أو YAML أو JSON، أو SQL. وهي أكثر تفصيلًا من Flyway، لكنها تدعم التجريدات المشتركة بين قواعد البيانات:

<!-- changeset alice:001 -->
<createTable tableName="users">
  <column name="id" type="bigserial" autoIncrement="true">
    <constraints primaryKey="true"/>
  </column>
  <column name="email" type="text"><constraints nullable="false"/></column>
</createTable>

دعم Liquibase للتراجع

يمكن لكل مجموعة تغييرات التصريح بإجراء للتراجع. يستطيع Liquibase التراجع عن آخر N من التغييرات:

liquibase rollbackCount 1

Sqitch

يستخدم SQL الأصلي دون ترتيب بأرقام الإصدارات، بل يعتمد على رسم بياني موجّه لا دوري (DAG) صريح للتبعيات. ويحتوي كل تغيير على نصوص deploy وverify وrevert:

sqitch add add_users -n 'Add users table'
# edits deploy/add_users.sql, verify/add_users.sql, revert/add_users.sql
sqitch deploy db:pg://localhost/mydb

مقارنة الأدوات الثلاث

FlywayLiquibaseSqitch
التنسيقSQLXML/YAML/JSONSQL
إدارة الإصداراتتسلسليةتسلسليةDAG
التراجعمحدودأصليأصلي
خطوة التحققلااختياريةمدمجة

أدوات أصلية لإطار العمل

تمتلك العديد من أطر الويب أدواتها الخاصة:

  • Rails: ترحيلات ActiveRecord
  • Django: ترحيلات مدمجة
  • Node: knex وsequelize وprisma migrate
  • NestJS: ترحيلات TypeORM

سير عمل CI

خط أنابيب قياسي:

  1. يتضمن طلب السحب ملف ترحيل جديدًا
  2. ينشئ CI قاعدة Postgres فارغة ويشغّل جميع الترحيلات
  3. يشغّل الاختبارات الآلية على المخطط الذي خضع للترحيل
  4. عند الدمج، ينشر التغييرات ويشغّل الترحيلات على بيئة الاختبار، ثم على بيئة الإنتاج

الترحيلات القابلة للتكرار

يحتوي Flyway على ترحيلات قابلة للتكرار تبدأ بـ "R__"، وتُعاد عند كل تغيير. وهي مناسبة لطرق العرض والإجراءات المخزنة:

-- R__users_view.sql  (re-applied whenever its checksum changes)
CREATE OR REPLACE VIEW active_users AS
  SELECT id, email FROM users WHERE deleted_at IS NULL;

اكتشاف انحراف المخطط

استخدموا migra أو schemahero أو pgquarrel لاكتشاف الانحراف بين المخطط المتوقع والمخطط الفعلي.

مراجعة

اختاروا أداة والتزموا بها.

  • Flyway — يعتمد على SQL أولًا وبسيط
  • Liquibase — تصريحي ويدعم طبقات التجريد
  • Sqitch — تبعيات DAG ويركز على التراجع أولًا
  • دائمًا: أدرِجوا الإصدارات في نظام التحكم بالمصدر وأتمتوا التنفيذ في CI

تحقق سريع

أي أداة تستخدم أصلًا رسمًا بيانيًا موجّهًا لا دوريًا (DAG) صريحًا للتبعيات بين الترحيلات، بدلًا من أرقام الإصدارات التسلسلية؟

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

هل درس «الأدوات: Flyway وLiquibase وSqitch» مجاني؟

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

ماذا ستتعلم في «الأدوات: Flyway وLiquibase وSqitch»؟

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

هل أحتاج إلى خبرة سابقة لأبدأ SQL Academy؟

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

كم من الوقت يستغرق درس «الأدوات: Flyway وLiquibase وSqitch»؟

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

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

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

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

  1. الترحيلات الفورية: لماذا تقفل ALTER TABLE الجداول
  2. الفهارس المتزامنة (CREATE INDEX CONCURRENTLY)
  3. إعادة تسمية الأعمدة دون توقف
  4. الأدوات: Flyway وLiquibase وSqitch
← العودة إلى SQL Academy