Básicamente tengo el modelo clásico de muchos a muchos. Un usuario, un premio y un mapeo de tabla "muchos a muchos" entre usuarios y premios.¿BigTable es lento o soy tonto?
Cada usuario tiene del orden de 400 premios y cada premio se otorga a aproximadamente la mitad de los usuarios.
Quiero iterar sobre todos los premios del usuario y resumir sus puntos. En SQL, sería una combinación de tabla entre muchos y muchos y luego recorrería cada una de las filas. En una máquina decente con una instancia de MySQL, 400 filas no deberían ser un gran problema.
En el motor de aplicación estoy viendo alrededor de 10 segundos para hacer la suma. La mayor parte del tiempo se gasta en el almacén de datos de Google. Aquí están las primeras pocas filas de 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}
¿Mi modelo de datos está mal? ¿Estoy haciendo las búsquedas mal? ¿Es esto una deficiencia que tengo que lidiar con el almacenamiento en caché y el bulkupdating (que sería un dolor real en el culo).
+1 LOL. Me encanta el título de esta pregunta! – Elijah
¿BigTable de Google no es básicamente una tabla hash? – balpha
Esa función superior como Espera ... ¿por qué estás pasando 6 segundos en espera? – workmad3