Pregunta

Dado que Google App Engine no permite combinaciones, ¿significa que tengo que tomar todas las tablas de mi aplicación web y encontrar una forma de combinarlas en una sola tabla enorme?

¿Fue útil?

Solución

El hecho de que no tenga uniones implementadas por el DBMS no significa que no pueda tener varias tablas. En App Engine, estos se denominan "tipos de entidad" y puede tener tantos como desee.

Generalmente, debe desnormalizar sus datos para evitar la necesidad de uniones frecuentes. En las pocas situaciones en las que son inevitables, puede usar otras técnicas, como unir el código de usuario.

Otros consejos

Combinarlo en una tabla grande siempre es una opción, pero resulta en 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 unió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 tiene la consulta SQL

SELECT a.x FROM b INNER JOIN a ON a.y=b.y;

puedes 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

Si está buscando formas de diseñar la tabla de datos. Le recomiendo que investigue un poco antes de comenzar el trabajo. Hay propiedades bastante mágicas para Google App Engine como:

  • Auto-fusión
  • Propiedad de lista de valores múltiples

Eso sería muy útil en su diseño. He compartido mi experiencia aquí .

Para aprender sobre la capacidad de escala, hay un curso gratuito exclusivo en Udacity aquí solo en el tema. Es enseñado por el fundador de reddit.com y explica claramente todo lo relacionado con la escala que ocurre en reddit, uno de los sitios con el mayor número de visitantes. Muestra toda la implementación de demostración del curso en gae (¡y eso fue un premio gordo para mí!). Ofrecen los videos completos del curso gratis para descargar aquí . 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 pisan el agua.

Cambiar de una base de datos relacional al almacén de datos de App Engine requiere un cambio de paradigma para los desarrolladores al modelar sus datos. Eche un vistazo aquí para tener una mejor idea. Esto requerirá que piense más por adelantado sobre cómo encajar su problema en las restricciones que impone el almacén de datos, pero si puede, tiene la garantía de que se ejecutará rápidamente y escalará.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top