Usar Cloud Firestore en modo Datastore

Firestore es una base de datos de documentos NoSQL creada a fin de proporcionar ajuste de escala automático, alto rendimiento y facilidad para el desarrollo de aplicaciones. Es la versión más reciente de Datastore y presenta varias mejoras con respecto a Datastore.

Debido a que Firestore en modo Datastore está optimizado para los casos de uso del servidor y para App Engine, recomendamos usar Firestore en modo Datastore para las bases de datos que las apps de App Engine usarán en gran medida. Firestore en modo nativo es más útil para casos de uso de notificaciones móviles y en tiempo real. Para obtener más información sobre los modos de Firestore, consulta Elige entre el modo nativo y el modo Datastore.

En este documento, se describe cómo usar la biblioteca cliente de Google Cloud para almacenar y recuperar datos en una base de datos en modo Datastore.

Requisitos previos y configuración

Sigue las instrucciones en “Hello, World!” para PHP en App Engine a fin de configurar tu entorno y proyecto, y comprender cómo se estructuran las apps de PHP en App Engine. Anota y guarda el ID del proyecto, ya que lo necesitarás para ejecutar la aplicación de muestra que se describe en este documento.

Clona el repositorio

Descarga (clona) la muestra:

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

Edita la configuración del proyecto y establece las dependencias

Instala las dependencias con Composer:

composer install

Código de la aplicación

La aplicación de muestra registra, recupera y muestra los IP de las visitantes.

Primero, la aplicación crea una instancia de cliente en modo Datastore:

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

Cada visita es una entidad con campos para la dirección IP del visitante y una marca de tiempo, y se guarda en modo Datastore mediante el comando 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);

Con el comando query se recuperan las diez visitas más recientes, en orden descendente:

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

Usa archivos index.yaml

La app de muestra realiza consultas sencillas. Las consultas más elaboradas del modo Datastore requieren uno o más índices, que debes especificar en un archivo index.yaml que tienes que subir junto con la app. Este archivo puede crearse de forma manual o generarse de forma automática mientras se prueba la app de forma local.

Pruebas locales

Si necesitas desarrollar y probar tu aplicación de forma local, puedes usar el emulador del modo Datastore.

Más información

Para obtener toda la información sobre el modo Datastore, incluidos los conceptos y las optimizaciones, consulta la documentación de Firestore en modo Datastore.