سؤال

طيب أين يمكنني العمل لدينا عدد كبير نسبيا من أنظمة مكتوبة على مدى العقدين الماضيين أن نحافظ عليها.

أنظمة متنوعة في العديد من أنظمة التشغيل (لينكس, سولاريس, ويندوز) ، قواعد بيانات متعددة (عدة إصدارات من oracle, sybase و mysql) و حتى لغات متعددة (C, C++, JSP, PHP, ومجموعة كبيرة من الآخرين) تستخدم.

كل ما الحكم الذاتي ، حتى في تكلفة إدخال نفس البيانات في أنظمة متعددة.

الإدارة قررت مؤخرا أن علينا أن التحقيق ما سوف يستغرق للحصول على جميع أنظمة بسعادة يتحدثون مع بعضهم البعض و تبادل البيانات.

نضع في اعتبارنا أنه في حين أننا يمكن أن تجعل البرنامج تغييرات على أي من الأنظمة الفردية ، إعادة كتابة كاملة من أي نظام واحد (أو أكثر) ليس شيئا إدارة المرجح للترفيه.

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

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

هذا هو الوقت كنت أحضر في رأيي في فوضى كاملة.

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

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

ذلك ما يمكن أن يكون أفضل طريقة للذهاب حول الحصول على هذه الأنظمة أن نتحدث إلى بعضنا البعض ؟

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

المحلول

دمج الأنظمة المتباينة هو بلدي يوم عمل.

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

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

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

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

حظا سعيدا.

تحرير:

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

نصائح أخرى

يبدو أنك قد ترغب في التحقيق وضع الرسائل في قائمة انتظار و الرسالة الموجهة الوسيطة.

MSMQ و جافا خدمة الرسائل يجري الأمثلة.

يبدو أنك تبحث عن الآراء ، لذلك سوف توفر لي.

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

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

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

مباشرة التواصل عبر دفع/ بدس قواعد البيانات يكشف الكثير من التفاصيل الداخلية من نظام إلى آخر.هناك عيوب واضحة:تطوير نظام واحد يمكن كسر الأخرى.وعلاوة على ذلك, يمكن أن تكون هناك قيود فنية في كيفية نظام واحد يمكن الوصول إلى قاعدة بيانات أخرى (النظر في كيفية تطبيق مكتوب بلغة C على يونكس سوف تتفاعل مع قاعدة بيانات SQL Server 2005 التي تعمل على Windows Server 2003).

أول شيء عليك أن تقرر هو منصة حيث "قاعدة البيانات الرئيسية" سوف يقيمون ، والشيء نفسه بالنسبة الوسيطة توفير القدر المطلوب الغراء.بدلا من الذهاب نحو مستوى API الوسيطة-التكامل (مثل كوربا), أود أن أقترح عليك أن تنظر في رسالة موجهة الوسيطة.MS Biztalk, الشمس البوابة الإلكترونية و أوراكل فيوجن يمكن أن يكون بعض من الخيارات.

فكرتك قاعدة بيانات جديدة هو خطوة في الاتجاه الصحيح.قد ترغب في قراءة قليلا على المؤسسة الكيان التجميع نمط.

مزيج من "تكامل البيانات" مع الوسيطة هو الطريق للذهاب.

إذا كنت تسير نحو الوسيطة + واحد بيانات مركزية استراتيجية, قد ترغب في النظر في تحقيق هذا في مراحل متعددة.وهنا من المنطقي صعدت العملية التي يمكن النظر فيها:

  1. تنفيذ خدمات/واجهات برمجة التطبيقات لمختلف أنظمة الذي تعرض وظائف لكل نظام
  2. تنفيذ الوسيطة الذي يصل هذه واجهات برمجة التطبيقات و يوفر واجهة على كافة نظم الحصول على البيانات/خدمات النظم الأخرى (بالوصول إلى البيانات من مصدر مركزي إذا كانت متوفرة, آخر يحصل عليه من نظام آخر)
  3. تنفيذ قاعدة بيانات مركزية فقط ، بدون بيانات
  4. تنفيذ التخزين المؤقت/البيانات-خدمات التخزين في الوسيطة التي يمكن تخزين/ذاكرة التخزين المؤقت البيانات في قاعدة البيانات المركزية كلما البيانات التي يتم الوصول إليها من أي من أنظمة مثلاإذا كان نظام سجلات 1-5 يتم جلب من قبل النظام ب من خلال الوسيطة ، الوسيطة البيانات خدمات التخزين المؤقت يمكن تخزين هذه السجلات في قاعدة بيانات مركزية و في المرة القادمة هذه السجلات سوف يتم جلبه من قاعدة البيانات المركزية
  5. تنقية البيانات يمكن أن يحدث بالتوازي
  6. يمكنك أيضا إنشاء استيراد آلية دفع البيانات من أنظمة متعددة إلى قاعدة البيانات المركزية على أساس يومي (آلي أو يدوي)

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

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