Utiliser Cloud Firestore en mode Datastore

Conçue pour le scaling automatique et les hautes performances, Firestore est une base de données de documents NoSQL qui simplifie le développement d'applications. Il s'agit de la dernière version de Datastore, qui introduit plusieurs améliorations.

Étant donné que Cloud Firestore en mode Datastore est optimisé pour les cas d'utilisation des serveurs et pour App Engine, nous vous recommandons d'utiliser ce mode pour les bases de données qui sont principalement utilisées par les applications App Engine. Firestore en mode natif est particulièrement utile pour les cas d'utilisation de notifications mobiles et en temps réel. Pour en savoir plus sur les modes de Firestore, consultez la page Choisir entre le mode natif et le mode Datastore.

Ce document décrit comment utiliser la bibliothèque cliente Google Cloud pour stocker et récupérer des données dans une base de données en mode Datastore.

Prérequis et configuration

Suivez les instructions de la section "Hello, World!" pour PHP sur App Engine pour configurer votre environnement et votre projet, et pour comprendre la structure des applications PHP dans App Engine. Notez et enregistrez votre ID de projet. Il vous servira à exécuter l'exemple d'application décrit dans ce document.

Cloner le dépôt

Téléchargez (clonez) l'exemple suivant :

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

Modifier la configuration du projet et définir les dépendances

Installez les dépendances à l'aide de Composer :

composer install

Code de l'application

L'exemple d'application enregistre, récupère et affiche les adresses IP des visiteurs.

L'application instancie tout d'abord un client en mode Datastore :

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

Chaque visite est représentée par une entité comportant des champs pour l'adresse IP du visiteur et pour un horodatage. L'entité est enregistrée dans Cloud Datastore à l'aide de la commande 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);

Les dix visites les plus récentes sont extraites par ordre décroissant à l'aide de la commande query :

// 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']);
}

Utiliser des fichiers index.yaml

L'exemple d'application effectue des requêtes simples. Les requêtes Datastore plus élaborées nécessitent un ou plusieurs index, que vous devez spécifier dans un fichier index.yaml à importer avec l'application. Ce fichier peut être créé manuellement ou généré automatiquement lors du test en local de votre application.

Test local

Si vous devez développer et tester votre application en local, vous pouvez utiliser l'émulateur en mode Datastore.

Plus d'informations

Pour obtenir des informations complètes sur le mode Datastore, y compris sur les optimisations et les concepts, consultez la documentation sur Firestore en mode Datastore.