كيف تدير التنقيحات قاعدة البيانات على مشروع متوسط ​​الحجم مع الفروع؟

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

سؤال

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

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

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

المحلول

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

فعل القضبان لأول مرة .

واحد على الأقل مشروع .

وهنا هو ل NET مكتبة الهجرة .

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

وربما آخرين يمكن أن توحي المكتبات الهجرة الأخرى.

وابتهاج.

وتحرير: انظر أيضا https://stackoverflow.com/questions/313/net-migrations-engine صافي الهجرة قاعدة البيانات أداة الجولة (ومن فوق آخر).

نصائح أخرى

http://odetocode.com/Blogs/scott /archive/2008/01/30/11702.aspx

ووبلوق أعلاه جلبت لنا لنظام قاعدة بيانات التحكم في الإصدار الحالي. ببساطة، يتم إجراء أية تغييرات DB بدون برنامج نصي تحديث وعن تحديث البرامج النصية وفي منطقتنا مستودع التحكم بالمصادر.

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

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

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

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

ولقد وضعنا معا أداة صغيرة في البيت الذي يقرأ التغييرات التسويقي ويبني النصي تحديث كبير بناء على محتويات النشرة المصورة عن طريق الاستيلاء على محتويات من كل مراجعة في الكتالوج وتطبيقها. هذا المفهوم هو مشابه جدا ل DBDeploy الأداة، التي أعتقد أنها جاءت في الأصل من <لأ href = "HTTP: // www.thoughtworks.com/ "يختلط =" نوفولو noreferrer "> Thoughtworks ، لذلك قد تكون قادرة على الاستفادة منه. فإنه على الأقل تعطيك مكان جيد للبدء، من هذه النقطة يمكنك تخصيص حل يناسب أكثر مباشرة وفقا لاحتياجاتك.

وحظا سعيدا!

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