Cloud Firestore im Datastore-Modus bietet Zugriff auf Metadaten mit Informationen über die Entitätengruppen, Namespaces, Entitätsarten und Attribute, die Ihre Anwendung verwendet, sowie die Attributdarstellungen für jedes Attribut. Sie können Metadaten verwenden, um beispielsweise einen benutzerdefinierten Datastore-Viewer für Ihre Anwendung oder für Back-End-Verwaltungsfunktionen zu erstellen.
Das Cloud Datastore-Dashboard in der GCP Console stellt auch einige Metadaten zu Ihrer Anwendung bereit. Die hier angezeigten Daten unterscheiden sich jedoch in einigen wichtigen Bereichen von den Daten, die von diesen Funktionen zurückgegeben werden.
- Aktualität. Wenn Metadaten mit der API gelesen werden, werden aktuelle Daten abgerufen. Daten im Dashboard werden nur einmal täglich aktualisiert.
- Inhalt. Einige Metadaten im Dashboard sind über die APIs nicht verfügbar und umgekehrt.
- Geschwindigkeit. Metadatenabrufe und -abfragen werden wie Datenspeicherabrufe und -abfragen abgerechnet. Die Ausführung von Metadatenabfragen, die Informationen zu Namespaces, Arten und Properties abrufen, ist im Allgemeinen langsam. Als Daumenregel gehen Sie davon aus, dass eine Metadatenabfrage, die n Entitäten zurückgibt, etwa genauso lange dauert wie n normale Abfragen, die jeweils eine einzelne Entität zurückgeben. Außerdem sind Attribut-Darstellungsabfragen (nicht ausschließlich schlüsselbasierte Attributabfragen) langsamer als ausschließlich schlüsselbasierte Attributabfragen. Metadatenabfragen von Entitätsgruppenmetadaten sind etwas schneller als Abrufe einer regulären Entität.
Metadatenabfragen
Drei besondere Entitätsarten speziell für Metadatenabfragen:
| Entität | Beschreibung |
|---|---|
__namespace__ |
Wird zum Suchen aller Namespaces in Ihren Anwendungsentitäten verwendet. |
__kind__ |
Wird zur Abfrage einer bestimmten Art verwendet. |
__property__ |
Wird zur Abfrage nach einer Property einer Art verwendet. |
Diese Arten stehen nicht in Konflikt mit anderen Arten desselben Namens, die möglicherweise bereits in Ihrer Anwendung vorhanden sind. Durch Abfrage dieser besonderen Arten können Sie Entitäten abrufen, die die gewünschten Metadaten enthalten.
Die von Metadatenabfragen zurückgegebenen Entitäten werden basierend auf dem aktuellen Status Ihrer Datenbank dynamisch generiert. Sie können lokale Entitätsobjekte der Arten __namespace__, __kind__ oder __property__ erstellen, aber nicht in Datastore speichern.
Namespace-Abfragen
Mit einer Namespace-Abfrage können Sie alle Namespaces suchen, die in den Entitäten der Anwendung verwendet werden. Auf diese Weise können Sie Aktivitäten, wie administrative Funktionen, über mehrere Namespaces hinweg ausführen.
Namespace-Abfragen geben Entitäten der besonderen Art __namespace__ zurück, deren Schlüsselname der Name eines Namespace ist. (Eine Ausnahme ist der Standard-Namespace, der mit dem leeren String "" angegeben wird. Weil der leere String kein gültiger Schlüsselname ist, wird dieser Namespace stattdessen mit der numerischen ID 1 eingegeben.) Abfragen dieses Typs unterstützen die Filterung nur für Bereiche über der besonderen Pseudo-Property __key__, deren Wert der Schlüssel der Entität ist. Die Ergebnisse können nach aufsteigendem (jedoch nicht nach absteigendem) __key__-Wert sortiert werden. Weil __namespace__-Entitäten keine Properties haben, geben sowohl ausschließlich schlüsselbasierte Abfragen als auch nicht ausschließlich schlüsselbasierte Abfragen dieselben Informationen zurück.
Das folgende Beispiel gibt eine Liste der Namespaces einer Anwendung im Bereich zwischen den Werten zurück, die den Variablen startNamespace und endNamespace zugewiesen sind:
C#
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie unter Cloud Datastore-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore C# API (nur auf Englisch verfügbar).
Go
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie unter Cloud Datastore-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Go API (nur auf Englisch verfügbar).
Java
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie unter Cloud Datastore-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Java API (nur auf Englisch verfügbar).
Node.js
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie unter Cloud Datastore-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Node.js API (nur auf Englisch verfügbar).
PHP
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie unter Cloud Datastore-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore PHP API (nur auf Englisch verfügbar).
Python
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie unter Cloud Datastore-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Python API (nur auf Englisch verfügbar).
Ruby
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie unter Cloud Datastore-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Ruby API (nur auf Englisch verfügbar).
GQL
SELECT __key__ FROM __namespace__ WHERE __key__ >= KEY(__namespace__, 'namespace-a') AND __key__ < KEY(__namespace__, 'namespace-b')
Artabfragen
Artabfragen geben Entitäten der Art __kind__ zurück, deren Schlüsselname der Name einer Entitätsart ist. Abfragen dieses Typs sind implizit auf den aktuellen Namespace begrenzt und unterstützen die Filterung nur für Bereiche über der Pseudo-Property __key__. Die Ergebnisse können nach aufsteigendem (jedoch nicht nach absteigendem) __key__-Wert sortiert werden. Weil __kind__-Entitäten keine Properties haben, geben sowohl ausschließlich schlüsselbasierte als auch nicht ausschließlich schlüsselbasierte Abfragen dieselben Informationen zurück.
Das folgende Beispiel druckt eine Liste der Arten aus, die in einer Anwendung verwendet werden:
C#
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie unter Cloud Datastore-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore C# API (nur auf Englisch verfügbar).
Go
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie unter Cloud Datastore-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Go API (nur auf Englisch verfügbar).
Java
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie unter Cloud Datastore-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Java API (nur auf Englisch verfügbar).
Node.js
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie unter Cloud Datastore-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Node.js API (nur auf Englisch verfügbar).
PHP
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie unter Cloud Datastore-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore PHP API (nur auf Englisch verfügbar).
Python
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie unter Cloud Datastore-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Python API (nur auf Englisch verfügbar).
Ruby
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie unter Cloud Datastore-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Ruby API (nur auf Englisch verfügbar).
GQL
SELECT __key__ FROM __kind__
Property-Abfragen
Attributabfragen geben Entitäten der Art __property__ zurück. Diese kennzeichnen die indexierten Attribute, die mit einer Entitätsart verknüpft sind. Nicht indexierte Properties werden nicht einbezogen. Die Entität zur Darstellung von Property p der Art k wird so erstellt:
- Der Entitätsschlüssel hat die Art
__property__und den Schlüsselnamen p. - Der übergeordnete Schlüssel der Entität hat die Art
__kind__und den Schlüsselnamen k. - Das Array-Attribut
property_representationder Entität enthält alle Darstellungen des Attributs.
Beispiel: Wenn Ihre Datenbank genau zwei Task-Entitäten mit den Attributen name und done enthält:
Key: 'Task:1'
name: 'Read some properties'
done: true
Key: 'Task:2'
name: 'Climb'
done: null
werden die beiden folgenden Entitäten von einer __property__-Abfrage zurückgegeben:
Key: '__kind__:Task/__property__:name'
property_representation: [ 'STRING' ]
Key: '__kind__:Task/__property__:done'
property_representation: [ 'BOOLEAN', 'NULL' ]
Attributabfragen sind implizit auf den aktuellen Namespace begrenzt und unterstützen eine begrenzte Filterung mit einem Ancestor oder einem Bereich über dem Pseudoattribut __key__.
Eine ausschließlich schlüsselbasierte Property-Abfrage ist effizienter als eine nicht ausschließlich schlüsselbasierte Abfrage, weil sie die Darstellungen der Property nicht erfassen muss. Das folgende Beispiel ruft die Namen aller Entitätsarten einer Anwendung und die mit jeder Art verknüpften Properties ab:
C#
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie unter Cloud Datastore-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore C# API (nur auf Englisch verfügbar).
Go
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie unter Cloud Datastore-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Go API (nur auf Englisch verfügbar).
Java
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie unter Cloud Datastore-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Java API (nur auf Englisch verfügbar).
Node.js
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie unter Cloud Datastore-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Node.js API (nur auf Englisch verfügbar).
PHP
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie unter Cloud Datastore-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore PHP API (nur auf Englisch verfügbar).
Python
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie unter Cloud Datastore-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Python API (nur auf Englisch verfügbar).
Ruby
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie unter Cloud Datastore-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Ruby API (nur auf Englisch verfügbar).
GQL
SELECT __key__ FROM __property__
Property-Abfragen: Property-Darstellungen
Nicht ausschließlich schlüsselbasierte Property-Abfragen, die als Property-Darstellungsabfragen bezeichnet werden, geben zusätzliche Informationen zu den Werttypen zurück, die für jede Property verwendet werden. Das Attribut property_representation in der Entität, die das Attribut p der Art k darstellt, ist ein Array, das alle Darstellungen des Werts von p in einer Entität der Art k enthält.
Jeder Wert hat die folgende Darstellung (beachten Sie, dass für einige Werttypen dieselbe Darstellung verwendet wird):
| Werttyp | Darstellung |
|---|---|
| Ganzzahl | INT64 |
| Gleitkommazahl | DOUBLE |
| Boolescher Wert | BOOLEAN |
| Textstring | STRING |
| Bytestring | STRING |
| Datum und Uhrzeit | INT64 |
| Datenspeicherschlüssel | REFERENCE |
| Eingebettete Entität | STRING |
| Array | Darstellung der Elemente des Arrays |
| Geografischer Punkt | POINT |
| Null | NULL |
Im folgenden Beispiel wird mithilfe einer Ancestor-Attributabfrage nach allen Darstellungen von Attributen der Art Task gesucht:
C#
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie unter Cloud Datastore-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore C# API (nur auf Englisch verfügbar).
Go
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie unter Cloud Datastore-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Go API (nur auf Englisch verfügbar).
Java
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie unter Cloud Datastore-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Java API (nur auf Englisch verfügbar).
Node.js
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie unter Cloud Datastore-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Node.js API (nur auf Englisch verfügbar).
PHP
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie unter Cloud Datastore-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore PHP API (nur auf Englisch verfügbar).
Python
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie unter Cloud Datastore-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Python API (nur auf Englisch verfügbar).
Ruby
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie unter Cloud Datastore-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Ruby API (nur auf Englisch verfügbar).
GQL
SELECT * FROM __property__ WHERE __key__ HAS ANCESTOR KEY(__kind__, 'Task')
Property-Abfragen: Filterung
Property-Abfragen unterstützen Ancestor-Filterung auf einem __kind__- oder __property__-Schlüssel, um die Abfrageergebnisse auf eine einzelne Art oder eine einzelne Property zu begrenzen, wie in der obigen Property-Darstellungsabfrage dargestellt.
Property-Abfragen können auch mit einem Bereich über der Pseudo-Property __key__ gefiltert werden, wobei die Schlüssel __kind__- oder __property__-Entitäten kennzeichnen. Die Ergebnisse können nach aufsteigendem (jedoch nicht nach absteigendem) __key__-Wert sortiert werden. Die Filterung wird auf Art/Property-Paare angewendet, die zuerst nach Art und dann nach Property sortiert sind. Beispiel: Angenommen, es sind Entitäten mit folgenden Properties vorhanden:
- Art
Taskmit Propertiescreatedprioritytags
- Art
TaskListmit Propertiescreated
Die folgende ausschließlich schlüsselbasierte Property-Abfrage:
C#
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie unter Cloud Datastore-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore C# API (nur auf Englisch verfügbar).
Go
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie unter Cloud Datastore-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Go API.
Nicht zutreffendJava
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie unter Cloud Datastore-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Java API (nur auf Englisch verfügbar).
Node.js
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie unter Cloud Datastore-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Node.js API.
Nicht zutreffendPHP
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie unter Cloud Datastore-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore PHP API (nur auf Englisch verfügbar).
Python
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie unter Cloud Datastore-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Python API.
Nicht zutreffendRuby
Informationen zum Installieren und Verwenden der Clientbibliothek für Cloud Datastore finden Sie unter Cloud Datastore-Clientbibliotheken. Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Datastore Ruby API (nur auf Englisch verfügbar).
GQL
SELECT __key__ FROM __property__ WHERE __key__ >= KEY(__kind__, 'Task', __property__, 'priority')
erfasst die folgenden Paare von Art/Property-Namen:
Task, priority
Task, tags
TaskList, created
Beachten Sie, dass die Ergebnisse Attribute der Arten Task und TaskList einschließen, das Attribut created der Art Task aber nicht enthalten, weil es außerhalb des für die Abfrage angegebenen Bereichs liegt.