Estoy en las primeras etapas de desarrollo de un sitio web de estadísticas deportivas (ultimate frisbee) y me gustaría conocer sus opiniones si Google App Engine es adecuado para mí.Consultas complejas utilizando el almacén de datos de GAE
Lo escribo en Python usando Django y me he sentido cómodo con RDBMS estándar durante años, pero este sitio es un proyecto a largo plazo y estoy esperando grandes cantidades de datos así que me gustaría la escala "infinita" que GAE ofertas de datastore. Una gran mayoría de las consultas a la base de datos devolverá resultados muy estándar que harían que el almacén de datos parezca una opción lógica. Sin embargo, me gustaría poder realizar consultas extremadamente complejas en el futuro para obtener nuevas métricas estadísticas o simplemente obtener resultados interesantes. Planeo hacer mucho de esto en el futuro, pero no sabré qué son estas consultas hasta que los datos ya estén recopilados. Por ejemplo, a menudo se ve a los analistas de estadísticas de béisbol hacer estadísticas ridículas como "Esta es la primera vez en los últimos 50 años que dos lanzadores zurdos cuyos apellidos comienzan con 'Z' han lanzado blanqueadas de un solo golpe. en días pasados ". Me gustaría tener la flexibilidad de hacer cualquier tipo de consulta en el futuro. :)
Sin embargo, tengo la impresión de que una base de datos no relacional como bigtable requiere que se te ocurran modelos que contengan datos redundantes de antemano y que todo el trabajo tenga lugar en las inserciones en lugar de las extracciones. Ya he creado modelos django que contienen prácticamente todos los datos que necesitaría consultar, pero no tengo idea de qué modelos desnormalizados querré tener dentro de uno o dos años. Por lo tanto, tengo la sensación de que hacer consultas complejas en el futuro sería extremadamente difícil en el almacén de datos de GAE y me exigiría extraer una gran cantidad de información del servidor antes de procesarla en python.
¿El almacén de datos del motor de la aplicación de Google simplemente está mal para lo que quiero hacer? O simplemente me estoy perdiendo algo. Muchas gracias de antemano!
Actualización: Gracias por las respuestas hasta el momento. Me doy cuenta de que también debo mencionar que muchas de estas consultas complejas son consultas que me gustaría que los usuarios puedan hacer, lo que hace que una base de datos fuera de línea no sea realmente una opción. Por ejemplo, los usuarios deberían poder ver varias estadísticas de cuán bien juegan dos jugadores en particular cuando están en el campo al mismo tiempo durante juegos o temporadas específicos. Si bien estas consultas no son tan frecuentes como las estadísticas agregadas estándar, seguirán ocurriendo con regularidad.
Tener una base de datos relacional, así como el almacén de datos GAE sería genial, pero django no admite múltiples db por defecto y emparejar una solución en conjunto suena difícil y complicado. Eric Florenzano tiene un nice solution para dos bases de datos que usan los modelos django, pero si tuviera que usar el almacén de datos GAE, tendría que usar el modelo db del motor de la aplicación en su lugar. Y llegar a una buena solución como lo hizo para este problema complejo es un poco más allá de mi nivel de habilidad en este momento.
En este momento mis dos opciones favoritas son utilizar GAE Task Queue para hacer las consultas difíciles o ir a un host de web más estándar como webfaction y luego simplemente desnormalizar mis tablas una vez que mis datos crezcan y necesito aumentar el rendimiento.
Esperaba que respondieras :). Gracias por las dos excelentes sugerencias. He actualizado mi pregunta para abordar un posible problema en su primera sugerencia. En cuanto a su segundo, ¡ni siquiera me di cuenta de que Task Queue existía! Tomará un poco de investigación, pero me pregunto si será capaz de resolver todos mis problemas. – Spike
Unos años después, sí ...pero esta respuesta todavía está dorada, pero ahora puedes usar google cloud sql en lugar de una base de datos fuera de línea y ¡tener tu torta y comértela también! (http://stackoverflow.com/q/10905861/525541) – MindWire