سؤال

لدي خادم اختبار يستخدم البيانات من قاعدة بيانات الاختبار. عندما انتهيت من الاختبار، يتم نقلها إلى قاعدة البيانات المباشرة.

المشكلة هي، لدي مشاريع أخرى تعتمد على البيانات الآن في الإنتاج، لذلك يجب علي تشغيل برنامج نصي يمسك البيانات من الجداول التي أحتاج إليها، حذف البيانات في اختبار DB وإدراج البيانات من DB Live DB.

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

بهذه الطريقة، يمكنني تضمين البرنامج النصي التحديث في البرامج النصية الأخرى الخاصة بي وليس من الضروري أن تقلق إذا كانت البيانات متزامنة.

لا أستطيع استخدام الطوابع الزمنية. لأحد، ليس لدي أي سيطرة على الجداول على الجانب المباشر بمجرد أن يذهب مباشرة، وكذلك لأنها تبدو سخيفة بعض الشيء لارتفاع الجداول أكثر مقابل الحمل.

حاولت القيام بعرض وضع الجدول من LIVEDB "ولكن لأن الجداول كلها InnoDB، لا يوجد" وقت التحديث "، بالإضافة إلى ذلك، يبدو أن" إنشاء وقت "كان هذا الصباح، مما يؤدي إلى الاعتقاد بأن قاعدة البيانات مدعومة يصل وإعادة إنشاؤها يوميا.

هل هناك أي ممتلكات أخرى في الطاولة التي من شأنها أن تظهر أي من الاثنين أحدث؟ "أحدث تاريخ الصف" ربما؟

هل كانت مفيدة؟

المحلول

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

دون معرفة ما هو نموذج البيانات الخاص بك، وبدون فهم على الإطلاق ما هو نموذج المزامنة لديك، لديك بعض الخيارات:

  1. تطابق المفاتيح الأساسية مقابل قاعدة البيانات الحية مقابل قاعدة بيانات الاختبار. عند اختبار> معرفات Live، قم بالتحديث.
  2. استخدم الطوابع الزمنية في جدول لتحديد ما إذا كان يجب تحديثه
  3. استخدم MD5 Hash لجدول جدول قاعدة البيانات وتاريخ التعديل (UTC) لتحديد ما إذا كان جدول قد تغير.

قصة طويلة قصيرة: مزامنة قاعدة البيانات صعبة للغاية. تنفيذ حل محدد لتطبيقك. لا يوجد حل "عام" الذي سيعمل بشكل مثالي.

نصائح أخرى

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

ولكن أي إصدار من MySQL الذي تستخدمه؟

بدلا من المتداول بنفسك، يمكنك استخدام حل مسبقين لإحفظ قواعد البيانات في المزامنة. سمعت أشياء جيدة عن SQLYOG SJA (انظر هنا). لم أستخدمها أبدا بنفسي، لكنني أعجبت ببرامجها الأخرى.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top