O Cloud Firestore no modo Datastore fornece acesso a metadados que incluem 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 Cloud Datastore no console do GCP também fornece alguns metadados sobre o aplicativo, mas os dados exibidos nele diferem em alguns aspectos importantes dos retornados por essas funções.
- Atualizações. 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 resultados de metadados são faturados da mesma maneira que consultas e resultados 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 retorne N entidades precisa levar mais ou menos o mesmo tempo que N consultas normais que retornem 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. Ainda que seja possível criar objetos de entidade locais dos tipos __namespace__, __kind__ ou __property__, qualquer tentativa de armazená-los no banco de dados falhará.
Consultas de namespace
Você pode usar 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 da 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álida, o namespace usa o código numérico 1 como chave.) Consultas desse tipo são compatíveis somente com filtragem de intervalos acima da pseudopropriedade __key__, cujo valor é a chave da entidade. Os resultados podem ser classificados pelo valor crescente (mas não decrescente) __key__ . Como as entidades __namespace__ não têm propriedades, tanto as consultas somente com chaves como as somente sem chaves 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 aprender a instalar e usar a biblioteca de cliente para o Cloud Datastore, consulte as bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para C#.
Go
Para aprender a instalar e usar a biblioteca de cliente para o Cloud Datastore, consulte as bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Go.
Java
Para aprender a instalar e usar a biblioteca de cliente para o Cloud Datastore, consulte as bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Java.
Node.js
Para aprender a instalar e usar a biblioteca de cliente para o Cloud Datastore, consulte as bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Node.js.
PHP
Para aprender a instalar e usar a biblioteca de cliente para o Cloud Datastore, consulte as bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para PHP.
Python
Para aprender a instalar e usar a biblioteca de cliente para o Cloud Datastore, consulte as bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Python.
Ruby
Para aprender a instalar e usar a biblioteca de cliente para o Cloud Datastore, consulte as bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Ruby.
GQL
SELECT __key__ FROM __namespace__ WHERE __key__ >= KEY(__namespace__, 'namespace-a') AND __key__ < KEY(__namespace__, 'namespace-b')
Consultas de tipo
As consultas de tipo retornam entidades do tipo __kind__, em que o nome das respectivas chaves é um tipo de entidade. As consultas desse tipo estão implicitamente restritas ao namespace atual e são compatíveis somente com filtragem de intervalos acima da pseudopropriedade __key__. Os resultados podem ser classificados pelo valor crescente (mas não decrescente) __key__ . Como as entidades __kind__ não têm propriedades, tanto as consultas somente com chaves como as somente sem chaves retornam as mesmas informações.
O exemplo a seguir imprime uma lista dos tipos usados em um aplicativo:
C#
Para aprender a instalar e usar a biblioteca de cliente para o Cloud Datastore, consulte as bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para C#.
Go
Para aprender a instalar e usar a biblioteca de cliente para o Cloud Datastore, consulte as bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Go.
Java
Para aprender a instalar e usar a biblioteca de cliente para o Cloud Datastore, consulte as bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Java.
Node.js
Para aprender a instalar e usar a biblioteca de cliente para o Cloud Datastore, consulte as bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Node.js.
PHP
Para aprender a instalar e usar a biblioteca de cliente para o Cloud Datastore, consulte as bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para PHP.
Python
Para aprender a instalar e usar a biblioteca de cliente para o Cloud Datastore, consulte as bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Python.
Ruby
Para aprender a instalar e usar a biblioteca de cliente para o Cloud Datastore, consulte as bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Ruby.
GQL
SELECT __key__ FROM __kind__
Consultas de propriedade
As consultas de propriedade retornam entidades do tipo __property__, que denotam 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 é construída 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_representationda entidade contém todas as representações da propriedade.
Por exemplo, caso seu banco de dados contenha 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 de __property__ serão:
Key: '__kind__:Task/__property__:name'
property_representation: [ 'STRING' ]
Key: '__kind__:Task/__property__:done'
property_representation: [ 'BOOLEAN', 'NULL' ]
As consultas de propriedade estã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 aprender a instalar e usar a biblioteca de cliente para o Cloud Datastore, consulte as bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para C#.
Go
Para aprender a instalar e usar a biblioteca de cliente para o Cloud Datastore, consulte as bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Go.
Java
Para aprender a instalar e usar a biblioteca de cliente para o Cloud Datastore, consulte as bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Java.
Node.js
Para aprender a instalar e usar a biblioteca de cliente para o Cloud Datastore, consulte as bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Node.js.
PHP
Para aprender a instalar e usar a biblioteca de cliente para o Cloud Datastore, consulte as bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para PHP.
Python
Para aprender a instalar e usar a biblioteca de cliente para o Cloud Datastore, consulte as bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Python.
Ruby
Para aprender a instalar e usar a biblioteca de cliente para o Cloud Datastore, consulte as bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Ruby.
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 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 |
O exemplo a seguir encontra todas as representações de propriedades do tipo Task que usam uma consulta de propriedade ancestral:
C#
Para aprender a instalar e usar a biblioteca de cliente para o Cloud Datastore, consulte as bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para C#.
Go
Para aprender a instalar e usar a biblioteca de cliente para o Cloud Datastore, consulte as bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Go.
Java
Para aprender a instalar e usar a biblioteca de cliente para o Cloud Datastore, consulte as bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Java.
Node.js
Para aprender a instalar e usar a biblioteca de cliente para o Cloud Datastore, consulte as bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Node.js.
PHP
Para aprender a instalar e usar a biblioteca de cliente para o Cloud Datastore, consulte as bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para PHP.
Python
Para aprender a instalar e usar a biblioteca de cliente para o Cloud Datastore, consulte as bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Python.
Ruby
Para aprender a instalar e usar a biblioteca de cliente para o Cloud Datastore, consulte as bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Ruby.
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 ancestrais em uma chave __kind__ ou __property__ para limitar os resultados a um único tipo ou propriedade, como visto na consulta de representação de propriedade acima.
As consultas de propriedades também podem ser filtradas com um intervalo acima da pseudopropriedade __key__, em que as chaves denotam entidades __kind__ ou __property__. Os resultados podem ser classificados pelo valor crescente (mas não decrescente) __key__ . 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 propriedadescreatedprioritytags
- tipo
TaskList, com as propriedadescreated
A seguinte consulta de propriedade somente com chaves:
C#
Para aprender a instalar e usar a biblioteca de cliente para o Cloud Datastore, consulte as bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para C#.
Go
Para aprender a instalar e usar a biblioteca de cliente para o Cloud Datastore, consulte as bibliotecas de cliente do Cloud Datastore. Para saber mais informações, consulte a documentação de referência da API do Cloud Datastore para Go.
Não aplicávelJava
Para aprender a instalar e usar a biblioteca de cliente para o Cloud Datastore, consulte as bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Java.
Node.js
Para aprender a instalar e usar a biblioteca de cliente para o Cloud Datastore, consulte as bibliotecas de cliente do Cloud Datastore. Para saber mais informações, consulte a documentação de referência da API do Cloud Datastore para Node.js.
Não aplicávelPHP
Para aprender a instalar e usar a biblioteca de cliente para o Cloud Datastore, consulte as bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para PHP.
Python
Para aprender a instalar e usar a biblioteca de cliente para o Cloud Datastore, consulte as bibliotecas de cliente do Cloud Datastore. Para saber mais informações, consulte a documentação de referência da API do Cloud Datastore para Python.
Não aplicávelRuby
Para aprender a instalar e usar a biblioteca de cliente para o Cloud Datastore, consulte as bibliotecas de cliente do Cloud Datastore. Para mais informações, consulte a documentação de referência da API do Cloud Datastore para Ruby.
GQL
SELECT __key__ FROM __property__ WHERE __key__ >= KEY(__kind__, 'Task', __property__, 'priority')
coletará os seguintes pares de nomes de tipo e propriedade:
Task, priority
Task, tags
TaskList, created
Os resultados incluem as propriedades dos tipos Task e TaskList, mas não incluem a propriedade created, do tipo Task, porque ela está fora do intervalo especificado para a consulta.