كيفية تنظيم وإدارة بيانات اعتماد قاعدة بيانات متعددة في التطبيق؟

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

سؤال

حسنا، لذلك أنا تصميم خدمة ويب قائمة بذاتها (باستخدام الريندل كإطاري). يتم تقسيم طلبي إلى 3 طبقات:

  • طبقة البيانات (فقط فوق قاعدة البيانات، يوفر واجهات برمجة التطبيقات لاتصال / استعلام قاعدة البيانات، وكائن قاعدة البيانات)
  • طبقة الكائن (المسؤول عن التسلسل من طبقة البيانات ... يوفر كائنات يمكن لطبقة العميل استخدامها دون القلق بشأن قاعدة البيانات)
  • طبقة العميل (هذه الطبقة هي خدمة RESTLET WEB ... فقط يقوم فقط بإنشاء كائنات من طبقة الكائنات ووفق طلب WebService)

الآن، لكل كائن أقوم بإنشاءه في طبقة الكائنات، أريد استخدام بيانات اعتماد مختلفة (حتى أتمكن من كائن Sandbox كل كائن). يجب ألا يعرف طبقة الكائن بيانات الاعتماد الدقيقة (أي عنوان URL تسجيل الدخول / PW / DB إلخ).

ماذا ستكون أفضل طريقة لإدارة هذا؟ أفكر في أنني يجب أن يكون لدي كائن قاعدة بيانات فئة فائقة في طبقة البيانات الخاصة بي ... وستحتوي كل فرعية على معلومات تسجيل الدخول المطلوبة ... بهذه الطريقة يمكن لطبقة كائناتي فقط Database db = new SubDatabase(); ثم تابع استخدام قاعدة البيانات هذه.

على مستوى العميل، سيكونون قادرين فقط على الذهاب ItemCollection items = new ItemCollection(); وليس لديك أي فكرة / تحكم في قاعدة البيانات التي تتصل.

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

إذا كان لدى أي شخص أي تجربة مع هذه المشاكل المعمارية أو كيفية إدارة هذا النوع من الأشياء كنت أقدر أي رؤية أو نصيحة ...

لا تتردد في طرح الأسئلة إذا كان هذا مربكا. شكرًا!

منصبي هو Java، وإطار الراحة الذي أستخدمه هو Restlet، قاعدة البيانات الخاصة بي هي MySQL.

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

المحلول

أشعر ما شرحته معقولة وأنت تحاول عدم كشف تفاصيل قاعدة البيانات وبيانات الاعتماد على مستوى Cleint.

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

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

نصائح أخرى

اقتراحي هو استخدام JTA حيث يمكنك استخدام قاعدة بيانات واحدة ثم عدد التعليقات المعنية من Datasources. يمكنك الرجوع هنا لمزيد من المعلومات https://test.kuali.org/confluence/display/kulrice/datasource+n+jta

أود صدى تعليقات @ saugata. ينظر الى الخريف وقم بضخ تطبيق مصدر البيانات الخاص بك (أو كعبات لاختبار!) إلى طبقة الكائنات الخاصة بك في تكوين الربيع الخاص بك. هذا يجب أن يساعد بنية التطبيق الخاصة بك في عدد من الطرق:

  1. ستتمكن من تبديل قواعد البيانات (إما مثيلات أو تطبيقات) على ذبابة إعادة ترجمة التعليمات البرمجية.
  2. ستجاهل مصدر البيانات بالكامل من تطبيقه - مما يتيح لك تبديل قاعدة بيانات لخدمة ويب أو تطبيق قائمة الانتظار أو كعب.
  3. فك تطبيق طلبك بهذه الطريقة سيجعل من السهل الاختبار.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top