عن المشروع

migrate هي أداة لترحيل قواعد البيانات مكتوبة بلغة Go، يمكن استخدامها كواجهة سطر أوامر أو استيرادها كمكتبة في مشاريع Go. تم اشتقاقها من mattes/migrate. كيف تعمل: تقرأ migrate ملفات الترحيل من مصدر مهيأ وتطبقها بالترتيب الصحيح على قاعدة البيانات الهدف. التصميم يبقي برامج تشغيل قواعد البيانات خفيفة و"غبية" — تقوم migrate نفسها بتنسيق المنطق والتحقق من السلوك، وتتجنب برامج التشغيل تخمين أو تصحيح مدخلات المستخدم، وتفشل عند الشك. قواعد البيانات المدعومة تشمل PostgreSQL، PGX v4 وv5، Redshift، Ql، Cassandra/ScyllaDB، SQLite، SQLite3، SQLCipher، MySQL/MariaDB، Neo4j، MongoDB، CrateDB، Shell، Google Cloud Spanner، CockroachDB، YugabyteDB، ClickHouse، Firebird، MS SQL Server وrqlite. تستخدم سلاسل الاتصال تنسيق URL مثل dbdriver://username:password@host:port/dbname?param1=true، ويجب ترميز الأحرف المحجوزة في URL بنسبة مئوية. تشمل مصادر الترحيل نظام الملفات المحلي، Go io/fs، Go-Bindata، pkger، GitHub، GitHub Enterprise، Bitbucket، GitLab، AWS S3 وGoogle Cloud Storage. واجهة سطر الأوامر هي غلاف رفيع حول المكتبة، تتعامل مع Ctrl+C (SIGINT) بشكل آمن، وتتجنب عمدًا مسارات البحث عن الإعدادات أو ملفات الإعداد أو حقن متغيرات البيئة السحرية. الاستدعاء الأساسي يبدو كالتالي: migrate -source file://path/to/migrations -database postgres://localhost:5432/database up 2. كما يتم نشر صورة Docker (migrate/migrate). كمكتبة Go، توصف الواجهة البرمجية بأنها مستقرة ومجمدة لإصدارات v3 وv4، وتستخدم وحدات Go، وتدعم الإيقاف الآمن عبر قناة GracefulStop للمساعدة في تجنب تلف قاعدة البيانات، وتسمح باستخدام مسجل سجلات خاص بك، وتستخدم تدفقات io.Reader داخليًا لتقليل استهلاك الذاكرة، وتوصف بأنها آمنة للخيوط بدون تسرب للـ goroutines. يمكن استخدامها بشكل مستقل أو مع عميل قاعدة بيانات موجود عبر WithInstance. تأتي ملفات الترحيل في أزواج من ترحيلات up وdown، على سبيل المثال 1481574547_create_users_table.up.sql و.down.sql. يشير المشروع إلى دليل البدء، ودروس تعليمية لـ CockroachDB وPostgreSQL، ووثائق أفضل الممارسات لكتابة الترحيلات، وأسئلة شائعة. الإصدار v3 لم يعد مدعومًا؛ v4 وmaster هما الخطان المدعومان.