سؤال

يستخدم تطبيق الويب الخاص بي ADO.NET مقابل SQL Server 2008. تحدث قاعدة بيانات DATABASE مقابل قاعدة بيانات (ناشر) أساسية ، ولكن يتم تحميل القراءات متوازنة عبر قاعدة البيانات الأساسية والثانوية (المشترك). نستخدم النسخ المتماثل المعاملات المدمج لخادم SQL للحفاظ على تحديث الثانوي. في معظم الوقت ، فإن بضع ثوان من الكمون ليست مشكلة.

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

تحرير] 99.9 ٪ من الوقت ، البيانات في المشترك "جديدة بما يكفي". ولكن هناك عملية واحدة تبطلها. لا يمكنني القراءة من الناشر في كل مرة على فرصة أن تصبح غير صالحة. إذا لم أتمكن من حل هذه المشكلة تحت تكرار المعاملات ، هل يمكنك اقتراح بنية بديلة؟

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

المحلول

لا يوجد حل من هذا القبيل لخادم SQL ، ولكن إليك كيف عملت حوله في بيئات أخرى.

استخدم ثلاثة سلاسل اتصال منفصلة في التطبيق الخاص بك ، واختر الصحيح بناءً على احتياجات استعلامك:

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

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

نصائح أخرى

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

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

بينما يمكنك ، في Threory ، التحقق من صحة معاملة معينة تم توزيعها على المشترك أم لا ، يجب ألا تبني تصميمك عليها. لا تقدم النسخ المتماثل للمعاملات ضمانًا زمنياً ، حسب التصميم ، لذلك لا يمكنك الاعتماد على وضع تشغيل "اليوم المثالي".

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