Cloud Firestore im Datastore-Modus verwenden

Firestore ist eine NoSQL-Dokumentdatenbank, die auf Autoscaling, hohe Leistung und einfache Anwendungsentwicklung ausgelegt ist. Es ist die neueste Version von Datastore und bietet einige Verbesserungen.

Da Firestore im Datastore-Modus für Serveranwendungsfälle und für App Engine optimiert ist, empfehlen wir die Verwendung von Firestore im Datastore-Modus für Datenbanken, die hauptsächlich von App Engine-Anwendungen verwendet werden. Firestore im nativen Modus ist besonders nützlich für mobile und Echtzeit-Benachrichtigungs-Anwendungsfälle. Weitere Informationen zu Firestore-Modi finden Sie unter Zwischen nativem Modus und Datastore-Modus wechseln.

In diesem Dokument wird beschrieben, wie Sie mit der Google Cloud-Clientbibliothek Daten in einer Datenbank im Datastore-Modus speichern und abrufen können.

Voraussetzungen und Einrichtung

Folgen Sie der Anleitung unter „Hello, World!“ für PHP in App Engine, um eine Umgebung und ein Projekt einzurichten. Darin erfahren Sie auch mehr über die Strukturierung von PHP-Anwendungen in App Engine. Notieren Sie sich Ihre Projekt-ID und bewahren Sie sie auf. Sie brauchen diese ID, um die in diesem Dokument beschriebene Beispielanwendung auszuführen.

Repository klonen

Laden Sie das Beispiel herunter bzw. klonen Sie es:

git clone https://github.com/GoogleCloudPlatform/php-docs-samples
cd php-docs-samples/appengine/flexible/datastore

Projektkonfiguration bearbeiten und Abhängigkeiten festlegen

Installieren Sie mithilfe von Composer Abhängigkeiten:

composer install

Anwendungscode

Mit der Beispielanwendung werden Besucher-IPs geloggt, abgerufen und angezeigt.

Zuerst wird ein Client im Datastore-Modus in der Anwendung instanziiert:

$datastore = new DatastoreClient([
    'projectId' => $projectId
]);

Jeder Besuch bildet eine Entität mit Feldern für die IP-Adresse des Besuchers und einen Zeitstempel. Die Speicherung in Cloud Datastore erfolgt mit dem Befehl insert:

// Create an entity to insert into datastore.
$key = $datastore->key('visit');
$entity = $datastore->entity($key, [
    'user_ip' => $user_ip,
    'timestamp' => new DateTime(),
]);
$datastore->insert($entity);

Die zehn zuletzt erfolgten Besuche werden mit dem Befehl query in absteigender Reihenfolge abgerufen:

// Query recent visits.
$query = $datastore->query()
    ->kind('visit')
    ->order('timestamp', 'DESCENDING')
    ->limit(10);
$results = $datastore->runQuery($query);
$visits = [];
foreach ($results as $entity) {
    $visits[] = sprintf('Time: %s Addr: %s',
        $entity['timestamp']->format('Y-m-d H:i:s'),
        $entity['user_ip']);
}

index.yaml-Dateien verwenden

Mit der Beispielanwendung werden einfache Abfragen durchgeführt. Für komplexere Abfragen im Datastore-Modus sind ein oder mehrere Indexe erforderlich. Diese müssen Sie in der Datei index.yaml festlegen, die Sie zusammen mit der Anwendung hochladen. Diese Datei kann manuell erstellt oder automatisch generiert werden, wenn Sie Ihre Anwendung lokal testen.

Lokales Testen

Wenn Sie Ihre Anwendung lokal entwickeln und testen müssen, können Sie den Cloud Datastore-Emulator verwenden.

Weitere Informationen

Umfassende Informationen zum Datastore-Modus, einschließlich Optimierungen und Konzepte, finden Sie in der Dokumentation zu Firestore im Datastore-Modus.