Google Cloud Datastore proporciona acceso programático a algunos de sus metadatos para permitir la metaprogramación, la implementación de funciones administrativas del backend, la simplificación del almacenamiento en caché coherente y propósitos similares. Lo puedes usar, por ejemplo, para crear un lector personalizado de almacén de datos para tu aplicación. Los metadatos disponibles incluyen información sobre los grupos de entidad, los espacios de nombres, los tipos de entidades y las propiedades que usa tu aplicación, así como las representaciones de propiedades para cada propiedad.
En el panel de Cloud Datastore en GCP Console también se proporcionan metadatos sobre tu aplicación, pero los datos que se muestran allí difieren en algunos aspectos importantes de los que se muestran en estas funciones.
- Actualidad: Cuando se leen los metadatos con la API, se obtienen los datos actuales, mientras que los datos del panel se actualizan solo una vez por día.
- Contenido: Algunos metadatos del panel no están disponibles mediante las API y viceversa.
- Velocidad: La consulta y la obtención de metadatos se facturan de la misma forma que las de Datastore. Las consultas de metadatos que buscan información en espacios de nombres, tipos y propiedades son generalmente de ejecución lenta. Como regla general, una consulta de metadatos que muestre N entidades puede tomar el mismo tiempo que N consultas comunes que muestren una sola entidad cada una. Además, la consultas de representaciones de propiedades (consultas de propiedades no solo de claves) son más lentas que las consultas de propiedades solo de claves. La obtención de metadatos de grupos de entidad es más rápida que la de una entidad normal.
Consultas de metadatos
Hay tres tipos de entidades especiales reservados para las consultas de metadatos:
| Entidad | Descripción |
|---|---|
__namespace__ |
Se usa para encontrar todos los espacios de nombres empleados en las entidades de tu aplicación. |
__kind__ |
Se usa para consultar un tipo específico. |
__property__ |
Se usa para consultar según una propiedad de un tipo. |
Estos tipos no entrarán en conflicto con otros que tengan el mismo nombre y que ya existan en tu aplicación. Si consultas estos tipos especiales, puedes obtener entidades que contengan los metadatos deseados.
Las entidades que se muestran como resultado de las consultas de metadatos se generan dinámicamente según el estado actual de Datastore. Si bien puedes crear objetos de entidades locales de tipo __namespace__, __kind__ o __property__, todo intento de almacenarlos en Datastore fallará.
Consultas de espacio de nombres
Puedes usar una consulta de espacio de nombres para encontrar todos los espacios de nombres que se usan en las entidades de la aplicación. Esto te permite realizar actividades tales como las funciones administrativas en varios espacios de nombres.
Las consultas de espacios de nombres muestran entidades __namespace__ de tipo especial cuyo nombre de clave es el de un espacio de nombres. Una excepción es el espacio de nombres predeterminado
designado por la string vacía "". Como la string vacía no es un nombre de clave
válido, a este espacio de nombres se le asigna el ID numérico 1 como clave. Las consultas de este tipo admiten el filtrado solo para rangos superiores a la pseudopropiedad especial __key__, cuyo valor es la clave de la entidad. Se pueden ordenar los resultados según el valor __key__ de forma ascendente (pero no descendente). Dado que las entidades __namespace__ no tienen propiedades, tanto las consultas solo de claves como las que no lo son muestran la misma información.
En el ejemplo siguiente, se muestra una lista de los espacios de nombres de una aplicación en el rango de los valores asignados a las variables startNamespace y endNamespace:
C#
Para saber cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta esta página. Si deseas obtener más información, consulta la documentación de referencia de la API de C# de Cloud Datastore.
Go
Para saber cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta esta página. Si deseas obtener más información, consulta la documentación de referencia de la API de Go de Cloud Datastore.
Java
Para saber cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta esta página. Si deseas obtener más información, consulta la documentación de referencia de la API de Java de Cloud Datastore.
Node.js
Para saber cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta esta página. Si deseas obtener más información, consulta la documentación de referencia de la API de Node.js de Cloud Datastore.
PHP
Para saber cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta esta página. Si deseas obtener más información, consulta la documentación de referencia de la API de PHP de Cloud Datastore.
Python
Para saber cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta esta página. Si deseas obtener más información, consulta la documentación de referencia de la API de Python de Cloud Datastore.
Ruby
Para saber cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta esta página. Si deseas obtener más información, consulta la documentación de referencia de la API de Ruby de Cloud Datastore.
GQL
SELECT __key__ FROM __namespace__ WHERE __key__ >= KEY(__namespace__, 'namespace-a') AND __key__ < KEY(__namespace__, 'namespace-b')
Consultas de tipos
Las consultas de tipos muestran entidades de tipo __kind__ cuyo nombre de clave es el nombre de un tipo de entidad. Las consultas de este tipo se restringen de forma implícita al espacio de nombres actual y permiten filtrar solo rangos superiores a la pseudopropiedad __key__. Se pueden ordenar los resultados según el valor __key__ de forma ascendente (pero no descendente). Dado que las entidades __kind__ no tienen propiedades, tanto las consultas solo de clave como las que no lo son muestran la misma información.
En el ejemplo siguiente, se muestra una lista de los tipos usados en una aplicación:
C#
Para saber cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta esta página. Si deseas obtener más información, consulta la documentación de referencia de la API de C# de Cloud Datastore.
Go
Para saber cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta esta página. Si deseas obtener más información, consulta la documentación de referencia de la API de Go de Cloud Datastore.
Java
Para saber cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta esta página. Si deseas obtener más información, consulta la documentación de referencia de la API de Java de Cloud Datastore.
Node.js
Para saber cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta esta página. Si deseas obtener más información, consulta la documentación de referencia de la API de Node.js de Cloud Datastore.
PHP
Para saber cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta esta página. Si deseas obtener más información, consulta la documentación de referencia de la API de PHP de Cloud Datastore.
Python
Para saber cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta esta página. Si deseas obtener más información, consulta la documentación de referencia de la API de Python de Cloud Datastore.
Ruby
Para saber cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta esta página. Si deseas obtener más información, consulta la documentación de referencia de la API de Ruby de Cloud Datastore.
GQL
SELECT __key__ FROM __kind__
Consultas de propiedades
Las consultas de propiedades muestran entidades de tipo __property__ que denotan las propiedades indexadas que están asociadas a un tipo de entidad. No se incluyen las propiedades no indexadas. La entidad que representa la propiedad p de tipo k se construye de la siguiente forma:
- La clave de la entidad es de tipo
__property__y tiene nombre de clave p. - La clave principal de la entidad es de tipo
__kind__y tiene nombre de clave k. - La propiedad del arreglo
property_representationde la entidad contiene todas las representaciones de la propiedad.
Por ejemplo, supón que tienes un almacén de datos que contiene exactamente dos entidades Task con las propiedades name y done:
Key: 'Task:1'
name: 'Read some properties'
done: true
Key: 'Task:2'
name: 'Climb'
done: null
En ese caso, la consulta de __property__ mostrará las siguientes dos entidades:
Key: '__kind__:Task/__property__:name'
property_representation: [ 'STRING' ]
Key: '__kind__:Task/__property__:done'
property_representation: [ 'BOOLEAN', 'NULL' ]
Las consultas de propiedades se restringen de forma implícita al espacio de nombres actual y permiten el filtrado limitado con una propiedad principal o un rango superior a la pseudopropiedad __key__.
Una consulta de propiedades solo de claves es más eficiente que una consulta que no sea solo de claves, ya que no necesita recopilar las representaciones de la propiedad. El siguiente ejemplo muestra los nombres de todos los tipos de entidades de una aplicación y las propiedades asociadas a cada uno:
C#
Para saber cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta esta página. Si deseas obtener más información, consulta la documentación de referencia de la API de C# de Cloud Datastore.
Go
Para saber cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta esta página. Si deseas obtener más información, consulta la documentación de referencia de la API de Go de Cloud Datastore.
Java
Para saber cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta esta página. Si deseas obtener más información, consulta la documentación de referencia de la API de Java de Cloud Datastore.
Node.js
Para saber cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta esta página. Si deseas obtener más información, consulta la documentación de referencia de la API de Node.js de Cloud Datastore.
PHP
Para saber cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta esta página. Si deseas obtener más información, consulta la documentación de referencia de la API de PHP de Cloud Datastore.
Python
Para saber cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta esta página. Si deseas obtener más información, consulta la documentación de referencia de la API de Python de Cloud Datastore.
Ruby
Para saber cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta esta página. Si deseas obtener más información, consulta la documentación de referencia de la API de Ruby de Cloud Datastore.
GQL
SELECT __key__ FROM __property__
Consultas de propiedades: representaciones de propiedades
Las consultas de propiedades que no son solo de claves, conocidas como consultas de representaciones de propiedades, muestran información adicional sobre los tipos de valores que se usan para cada propiedad. La propiedad property_representation de la entidad que representa la propiedad p de tipo k es un arreglo que contiene todas las representaciones de valor p en cualquier entidad de tipo k.
Cada valor tiene la representación siguiente (algunos tipos de valores comparten las representaciones):
| Tipo de valor | Representación |
|---|---|
| Número entero | INT64 |
| Número de coma flotante | DOUBLE |
| Booleano | BOOLEAN |
| String de texto | STRING |
| String de bytes | STRING |
| Fecha y hora | INT64 |
| Clave de Datastore | REFERENCE |
| Entidad incorporada | STRING |
| Arreglo | representación de los elementos del arreglo |
| Punto geográfico | POINT |
| Nulo | NULL |
En el siguiente ejemplo, se encuentran todas las representaciones de las propiedades de tipo Task mediante una consulta de propiedades principales:
C#
Para saber cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta esta página. Si deseas obtener más información, consulta la documentación de referencia de la API de C# de Cloud Datastore.
Go
Para saber cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta esta página. Si deseas obtener más información, consulta la documentación de referencia de la API de Go de Cloud Datastore.
Java
Para saber cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta esta página. Si deseas obtener más información, consulta la documentación de referencia de la API de Java de Cloud Datastore.
Node.js
Para saber cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta esta página. Si deseas obtener más información, consulta la documentación de referencia de la API de Node.js de Cloud Datastore.
PHP
Para saber cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta esta página. Si deseas obtener más información, consulta la documentación de referencia de la API de PHP de Cloud Datastore.
Python
Para saber cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta esta página. Si deseas obtener más información, consulta la documentación de referencia de la API de Python de Cloud Datastore.
Ruby
Para saber cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta esta página. Si deseas obtener más información, consulta la documentación de referencia de la API de Ruby de Cloud Datastore.
GQL
SELECT * FROM __property__ WHERE __key__ HAS ANCESTOR KEY(__kind__, 'Task')
Consultas de propiedades: filtrado
Las consultas de propiedades permiten el filtrado por principales de una clave __kind__ o __property__ a fin de limitar los resultados de la consulta a un solo tipo o a una sola propiedad, tal como se observa en la consulta de representaciones de propiedades anterior.
Las consultas de propiedades también se pueden filtrar con un rango superior a la pseudopropiedad __key__, en el caso en que las claves denotan entidades __kind__ o __property__. Se pueden ordenar los resultados según el valor __key__ de forma ascendente (pero no descendente). Se aplica el filtro a los pares tipo-propiedad, ordenados primero por tipo y después por propiedad. Por ejemplo, imagina que tienes entidades con las siguientes propiedades:
- tipo
Taskcon propiedadescreatedprioritytags
- tipo
TaskListcon propiedadescreated
La siguiente consulta de propiedades solo de claves:
C#
Para saber cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta esta página. Si deseas obtener más información, consulta la documentación de referencia de la API de C# de Cloud Datastore.
Go
Para saber cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta esta página. Si deseas obtener más información, consulta la documentación de referencia de la API de Go de Cloud Datastore.
No aplicableJava
Para saber cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta esta página. Si deseas obtener más información, consulta la documentación de referencia de la API de Java de Cloud Datastore.
Node.js
Para saber cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta esta página. Si deseas obtener más información, consulta la documentación de referencia de la API de Node.js de Cloud Datastore.
No aplicablePHP
Para saber cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta esta página. Si deseas obtener más información, consulta la documentación de referencia de la API de PHP de Cloud Datastore.
Python
Para saber cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta esta página. Si deseas obtener más información, consulta la documentación de referencia de la API de Python de Cloud Datastore.
No aplicableRuby
Para saber cómo instalar y usar la biblioteca cliente de Cloud Datastore, consulta esta página. Si deseas obtener más información, consulta la documentación de referencia de la API de Ruby de Cloud Datastore.
GQL
SELECT __key__ FROM __property__ WHERE __key__ >= KEY(__kind__, 'Task', __property__, 'priority')
Recopilará los siguientes pares de nombre de propiedad y tipo:
Task, priority
Task, tags
TaskList, created
Observa que los resultados incluyen propiedades de tipo Task y TaskList, pero no incluyen la propiedad created de tipo Task, ya que no entra en el rango especificado para la consulta.