في الوقت الحقيقي التحديث النسبي المتصدرين لكل مستخدم بين الأصدقاء

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

سؤال

لقد تم العمل على ميزة طلبي لتنفيذ المتصدرين - أساسا كومة ترتيب المستخدمين حسب النتيجة.Im حاليا تتبع النتيجة على أساس فردي.فكرتي هي أن هذه اليافطة ينبغي النسبية بدلا من المطلق أيبدلا من الاضطرار أعلى 10 أعلى الدرجات المستخدمين عبر الموقع ، 10 أعلى بين المستخدم صديق الشبكة.هذا يبدو أفضل لأن الجميع لديه فرصة ليكون #1 في الشبكة و هناك شكل من أشكال المنافسة الودية بالنسبة لأولئك الذين يرغبون في هذا النوع من الشيء.Im بالفعل تخزين النتيجة لكل مستخدم وبالتالي فإن التحدي هو كيفية حساب رتبة من أن النتيجة في الوقت الحقيقي بطريقة فعالة.Im باستخدام Google App Engine لذلك هناك بعض الفوائد والقيود (على سبيل المثال ، في [مجموعة]) استفسار إجراء sub-الاستعلام عن كل عنصر من الصفيف أيضا تقتصر على 30 من العناصر في بيان

على سبيل المثال

1 جاك 100

2 جون 50

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

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

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

2b.نفس المذكور أعلاه إلا بحساب رتبة قائمة أجل الناس من التشكيلات التي تم عرضها في اليوم الأخير سلبيات - رتبة هو فقط ما يصل إلى تاريخ 2 شخص أن الآراء الشخصية

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

المحلول

إذا كان يكتب نادرة جدا مقارنة يقرأ (على افتراض رئيسي في معظم قيمة المفتاح المتاجر وليس فقط في تلك;-), ثم قد تفضل أن تأخذ الوقت ضرب عندما تحتاج إلى تحديث الدرجات (الكتابة) بدلا من الحصول على نسبة المتصدرين (قراءة).تحديدا عندما يقوم المستخدم درجة التغيير طابور المهام لكل من أصدقائهم إلى تحديث "النسبية المتصدرين" والحفاظ على تلك المتصدرين مثل قائمة سمات (التي لا تبقي النظام!-) مناسب فرز (نعم ، هذا الأخير هو denormalization -- من الضروري غالبا ما denormalize أي معلومات مكررة بشكل مناسب ، من أجل استغلال قيمة المفتاح المتاجر في أفضل حالاتها!-).

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

إذا كان يكتب جدا متكررة منذ كنت لا تحتاج تماما دقة تصل إلى الثانية معلومات (أي المالية/المحاسبة الاشياء;-), لا يزال لديك العديد من نهج عملي في محاولة.

E. g. ، درجة كبيرة التغييرات (ندرة) قد تؤدي النسبية-المتصدرين recomputes, بينما أصغر (أكثر تواترا) الحصول على مخبأة بعيدا ولا يطبق إلا مرة واحدة في كل حين "عند ذلك".من الصعب أن تكون أكثر تحديدا دون الملعب أرقام حول تواتر التحديثات من مختلف حجم, شبكة نموذجية-الصداقة العنقودية الأحجام ، الخ ، الخ.أنا أعرف مثل كل شخص آخر تريد النهج المثالي الذي ينطبق مهما كانت مختلفة الأحجام و الترددات في السؤال...ولكن لن تجد فقط واحد!-)

نصائح أخرى

هناك مكتبة بيثون المتاحة لتخزين تصنيفات:

http://code.google.com/p/google-app-engine-ranklist/

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