قاعدة البيانات التي تسيطر عليها الإصدار مع الاستخدام الفعال من فرق

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

سؤال

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

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

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

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

ما النهج الذي ستستغرقه؟

شكرا

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

المحلول

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

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

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

أعتقد أن هذه هي الطريقة التي يتم بها.

alt text

نصائح أخرى

إذا كنت تتساءل أساسا كيف يتم تخزين تنقيحات البيانات في قواعد البيانات العلائقية، فسوف ننظر إلى كيفية قيام Wikis بذلك.

ويكي كل شيء يدور حول الحفاظ على تاريخ مراجعة مفصل. يستخدمون قواعد البيانات العلائقية البسيطة للتخزين.

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

هل فكرت باستخدام نظام تحكم إصدار حقيقي بدلا من محاولة Shoehorn قاعدة بيانات في مكانه؟ أنا نفسي جزئيا جدا إلى git، ولكن هناك العديد من الخيارات. لديهم جميعا دعم جيد للاختلافات بين الإصدارات، ويميلون إلى أن تكون محسنة جيدا لهذا النوع من عبء العمل.

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