Pregunta

necesito para almacenar un grafo no dirigido en una base de datos de Google App Engine. Con fines de optimización, estoy pensando en usar base de datos de índices . El uso de Google App Engine, ¿hay alguna manera de definir las columnas de una tabla de base de datos para crear su índice?

Me va a necesitar algo de optimización, ya que mi aplicación utiliza este grafo no dirigido almacenado en un filtro basado en el contenido de la recomendación artículo. Además, el algoritmo de recomendación actualiza los pesos de los bordes de algunos gráficos.

Si no es posible utilizar los índices de bases de datos, por favor sugiere otro método para reducir el tiempo de consulta de la tabla gráfica. Creo que mi algoritmo hace más datos de las operaciones de recuperación de la tabla gráfica de las operaciones de escritura.

PS:. Estoy usando Python

Otros consejos

estás viendo realmente prohibitivo consultas lentas? No estoy adivinando. Sospecho que esto es algo optimización prematura. el almacén de datos de App Engine no hace ninguna clasificación, filtrado, se une a, o de otras operaciones significativas en la memoria, por lo que los tiempos de consulta son por lo general bastante constante. en particular, la latencia de consulta no depende del número de entidades del almacén de datos, o incluso el número de entidades que responden a sus criterios. sólo depende de la cantidad de resultados que pedir.

En una nota relacionada, agregar índices a su almacén de datos no acelerar las consultas existentes. si una consulta necesita un índice personalizado, no se degradará y correr más lento sin ella. la consulta simplemente no funcionará en absoluto hasta que se agrega el índice.

para la consulta específica que mencionas, select * from edges where vertex1 == x and vertex2 == y, el almacén de datos puede funcionar sin un índice personalizado en absoluto. ver esta sección de la documentación para más detalles.

En resumen, basta con ejecutar las consultas que necesita, y no piensan demasiado sobre índices o tratar de optimizar como si fuera un DBA. que no es una base de datos relacional. : P

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