ما المقصود بإدارة المخطط؟
لماذا يُعد ذلك مهمًا؟
أنواع نُهُج إدارة المخطط
الإجرائي
CREATE TABLE أو ALTER TABLE أو DROP COLUMN ضمن ملفات. ثم تُشغِّل الأداة هذه الملفات بالتسلسل وتتعقّب أيّها تم تطبيقه. في هذه الفئة، أنت من يحدّد بدقة تعليمات SQL المطلوب تشغيلها.
أمثلة: Golang Migrate وGoose وFlyway.
تصريحي
ما ينبغي مراعاته عند اختيار أداة
ما الأدوات التي يستخدمها فريقك بالفعل؟
ما العملية التي ترغب بها؟
- سير عمل بسيط على نمط “اكتب SQL، شغّله في CI، وانتهى الأمر”، مثل Goose أو Golang Migrate.
- سير عمل مُدار للموافقات، مع سجلات تدقيق وRBAC، مثل Bytebase أو Liquibase.
- تعريف المخطط بصورة تصريحية، بحيث تتولى الأداة تحديد الفرق، مثل Atlas.
الأدوات الموصى بها
Atlas
- النوع: تصريحي
- اللغة: Go، ويُوزَّع كملف تنفيذي واحد
- الترخيص والتوفر: Open Core؛ يوفّر Atlas CLI إصدارًا مجتمعيًا بترخيص Apache 2.0، لكن دعم ClickHouse يتطلب خطة Pro أو نسخة تجريبية
- دعم العناقيد: نعم
Golang Migrate
schema_migrations داخل قاعدة بيانات ClickHouse.
لماذا يعمل جيدًا مع ClickHouse: لأنه بسيط ومرن. تكتب أوامر DDL الخاصة بـ ClickHouse التي تريد تشغيلها كما هي تمامًا. وهو ملف تنفيذي واحد بلغة Go من دون تبعيات وقت التشغيل، مما يسهّل دمجه في مسار CI/CD أو حاوية Docker.
ما الذي ينبغي الانتباه إليه: إذا احتوى ملف ترحيل على عدة عبارات وفشل أحدها أثناء التنفيذ، فقد تُترك قاعدة البيانات في حالة تطبيق جزئي تتطلب تدخّلًا يدويًا. ويمكن التعامل مع ذلك بالالتزام بقاعدة: عبارة واحدة لكل ملف.
الأفضل لـ: الفرق التي تريد البساطة وتحكمًا كاملًا ودقيقًا في أوامر SQL التي تُنفَّذ على مثيل ClickHouse الخاص بها.
- النوع: إجرائي
- اللغة: Go
- الترخيص: مفتوح المصدر، MIT
- دعم العناقيد: نعم
Goose
- Type: إجرائي
- Language: Go، ويُوزَّع كملف تنفيذي واحد
- License: مفتوح المصدر، MIT
- دعم العناقيد: لا