فعالية تحويل البيانات من قاعدة بيانات SQL واحد إلى آخر في بيئة حية

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

سؤال

لدينا قليلا من الوضع قاعدة بيانات الفوضى.

هو مكتوب

ونظامنا المكاتب الخلفية الرئيسي في Visual فوكس برو مع البيانات المحلية (نعم، وأنا أعلم!)

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

وهذا يعني أن لدينا اثنين من قواعد البيانات SQL - واحد أن يكتب عملية التصدير FOXPRO جهدنا ل، وآخر مواقعنا قراءة من

وتختص هذه المسألة مع التحويل من قاعدة بيانات SQL واحدة إلى أخرى (SqlFoxProData -> SqlWebData).

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

وهذا قد تعمل بشكل جيد لعدة شهور ولكن الآن بدأنا في ضرب على مشاكل الأداء عندما تتخذ تحديثا مكان (وهذا يمكن أن يحدث بانتظام خلال النهار)

وأساسا عندما كنا نقوم بتحديث SqlWebData.ImportantTable من SqlFoxProData.ImportantTable، فإنه يسبب في بعض الأحيان اتصال مهلة / المآزق / مشاكل أخرى على المواقع الحية.

ولقد عملت بجد على تحسين الاستعلامات، التخزين المؤقت الخ الخ، لكنها تأتي إلى نقطة حيث أنا أبحث عن استراتيجية أخرى لتحديث البيانات.

واحد الفكرة التي تتبادر إلى الذهن هو أن يكون نسختين من ImportantTable (A و B)، وبعض مفهوم الجدول الذي هو حاليا النشط '، وتحديث جدول غير نشطة، ثم التبديل الجدول actice currenly

وأي بمعنى. المواقع القراءة من ImportantTableA بينما نحن نعمل على تحديث ImportantTableB، ثم نتحول المواقع القراءة من ImportantTableB.

والسؤال هو، هل هذا ممكنا وفكرة جيدة؟ لقد فعلت شيئا مثل ذلك من قبل ولكنني لست مقتنعا انها جيدة بالضرورة عن أمثلية / الفهرسة وغيرها.

ونرحب بأي اقتراحات، أعرف أن هذا هو الوضع فوضوي ... والهدف على المدى الطويل سيكون للحصول على تطبيق FoxPro لدينا لافتا إلى SQL.

و(نحن نستخدم SQL 2005 إذا كان ذلك يساعد)

وأود أن أضيف أن اتساق البيانات ليست ذات أهمية خاصة في المقام، كما نرى البيانات هو دائما قليلا من التاريخ

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

المحلول

وهناك الكثير من الطرق لسلخ هذا القط.

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

وأتوقع أنني سوف حلها باستخدام جدولين انطلاق منفصلة. واحد لتصدير FoxPro في SQL واحدة تتحول إلى الشكل النهائي في جنبا إلى جنب SQL. ثم إما مبادلة المباراة النهائية للإنتاج باستخدام sp_rename، أو ببساطة عن طريق استخدام 3 INSERT / UPDATE / DELETE المعاملات لتطبيق كافة التغييرات من الجدول النهائي للإنتاج. وفي كلتا الحالتين، هناك ستكون بعض قفل هناك، ولكن كيف كبيرة نتحدث عنه؟

نصائح أخرى

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

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

و"لجدول معين (واحد من الجداول الرئيسية للتطبيق)، لأن العديد من التحولات البيانات تأخذ الأماكن أثناء هذه العملية، انها ليست UPDATE واضحة، إدراج وحذف البيانات باستخدام ينضم الذاتي، ولكننا الحاجة إلى استخدام المؤشرات بدلا من ذلك (وأنا أعلم!) "

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

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

وكنت قد ننظر أيضا في استخدام جهاز مباحث أمن الدولة لنقل البيانات.

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

وأو عن كيفية كتابة كافة التغييرات إلى قاعدة بيانات حاليا، والسماح للنسخ المتماثل SQL خادم رعاية المزامنة؟

[آسف، وهذا كان يمكن أن يكون التعليق، وإذا كان لي ما يكفي من سمعة!]

وبناء على ردكم على إيرني أعلاه، هل سألت كيف تكرار قواعد البيانات. هنا هو مايكروسوفت-كيفية حول النسخ المتماثل في SQL2005.

ولكن، إذا كنت تسأل عن التكرار وكيفية القيام بذلك، فإنه يشير لي أن كنت القليل من الضوء في تجربة لخادم SQL. أن يقال، فإنه من السهل إلى حد ما الوحل الامور وبينما أنا كل لالتعلم عن طريق الخبرة، وإذا كان هذا هو بيانات مهمة حاسمة، قد يكون من الافضل التعاقد مع DBA أو على أقل تقدير، واختبار # $ @ # $ ٪ من هذا من قبل كنت فعلا تنفيذه.

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