BigTable, que es el back-end de la base de datos para App Engine, se escalará a millones de registros. Debido a esto, App Engine no te permitirá realizar ninguna consulta que genere un escaneo de tabla, ya que el rendimiento sería espantoso para una tabla bien poblada.
En otras palabras, cada consulta debe usar un índice. Es por eso que solo puede hacer consultas =
, >
y <
. (De hecho, también puede hacer !=
pero la API hace esto usando una combinación de consultas >
y <
). Esta también es la razón por la que el entorno de desarrollo monitorea todas las consultas que hace y agrega automáticamente los índices faltantes a su archivo index.yaml
.
No hay forma de indexar para una consulta LIKE
por lo que simplemente no está disponible.
Ten un reloj de this Google IO session para una explicación mucho mejor y más detallada de esto.
1. Buena pregunta con buenas respuestas –
El problema continuo gira en torno a las personas que intentan utilizar GAE Datastore como si fuera una base de datos Relational/~ SQL. Al introducir Google GQL, lleva a las personas a pensar en términos de sistemas SQL. Sin embargo, entiendo que Google está tratando de hacer la transición para todos mucho más fácil, aunque no estoy seguro de que este sea el enfoque correcto. – fuentesjr