it-swarm.asia

نشر التغييرات المعقدة

في بعض الأحيان ، نحتاج إلى نشر تغييرات معقدة إلى حد ما على موقع ويب تتطلب تغييرات في قواعد البيانات (جداول جديدة أو متغيرة) ورمز مصدر ديناميكي (مثل PHP أو ColdFusion). ما هي أفضل طريقة لحزم ونشر هذه التغييرات بسرعة دون كسر كل شيء على الموقع المباشر؟

4
Justin Scott

الجواب القصير: إنه ألم في الرقبة!

لقد اضطررت إلى القيام بذلك عدة مرات (وفي كل مرة يجعلني أرغب في التفكير في تصميمي أكثر في المشروع التالي الذي أقوم به). ما أقوم به هو تفرع قاعدة البيانات إلى قسم تطوير (أو مجلد ، أو خادم ، إلخ) حتى يمكنني العمل عليه بشكل منفصل للتأكد من أن جميع الأخطاء قد انتهت قبل الانتقال إلى النشر. بعد ذلك ، أنشئ برنامج نصي SQL له دائمًا نفس السطرين الأولين:

DELETE IF EXISTS newDatabaseName;
CREATE DATABASE newDatabaseName;

سيضمن هذا أن البرنامج النصي يضع كل شيء في قاعدة بيانات جديدة تمامًا وفارغة. ستعيد بقية النص البرمجي جميع الجداول التي أعيد استخدامها من قاعدة البيانات القديمة إلى الجديدة. ثم سأقوم بإنشاء الجداول (أو المعدلة) الجديدة في قاعدة البيانات الجديدة. أخيرًا ، سأقوم بنقل جميع البيانات من الخادم المباشر إلى خادم التطوير. قد يستغرق هذا الأمر وقتًا طويلًا اعتمادًا على كمية البيانات التي تنقلها ومدى سرعة نقلها ، لذلك أوصي بأن تفكر في البرنامج النصي بعناية لأنه كلما كنت مضطرًا لتشغيله ، كان ذلك أفضل.

بعد تشغيل قاعدة بيانات التطوير الجديدة وتشغيلها ، يكون الباقي هو إنشاء رمز جديد لاستخدامه. بمجرد تجزئة ذلك ، يجب أن يكون النشر سهلًا نسبيًا (على الرغم من أنه قد يستغرق وقتًا طويلاً). ما عليك سوى استخدام البرنامج النصي نفسه لنسخ جميع البيانات المباشرة الجديدة إلى قاعدة البيانات الجديدة على خادم النشر ، ونسخ جميع التعليمات البرمجية الجديدة هناك ، وقد انتهيت!

هذه هي الطريقة التي أقوم بها ، وبينما هو الألم ، فإنه يعمل. إذا كانت هناك طريقة أفضل ، سأكون سعيدًا بالاستماع.

تحديث: ردًا على تعليق Tchalvak ، نعم ، عادةً ما أستخدم ما يلي للحصول على جميع تعريفات الجدول دون بياناتها الفعلية:

mysqldump --databases --no-data databaseName > newScript.sql

سأقوم بعد ذلك بتغيير هذا النص كما هو موضح أعلاه.

3
Mike

للحصول على "القدرة على الاستعادة" ، أقترح حقًا التعرف (جيدًا) إما git أو Mercurial(أنظمة التحكم في الإصدار الموزع) .

انتهت الأيام التي يجب أن تعمل فيها باستخدام التعليمات البرمجية المصدر في ملفات مسطحة (الآن يجب أن تعمل معها في ملفات مسطحة ولكن لديك نظام مراقبة تغيير قوي يتتبعها).

2
Kzqai

أفعل بشكل عام (لمواقع نمط LAMP):

  1. حدد تغييراتك ثم اكتب برنامج نصي لتطبيقها (يمكنني استخدام Makefile).
  2. اختبار تغييراتك على عينة من البيانات التي تمثل البيئة الحقيقية
  3. اختبار مرة أخرى للتأكد
  4. أعط لنفسك وسيلة للخروج ، لديك القدرة على التراجع

إذا كنت تقوم بتشغيل كتلة ، فربما يكون لديك صداع أكبر مع حالة الموقع وذاكرة التخزين المؤقت وما إلى ذلك.

0
Aiden Bell