Pregunta

Dado que Google App Engine Datastore se basa en Mesa grande y sabemos que no es una base de datos relacional, ¿cómo se diseña una esquema de base de datos/modelo de datos para aplicaciones que utilizan este tipo de sistema de base de datos?

¿Fue útil?

Solución

Diseñar un esquema de bigtable es un proceso abierto y básicamente requiere que pienses en:

  • Los patrones de acceso que utilizará y con qué frecuencia se utilizará cada uno de ellos.
  • Las relaciones entre tus tipos.
  • ¿Qué índices vas a necesitar?
  • Los patrones de escritura que utilizará (para distribuir la carga de manera efectiva)

El almacén de datos de GAE desnormaliza automáticamente sus datos.Es decir, cada índice contiene una copia (en su mayoría) completa de los datos y, por lo tanto, cada índice aumenta significativamente el tiempo necesario para realizar una escritura y el espacio de almacenamiento utilizado.

Si este no fuera el caso, diseñar un esquema de Datastore sería mucho más trabajo:Tendría que pensar detenidamente en la clave principal para cada tipo y considerar el efecto de su decisión en la localidad de los datos.Por ejemplo, al representar una publicación de blog, probablemente necesitarás mostrar los comentarios que la acompañan, por lo que la clave de cada comentario probablemente comenzaría con la clave de la publicación asociada.

Con Datastore, esto no es gran cosa:La consulta que use se verá como "Seleccionar * desde el comentario donde Post_id = N." (Si desea revisar los comentarios, también tendría una cláusula de límite y un posible sufijo de "y comment_id> last_comment_id".) Una vez que agregue dicha consulta, DataStore creará el índice para usted, y sus lecturas serán mágicamente rápido.

Algo a tener en cuenta es que cada índice adicional genera algún costo adicional:Es mejor si puede utilizar la menor cantidad de patrones de acceso posible, ya que reducirá la cantidad de índices que GAE construirá y, por lo tanto, el almacenamiento total requerido por sus datos.

Al leer esta respuesta, la encuentro un poco vaga.¿Quizás una pregunta práctica sobre diseño ayudaría a reducir esto?:-)

Otros consejos

Puede utilizar www.web2py.com.Usted construye el modelo y la aplicación una vez y funciona en GAE pero también con SQLite, MySQL, Posgres, Oracle, MSSQL, FireBird.

A medida que GAE se basa en cómo se administran los datos en Django, hay mucha información sobre cómo abordar preguntas similares en la documentación de Django (por ejemplo, consulte aquí, desplázate hacia abajo hasta 'Tu primer modelo').

En resumen, usted diseña su modelo de base de datos como un modelo de objetos normal y deja que GAE ordene todas las asignaciones relacionales de objetos.

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