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.

Nous vous recommandons d'utiliser Firestore en mode Datastore pour les bases de données qui sont principalement utilisées par les applications App Engine. 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 Ruby sur App Engine afin de configurer votre environnement et votre projet, et pour comprendre la structure des applications Ruby 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/ruby-docs-samples
cd ruby-docs-samples/appengine/datastore

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

Dans le fichier Gemfile, incluez la bibliothèque google-cloud, qui dispose des fonctions pour le mode Datastore.

source "https://rubygems.org"

gem "google-cloud-datastore"
gem "sinatra"

Code d'application

L'exemple d'application enregistre, récupère et affiche les adresses IP des visiteurs. Une entrée de journal est une classe simple à deux champs à laquelle est attribué le type visit et qui est enregistrée dans le mode Datastore à l'aide de la commande save. Ensuite, les dix visites les plus récentes sont extraites par ordre décroissant à l'aide de la commande Dataset run.

require "digest/sha2"
require "sinatra"
require "google/cloud/datastore"

get "/" do
  datastore = Google::Cloud::Datastore.new

  # Save visit in Datastore
  visit = datastore.entity "Visit" do |v|
    v["user_ip"]   = Digest::SHA256.hexdigest request.ip
    v["timestamp"] = Time.now
  end
  datastore.save visit

  # Query the last 10 visits from the Datastore
  query     = datastore.query("Visit").order("timestamp", :desc).limit(10)
  visits    = datastore.run query

  response.write "Last 10 visits:\n"

  visits.each do |visit|
    response.write "Time: #{visit['timestamp']} Addr: #{visit['user_ip']}\n"
  end

  content_type "text/plain"
  status 200
end

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.

Pour en savoir plus

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