كيفية التعامل مع كميات كبيرة من البيانات لوحدة إحصائيات الويب

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

سؤال

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

الآلية التي أستخدمها هي - تخزين إدخال قاعدة البيانات في جدول الإحصائيات - في كل مرة يدخل فيها المستخدم منطقة معينة في قاعدة البيانات الخاصة بي (أتجنب السجلات المكررة بمساعدة ملفات تعريف الارتباط).

على سبيل المثال، لدي المناطق التالية:

  1. موقع الويب - منطقة عامة تستخدم لحساب المستخدمين الفريدين حيث توقفت عن الثقة في Google Analytics مؤخرًا.
  2. الفئة - وصف ذاتي.
  3. Minisite-وصف ذاتي.
  4. صورة المنتج - عندما يرى المستخدم المنتج ونموذج إرسال العميل المحتمل.

المشكلة هي أنه بعد شهر، امتلأ جدول الإحصائيات الخاص بي كثيراً من الصفوف وصفحات ASP.NET التي كتبتها لتحليل تحميل البيانات حقًا بطيء.

فكرت في كتابة خدمة يمكنها تحليل البيانات بطريقة أو بأخرى، لكن لا يمكنني رؤية أي طريقة للقيام بذلك دون فقدان المرونة.

أسئلتي:

  1. كيف تقوم تطبيقات تحليل البيانات واسعة النطاق - مثل Google Analytics - بتحميل البيانات بهذه السرعة؟
  2. ما هي أفضل طريقة بالنسبة لي للقيام بذلك؟
  3. ربما يكون تصميم قاعدة البيانات الخاص بي خاطئًا ويجب أن أقوم بتخزين البيانات في جدول واحد فقط؟

شكرا لأي شخص يساعد ،

ايتان.

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

المحلول

النهج الأساسي الذي تبحث عنه يسمى تجميع.

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

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

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

نصائح أخرى

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

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

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

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

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

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

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