سؤال

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

المشكلة الرئيسية هي أنه لا يمكنني الاستعلام عن مخزن البيانات عن طريق الموقع لأن GAE لن تسمح متعددة المقارنة العددية البيانات (<,<=,>=,>) في استعلام واحد.أنا بالفعل باستخدام واحدة من أجل التاريخ ، وكنت بحاجة اثنين للتحقق من كل من خطوط الطول والعرض, حتى انها لا تذهب.حاليا ، بلدي خوارزمية يبدو مثل هذا:

1.) الاستعلام من تاريخ واختر

2.) استخدام الوجهة وظيفة من geopy مسافة وحدة للعثور على max و min خطوط العرض وخطوط الطول على الموردة المسافة

3.) حلقة من خلال النتائج وإزالة كافة مع اللات/الغاز الطبيعي المسال خارج ماكس/دقيقة

4.) حلقة مرة أخرى من خلال استخدام المسافة وظيفة للتحقق من الدقيق المسافة لأن الخطوة 2 سوف تشمل بعض المناطق خارج دائرة نصف قطرها.إزالة النتائج خارج الموردة المسافة (هذا 2/3/4 الجمع inefficent?)

5.) تجميع عدة قوائم ونعلق على الكائنات (هذا هو المكان الذي أنا تحتاج إلى التبديل إلى العمليات المجمعة)

6.) العودة إلى العميل

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

-تبقى قائمة في ذاكرة التخزين المؤقت مليئة "جيو الكائنات" التي تمثل جميع البيانات الخاصة بي.هذه خمس خصائص:خطوط الطول والعرض event_id, event_type (تحسبا من التوسع خارج البطولات) ، start_date.هذه القائمة سيتم فرزها حسب التاريخ.

-أيضا الحفاظ على ديكت من المؤشرات في ذاكرة التخزين المؤقت التي تمثل بداية ونهاية المؤشرات في ذاكرة التخزين المؤقت لجميع نطاقات تاريخ بلدي التطبيق يستخدم (المقبل أسبوع, 2 أسابيع, شهر, 3 أشهر, 6 أشهر, سنة, 2 سنوات).

-لديك مهمة مجدولة أن التحديثات المؤشرات يوميا في الساعة 12 ليلا.

-إضافة جديدة تدرج إلى ذاكرة التخزين المؤقت فضلا عن مخزن البيانات ؛ التحديث المؤشرات.

باستخدام هذا تصميم الخوارزمية سوف تبدو الآن مثل:

1.) مؤشرات استخدام شريحة قبالة المناسبة قطعة من القائمة على أساس زودت التاريخ.

2-4.) نفس المذكور أعلاه خوارزمية إلا الجغرافية الكائنات

5.) الاستخدام الأكبر العملية لتحديد كامل البطولات المتبقية باستخدام الجغرافية الأجسام event_ids

6.) تجميع العديد من-إلى-منيس

7.) العودة إلى العميل

الأفكار على هذا النهج ؟ شكرا جزيلا على القراءة و أي نصيحة لك يمكن أن تعطي.

-داين

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

المحلول

كنت قد تكون مهتمة من قبل geohash, والتي تمكنك من القيام المساواة الاستعلام مثل هذا:

تحديد خطوط الطول والعرض من العنوان myMarkers حيث geohash >= :sw_geohash و geohash <= :ne_geohash

إلقاء نظرة على هذه المقالة الجميلة والتي كانت واردة في هذا الشهر Google App Engine التطبيق محرك تحديث المجتمع بلوق وظيفة.

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

نصائح أخرى

الجيوموديل هو أفضل ما وجدته. قد تنظر كيف بلدي GAE برنامج إرجاع الاستعلامات الجغرافية المكانية. على سبيل المثال ، يكون استعلام HTTP مع CC اختياري (رمز البلد) باستخدام مكتبة Geomodel lat=20.2095231&lon=79.560344&cc=IN

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