إدارة التغييرات قاعدة البيانات بين مشروع القضبان وجافا

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

سؤال

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

وحتى الآن، كان معظم التركيز على تطبيق جافا، وعلى هذا النحو، لا توجد الهجرات في المشروع القضبان. تتم إدارة SQL لتحديث قاعدة بيانات مشتركة في ملف مثل changes.sql.

وكما يمكنك أن تتخيل، وهذا يجعل من الصعب بعض الشيء لتطوير.

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

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

المحلول

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

أو يمكنك الذهاب على العكس من ذلك، والسماح للتغييرات السيطرة تعريفات جافا على الجانب القضبان.

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

نصائح أخرى

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

لدينا بعض الحالات التي نستخدم الإجراءات المخزنة وقاعدة بيانات محددة أنواع الأعمدة، لذلك قمنا بتغيير القضبان environment.rb لاستخدام مزود لإنشاء قاعدة بيانات الاختبار.

  # Use SQL instead of Active Record's schema dumper when creating the test database.
  # This is necessary if your schema can't be completely dumped by the schema dumper,
  # like if you have constraints or database-specific column types
  config.active_record.schema_format = :sql

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

ونتذكر فقط للحفاظ على خطوط الاتصال مفتوحة beteen الفرق. أحب حقيقة أن "سقف الانتاج ونشر: الهجرات" يجعل تحديث قاعدة بيانات الإنتاج ميت بسيطة

وبفضل ستيف

في الجانب جافا، وأنهم يستخدمون السبات، ولكن مع عملية SQL التحديث اليدوي.

وأنا أتفق، أنه ينبغي أن يكون واحد أو آخر. كلما أفكر في ذلك، وأضاف بعد تطبيق آخر / وحدة / تعليمات البرمجة الأساسية لإدارة قاعدة البيانات فقط هو بالتأكيد فكرة خاطئة.

والشكر

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