O Firestore no modo Datastore fornece acesso a metadados, como informações sobre grupos de entidade, namespaces, tipos de entidade, propriedades e representações de propriedade referentes a cada propriedade. É possível usar metadados, por exemplo, para criar um visualizador do Datastore personalizado para seu aplicativo ou para funções administrativas de back-end.
O Painel do Datastore, no console do Google Cloud, também fornece alguns metadados sobre seu aplicativo, mas os dados exibidos nele diferem, em alguns aspectos importantes, dos retornados por essas funções.
- Atualização. A leitura de metadados pela API fornece dados atuais, enquanto os dados do painel são atualizados somente uma vez por dia.
- Conteúdo. Alguns metadados no painel não estão disponíveis por meio das APIs e vice-versa.
- Velocidade. Consultas e gets de metadados são faturados da mesma maneira que consultas e gets do armazenamento de dados. As consultas de metadados que buscam informações sobre namespaces, tipos e propriedades geralmente são lentas para serem executadas. Como regra geral, uma consulta de metadados que retorna N entidades costuma levar mais ou menos o mesmo tempo que consultas N comuns, cada uma retornando uma única entidade. Além disso, as consultas de representação de propriedade, que têm somente propriedade sem chaves, são mais lentas do que as consultas de propriedades somente com chaves. Os resultados de metadados para metadados do grupo de entidades são um pouco mais rápidos do que uma entidade regular.
Consultas de metadados
Três tipos de entidades especiais são reservados para consultas de metadados:
Entidade | Descrição |
---|---|
__namespace__ |
Usada para localizar todos os namespaces usados nas entidades do aplicativo. |
__kind__ |
Usada para consultar um tipo específico. |
__property__ |
Usada para consultar por uma propriedade de um tipo. |
Esses tipos não entrarão em conflito com outros com os mesmos nomes que podem já existir no aplicativo. Ao consultar esses tipos especiais, é possível recuperar entidades que contenham os metadados desejados.
As entidades retornadas por consultas de metadados são geradas dinamicamente, com base no
estado atual do banco de dados. É possível criar objetos de entidades locais dos
tipos __namespace__
, __kind__
ou __property__
. No entanto, qualquer tentativa de armazená-los
no banco de dados falhará.
Consultas de namespace
Use uma consulta de namespace para localizar todos os namespaces usados nas entidades do aplicativo. Isso permite que você execute atividades, como funções administrativas, em vários namespaces.
As consultas de namespace retornam entidades do tipo especial __namespace__
, cujo nome
de chave é o nome de um namespace. Uma exceção é o namespace padrão
designado pela string vazia ""
: como a string vazia não é um nome de chave válido,
esse namespace é identificado pelo ID numérico 1
. As consultas desse
tipo são compatíveis apenas com a filtragem de intervalos na pseudopropriedade especial __key__
,
cujo valor é a chave da entidade. Os resultados podem ser classificados por
valor __key__
crescente (mas não decrescente). Como as entidades __namespace__
não têm propriedades,
as consultas apenas de chave e sem chave retornam as mesmas informações.
O exemplo a seguir retorna uma lista de namespaces de um aplicativo no intervalo
entre os valores atribuídos às variáveis startNamespace
e endNamespace
:
C#
Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte as Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API C# do Cloud Datastore.
Para autenticar no Cloud Datastore, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Go
Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte as Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API Go do Cloud Datastore.
Para autenticar no Cloud Datastore, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Java
Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte as Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API Java do Cloud Datastore.
Para autenticar no Cloud Datastore, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte as Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API Node.js do Cloud Datastore.
Para autenticar no Cloud Datastore, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
PHP
Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte as Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API PHP do Cloud Datastore.
Para autenticar no Cloud Datastore, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte as Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API Python do Cloud Datastore.
Para autenticar no Cloud Datastore, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Ruby
Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte as Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API Ruby do Cloud Datastore.
Para autenticar no Cloud Datastore, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
GQL
SELECT __key__ FROM __namespace__ WHERE __key__ >= KEY(__namespace__, 'namespace-a') AND __key__ < KEY(__namespace__, 'namespace-b')
Consultas de tipo
Consultas de tipo retornam entidades do tipo __kind__
, cujo nome de chave é o nome de
um tipo de entidade. As consultas desse tipo são implicitamente restritas ao namespace atual
e são compatíveis apenas com a filtragem para intervalos acima da
pseudopropriedade __key__
. Os resultados podem ser classificados por valor __key__
crescente
(mas não decrescente). Como as entidades __kind__
não têm propriedades, as consultas apenas
de chave e sem chave retornam as mesmas informações.
O exemplo a seguir imprime uma lista dos tipos usados em um aplicativo:
C#
Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte as Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API C# do Cloud Datastore.
Para autenticar no Cloud Datastore, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Go
Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte as Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API Go do Cloud Datastore.
Para autenticar no Cloud Datastore, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Java
Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte as Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API Java do Cloud Datastore.
Para autenticar no Cloud Datastore, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte as Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API Node.js do Cloud Datastore.
Para autenticar no Cloud Datastore, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
PHP
Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte as Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API PHP do Cloud Datastore.
Para autenticar no Cloud Datastore, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte as Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API Python do Cloud Datastore.
Para autenticar no Cloud Datastore, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Ruby
Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte as Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API Ruby do Cloud Datastore.
Para autenticar no Cloud Datastore, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
GQL
SELECT __key__ FROM __kind__
Consultas de propriedade
As consultas de propriedade retornam entidades do tipo __property__
, que indicam as propriedades
indexadas associadas a um tipo de entidade. Propriedades não indexadas não
estão incluídas. A entidade que representa a propriedade p do tipo k é criada da seguinte forma:
- A chave da entidade tem o tipo
__property__
e o nome de chave p. - A chave pai da entidade tem o tipo
__kind__
e o nome de chave k. - A propriedade de matriz
property_representation
da entidade contém todas as representações da propriedade.
Por exemplo, se seu banco de dados contiver exatamente duas entidades Task
com as propriedades name
e done
:
Key: 'Task:1'
name: 'Read some properties'
done: true
Key: 'Task:2'
name: 'Climb'
done: null
então as duas entidades retornadas por uma consulta __property__
serão:
Key: '__kind__:Task/__property__:name'
property_representation: [ 'STRING' ]
Key: '__kind__:Task/__property__:done'
property_representation: [ 'BOOLEAN', 'NULL' ]
As consultas de propriedade são implicitamente restritas ao namespace atual e são compatíveis
com a filtragem limitada a um
ancestral ou um intervalo acima da pseudopropriedade __key__
.
Uma consulta de propriedade somente com chaves é mais eficiente que uma consulta somente sem chaves, já que não é necessário coletar as representações da propriedade. O exemplo a seguir recupera os nomes de todos os tipos de entidade de um aplicativo e as propriedades associadas a cada um deles:
C#
Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte as Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API C# do Cloud Datastore.
Para autenticar no Cloud Datastore, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Go
Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte as Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API Go do Cloud Datastore.
Para autenticar no Cloud Datastore, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Java
Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte as Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API Java do Cloud Datastore.
Para autenticar no Cloud Datastore, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte as Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API Node.js do Cloud Datastore.
Para autenticar no Cloud Datastore, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
PHP
Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte as Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API PHP do Cloud Datastore.
Para autenticar no Cloud Datastore, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte as Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API Python do Cloud Datastore.
Para autenticar no Cloud Datastore, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Ruby
Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte as Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API Ruby do Cloud Datastore.
Para autenticar no Cloud Datastore, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
GQL
SELECT __key__ FROM __property__
Consultas de propriedade: representações de propriedades
As consultas de propriedades somente sem chaves, conhecidas como consultas de representação de propriedades,
retornam informações adicionais sobre os tipos de valor usados para cada propriedade. A
propriedade property_representation
na entidade que representa a propriedade p do
tipo k é uma matriz que contém todas as representações do valor de p em qualquer
entidade do tipo k.
Cada valor tem a seguinte representação (alguns tipos de valor compartilham representações):
Tipo de valor | Representação |
---|---|
Número inteiro | INT64 |
Número de ponto flutuante | DOUBLE |
Booleano | BOOLEAN |
String de texto | STRING |
String de bytes | STRING |
Data e hora | INT64 |
Chave do armazenamento de dados | REFERENCE |
Entidade incorporada | STRING |
Matriz | representação dos elementos da matriz |
Ponto geográfico | POINT |
Nulo | NULL |
No exemplo a seguir, são encontradas todas as representações de propriedades do tipo Task
,
usando uma consulta de propriedade de ancestral:
C#
Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte as Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API C# do Cloud Datastore.
Para autenticar no Cloud Datastore, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Go
Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte as Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API Go do Cloud Datastore.
Para autenticar no Cloud Datastore, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Java
Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte as Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API Java do Cloud Datastore.
Para autenticar no Cloud Datastore, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte as Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API Node.js do Cloud Datastore.
Para autenticar no Cloud Datastore, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
PHP
Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte as Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API PHP do Cloud Datastore.
Para autenticar no Cloud Datastore, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte as Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API Python do Cloud Datastore.
Para autenticar no Cloud Datastore, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Ruby
Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte as Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API Ruby do Cloud Datastore.
Para autenticar no Cloud Datastore, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
GQL
SELECT * FROM __property__ WHERE __key__ HAS ANCESTOR KEY(__kind__, 'Task')
Consultas de propriedade: filtragem
As consultas de propriedade são compatíveis com a filtragem de ancestral em uma
chave __kind__
ou __property__
, para limitar os resultados da consulta a um único tipo ou propriedade, como visto
na consulta de representação de propriedade acima.
As consultas de propriedade também podem ser filtradas com um intervalo acima da pseudopropriedade
__key__
, em que as chaves indicam entidades __kind__
ou __property__
. Os resultados podem ser classificados por valor __key__
crescente
(mas não decrescente). A filtragem é aplicada a pares de propriedades e tipo, classificados primeiro por tipo e
depois por propriedade. Por exemplo, suponha que você tenha entidades com essas
propriedades:
- tipo
Task
com as propriedadescreated
priority
tags
- tipo
TaskList
com as propriedadescreated
A seguinte consulta de propriedade apenas de chave:
C#
Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte as Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API C# do Cloud Datastore.
Para autenticar no Cloud Datastore, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Go
Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte as Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API Go do Cloud Datastore.
Para autenticar no Cloud Datastore, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Não aplicávelJava
Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte as Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API Java do Cloud Datastore.
Para autenticar no Cloud Datastore, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte as Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API Node.js do Cloud Datastore.
Para autenticar no Cloud Datastore, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Não aplicávelPHP
Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte as Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API PHP do Cloud Datastore.
Para autenticar no Cloud Datastore, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte as Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API Python do Cloud Datastore.
Para autenticar no Cloud Datastore, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Não aplicávelRuby
Para saber como instalar e usar a biblioteca de cliente do Cloud Datastore, consulte as Bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API Ruby do Cloud Datastore.
Para autenticar no Cloud Datastore, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
GQL
SELECT __key__ FROM __property__ WHERE __key__ >= KEY(__kind__, 'Task', __property__, 'priority')
coletará os seguintes pares de nomes de tipo/propriedade:
Task, priority
Task, tags
TaskList, created
Observe que os resultados incluem propriedades dos tipos Task
e TaskList
, mas
não a propriedade created
do tipo Task
, porque ela está fora
do intervalo especificado para a consulta.