Dado que Google App Engine no permite las combinaciones, ¿esto significa que tengo que tomar todas las tablas en mi aplicación web y encontrar una manera de combinarlas en una única tabla grande?Sin participar en Google App Engine, ¿sus datos tienen que existir en una gran tabla?
Respuesta
El hecho de que no tenga uniones implementadas por el DBMS no significa que no pueda tener varias tablas. En App Engine, estos se llaman 'tipos de entidades', y puede tener tantos de ellos como desee.
Generalmente, necesita desnormalizar sus datos para evitar la necesidad de uniones frecuentes. En las pocas situaciones en que son inevitables, puede usar otras técnicas, como hacer la combinación en el código de usuario.
Combinarlo en una tabla grande siempre es una opción, pero genera tablas innecesariamente grandes y redundantes la mayor parte del tiempo, por lo que hará que su aplicación sea lenta y difícil de mantener.
También puede emular una combinación, iterando a través de los resultados de una consulta y ejecutando una segunda consulta para cada resultado encontrado para la primera consulta. Si usted tiene la consulta SQL
SELECT a.x FROM b INNER JOIN a ON a.y=b.y;
puede emular esto con algo como esto:
for b in db.GqlQuery("SELECT * FROM b"):
for a in db.GqlQuery("SELECT * FROM a WHERE y=:1", b.y):
print a.x
El cambio de una base de datos relacional para la App Engine almacén de datos requiere un cambio de paradigma para los desarrolladores cuando se modela sus datos. Eche un vistazo here para tener una mejor idea. Esto requerirá que piense más al principio sobre cómo adaptar su problema a las limitaciones que impone el almacén de datos, pero si puede, entonces se le garantiza que se ejecutará rápidamente y se escalará.
Si está buscando maneras de diseñar la tabla de datos. Te recomiendo que hagas un poco de investigación antes de comenzar el trabajo. Hay bastante propiedades mágicas para Google App Engine como:
- Auto-funden valor múltiple
- propiedad de lista
que serían muy útiles en su diseño. He compartido my experience here.
Para obtener información sobre la capacidad de escala, existe un exclusivo free course in Udacity here sobre el tema. Es impartido por el fundador de reddit.com y explica claramente toda la escala que está sucediendo en reddit, uno de los sitios con mayor número de visitantes. Muestra la implementación completa de la demostración del curso en gae (¡y eso fue un gran premio para mí!). Ofrecen los videos completos del curso free to download here. He estado trabajando duro con el motor de aplicaciones antes de obtener estos recursos. Así que pensé que compartir esto podría ayudar a otros que están pisando las aguas.
- 1. Google App Engine consulta HRD sin antecesor
- 2. Django en Google App Engine
- 3. Almacenamiento de datos en una aplicación de Google App Engine
- 4. Google App Engine en Silverlight
- 5. Actualización de un gran número de entidades en un almacén de datos en Google App Engine
- 6. eCommerce en Google App Engine
- 7. Jinja2 en Google App Engine
- 8. web.py en Google App Engine
- 9. Google-app-engine NDB
- 10. Google App Engine Geohashing
- 11. Google App Engine Locking
- 12. appengine_config.py en Google App Engine
- 13. Google App Engine en Google Apps Domain
- 14. Subir archivos en Google App Engine
- 15. Gráficos sin dirección y recorrido en Google App Engine
- 16. Google App Engine: autenticación personalizada
- 17. ¿Alguien probó MongoDB en Google App Engine?
- 18. Google App Engine: ¿Cuál es su RDBMS?
- 19. autenticación en Google App Engine (página web)
- 20. Google App Engine - HTML generado en caché
- 21. Implementación de etiquetas en Google App Engine
- 22. Google App Engine retraso extraño
- 23. API REST en Google App Engine
- 24. Google app engine & CDN
- 25. ¿Aplicación RESTful en Google App Engine Java?
- 26. Google App Engine: get_or_create()?
- 27. Google App Engine
- 28. ¿Puedo deshabilitar GZIP en Google App Engine?
- 29. ThreadLocal en Google App Engine (GAE)
- 30. Google Maps y Google App Engine
App Engine utiliza GQL, que tiene un subconjunto muy básico de sintaxis SQL. No estoy 100% seguro, pero creo que su ejemplo de SQL no funcionaría. –
Sí, GQL es menos poderoso que SQL, pero lo suficientemente potente como para que mi ejemplo funcione. Ver http://code.google.com/appengine/docs/python/datastore/gqlreference.html – pts
¿Eso no daría como resultado una gran cantidad de conexiones al almacén de datos y, por lo tanto, ralentizaría las cosas? – chakrit