मूल रूप से कई क्लासिक के लिए क्लासिक कई हैं। उपयोगकर्ताओं और पुरस्कारों के बीच एक उपयोगकर्ता, एक पुरस्कार, और "कई से कई" टेबल मैपिंग।बिगटेबल धीमा है या मैं गूंगा हूँ?
प्रत्येक उपयोगकर्ता के पास 400 पुरस्कारों के क्रम में है और प्रत्येक पुरस्कार लगभग 1/2 उपयोगकर्ताओं को दिया जाता है।
मैं सभी उपयोगकर्ता के पुरस्कारों पर पुन: प्रयास करना चाहता हूं और उनके अंक जोड़ना चाहता हूं। एसक्यूएल में यह एक टेबल कई से अधिक लोगों के बीच जुड़ जाएगा और फिर प्रत्येक पंक्ति के माध्यम से चलना होगा। एक MySQL उदाहरण के साथ एक सभ्य मशीन पर, 400 पंक्तियों का एक बड़ा सौदा नहीं होना चाहिए।
ऐप इंजन पर मैं योग करने के लिए लगभग 10 सेकंड देख रहा हूं। अधिकांश समय Google के डेटास्टोर में खर्च किया जा रहा है। यहाँ cProfile की शुरुआती कुछ पंक्तियाँ है
ncalls tottime percall cumtime percall filename:lineno(function) 462 6.291 0.014 6.868 0.015 {google3.apphosting.runtime._apphosting_runtime___python__apiproxy.Wait} 913 0.148 0.000 1.437 0.002 datastore.py:524(_FromPb) 8212 0.130 0.000 0.502 0.000 datastore_types.py:1345(FromPropertyPb) 462 0.120 0.000 0.458 0.001 {google3.net.proto._net_proto___parse__python.MergeFromString}
अपने डेटा मॉडल गलत है? क्या मैं लुकअप गलत कर रहा हूं? क्या यह एक कमी है कि मुझे कैशिंग और बल्कअपडेटिंग (जो गधे में शाही दर्द होगा) से निपटना होगा।
+1 एलओएल। मुझे इस सवाल का खिताब पसंद है! – Elijah
क्या Google की बिगटेबल मूल रूप से हैश तालिका नहीं है? – balpha
प्रतीक्षा के रूप में वह शीर्ष कार्य ... आप प्रतीक्षा में 6 सेकंड क्यों खर्च कर रहे हैं? – workmad3