مخطط قاعدة البيانات تصميم - نصائح لتحسين القدرة على الأرشيف ؟

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

سؤال

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

  • ومع ذلك إدخالات السجل هذه سوف تستخدم في وقت التشغيل عن طريق نظام اتخاذ القرارات لذا فإنها تحتاج إلى أن تكون سريعة نسبيا للوصول.
  • لديهم أيضا المشكلة هي أنه سيكون هناك الكثير منهم (12.5 مليون شهريا تقديري).
  • لا تحتاج إلى أكثر من 30 إلى 45 يوما على الأكثر من أجل اتخاذ قرار المعالجة.
  • أنا بحاجة للحفاظ على كل منهم لفترة أطول بكثير من 45 يوما عن دعم & المسائل القانونية ، من المرجح على الأقل 2 سنوات.
  • الجدول تصميم بسيط إلى حد ما ، جميع أنواع بسيطة (بدون النقط أو أي شيء) ، حيث من الممكن استخدام مشغل قاعدة بيانات لوضع البيانات الافتراضية في معظم واحدة الأجنبية الرئيسية.
  • إذا كان هناك فرق تكون قاعدة البيانات Microsoft SQL Server 2005.

ما كنت أفكر فيه هو وجود لهم مكتوب أن يعيش الجدول/قاعدة البيانات ثم استخدام ETL حل حركة "القديمة" إدخالات إلى أرشيف الجدول/قاعدة البيانات - التي هي كبيرة على تباطؤ الأجهزة.

سؤالي هو هل تعرف من أي نصائح وحيل أو اقتراحات قاعدة البيانات/تصميم الجدول للتأكد من أن هذا يعمل بشكل جيد ممكن ؟ أيضا إذا كنت تعتقد انها فكرة سيئة يرجى اسمحوا لي أن أعرف, ماذا تعتقد سوف تكون فكرة أفضل.

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

المحلول

بعض قواعد البيانات تقدم "أقسام" (Oracle, على سبيل المثال).قسم مثل الرأي الذي يجمع عدة جداول متطابقة في تعريف واحد.يمكنك تحديد معايير نوع جديد من البيانات في جداول مختلفة (على سبيل المثال ، في الشهر أو في الأسبوع من العام % 6).

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

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

[تحرير] SQL server 2005 وما بعدها (طبعة المؤسسة) يدعم أقسام.شكرا ميتش القمح

نصائح أخرى

الطاولات الكبيرة يتباطأ بسرعة كبيرة وأداء النفقات العامة إلى استخدام ETL لسحب البيانات على أساس موعد مائدة كبيرة ثم حذف القديم الصفوف.الجواب على هذا هو استخدام جداول متعددة - ربما الجدول 1/الشهر استنادا إلى الأرقام الخاصة بك.وبطبيعة الحال سوف تحتاج بعض المنطق إنشاء جدول أسماء ضمن الاستفسارات الخاصة بك.

أنا أتفق مع استخدام مشغلات لملء 'CurrentMonthAudit' الجدول في نهاية الشهر, ثم يمكنك إعادة تسمية هذا الجدول إلى MonthAuditYYYYMM.نقل الجداول القديمة قبالة الرئيسي الخاص بك الملقم باستخدام ETL ثم سوف تكون سهلة و كل من الجداول الخاصة بك وسوف يكون التحكم فيها.صدقني هذا أفضل بكثير من محاولة لإدارة جدول واحد مع حوالي 250 الصفوف.

أول قرار جيد هو الحفاظ على كل شيء بسيطة بقدر الإمكان.

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

عادة أنا قشعريرة في العلائقية تصميم عواقب تفعل شيئا مثل هذا, ولكني وجدت أن الكتابة فقط الزمني تسجيل الجداول استثناء المعتاد أنماط التصميم للأسباب التي كنت تتعامل مع هنا.

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

(راجع للشغل - جداول كبيرة لا تبطئ بسرعة إذا كانت مصممة بشكل جيد - أنها تبطئ ببطء.)

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

قواعد البيانات ليست دائما الخيار الأفضل ، وخاصة بالنسبة ملفات الدخول :)

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