جلسة تسجيل بيانات سجل الويب باستخدام MySQL (ربما عن طريق محاكاة وظائف النافذة)

dba.stackexchange https://dba.stackexchange.com/questions/120287

سؤال

لدي جدول MySQL كبير يحتوي على حوالي 15 مليون صف من بيانات سجل الويب. اعتمادا على الملكية الفكرية، UserAgent و Site_id (أقسام مختلفة على الموقع الإلكتروني) أريد إنشاء جلسات المستخدم. يجب أن يكون محدد الدورة 30 دقيقة. لذلك إذا كان مستخدم فريد (نفس IP و Usage) غير نشط لمدة 30 دقيقة أو إذا كان يزور منطقة موقعا مختلفا (2 أو 3 أو 4) تبدأ جلسة جديدة.

وجدت إدخال مدونة جيدة للغاية، يصف الإجراء العام: http:// randyzwitch.com/sesshess-log-data-sql/ ولكن لا يمكنني تنفيذ هذا 1: 1 لأن MySQL لا يدعم وظائف النافذة وأنا لا أتقن بما فيه الكفاية مع MySQL لمعرفة ذلك بمفردي ، على سبيل المثال مع group_concat ().

هنا هو بيانات مثال مجهول على SQLFiddle: http://www.sqlfiddle.com / #! 9 / A8B1F / 1

سيكون رائعا حقا إذا كنت تستطيع مساعدتي.

أنا نشرت بالفعل هذا السؤال / a>.

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

المحلول

قد قدمت إجابتك الخاصة - لا تحتوي MySQL على وظائف النافذة (وظائف تحليلية AKA).نصيحتي لك ستكون للتبديل إلى postgresql لهذا السبب وحده.

أيضا، يدعم PostgresQL مجموعة المشغلين، والتحقق من القيود، ونظم المعلومات الجغرافية، الحقول المحسوبة (على الرغم من أن Mariadb يدعم هذه)، و CTES (تعبيرات الجدول المشتركة، ويعرف أيضا باسم GEAL THE FILLES) - على الرغم من أن ترى إجابة Justin Swanhart هنا .

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