كيفية ترقية مخطط قاعدة البيانات المبني باستخدام أداة ORM؟

StackOverflow https://stackoverflow.com/questions/64148

  •  09-06-2019
  •  | 
  •  

سؤال

أنا أبحث عن حل عام لترقية مخطط قاعدة البيانات باستخدام أدوات ORM، مثل JPOX أو Hibernate.كيف تفعل ذلك في مشاريعك؟

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

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

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

المحلول

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

نصائح أخرى

لا أفهم سبب اختلاف مخططات ORM التي تم إنشاؤها عن مخططات قاعدة البيانات الأخرى - فالمشكلة هي نفسها.بافتراض أن ORM الخاص بك سيصدر نصًا برمجيًا للإنشاء، يمكنك استخدام أداة خارجية للقيام بالفرق

لم أحاول ذلك ولكن جوجل عاد مع SQLCompare كخيار واحد - أنا متأكد من أن هناك آخرين.

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

DbMaintain يمكن أن تساعد أيضا هنا.

يمكنك التحقق من هذا مقارنة الميزات لبعض أدوات ترقية مخطط قاعدة البيانات.

مقارنة عدد الأسئلة في بيان العمل لبعض تلك الأدوات:

أعتقد أن أفضل رهان لك هو استخدام أداة ORM التي تتضمن ترحيل قاعدة البيانات مثل دون سرعة الصوت:

http://subsonicproject.com/2-1-pakala/subsonic-using-migrations/

لقد انتهى بنا الأمر إلى إنشاء برامج نصية للتحديث في كل مرة نقوم فيها بتغيير قاعدة البيانات.لذلك هناك برنامج نصي من الإصدار 10 إلى 11، ومن 11 إلى 12، وما إلى ذلك.ثم يمكننا تشغيل أي مجموعة متتالية من البرامج النصية للانتقال من بعض الإصدارات الموجودة إلى الإصدار الجديد.قمنا بتخزين الإصدار الحالي في قاعدة البيانات حتى نتمكن من اكتشاف ذلك عند بدء التشغيل.

نعم، يتضمن هذا رمزًا خاصًا بقاعدة البيانات!واحدة من المشاكل الرئيسية مع السبات!

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

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