Como usar o Cloud Firestore no modo Datastore

O Firestore é um banco de dados de documentos NoSQL criado para fornecer escalonamento automático, alto desempenho e facilidade no desenvolvimento de aplicativos. O Firestore é a mais nova versão do Datastore e apresenta várias melhorias em relação a ele.

Como o Firestore no modo Datastore é otimizado para casos de uso do servidor e para o App Engine, recomendamos o uso do Firestore no modo Datastore para bancos de dados que serão usados principalmente por aplicativos do App Engine. O Firestore no modo nativo é mais útil para casos de uso de notificações móveis e em tempo real. Para mais informações sobre os modos do Firestore, consulte Como escolher entre o modo nativo e o modo Datastore.

Neste documento, descrevemos como usar a biblioteca de cliente do Google Cloud para armazenar e recuperar dados em um banco de dados no modo Datastore.

Pré-requisitos e configuração

Siga as instruções em "Hello, World!" para Ruby no App Engine para configurar o ambiente e o projeto, além de compreender como aplicativos Ruby são estruturados no App Engine. Anote e guarde o ID do projeto. Você precisará dele para executar o aplicativo de amostra descrito neste documento.

Clonar o repositório

Faça o download ou clone da amostra:

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

Editar a configuração do projeto e definir as dependências

Em Gemfile, inclua a biblioteca google-cloud, que tem as funções para o modo Datastore.

source "https://rubygems.org"

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

Código do aplicativo

O aplicativo de amostra registra, recupera e exibe IPs de visitantes. Você pode ver que uma entrada de registro é uma classe simples de dois campos que recebe o tipo visit e é salva no modo Dapastore usando o comando save. Em seguida, as 10 visitas mais recentes são recuperadas em ordem decrescente, usando o comando run do conjunto de dados.

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

Como usar arquivos index.yaml

O app de exemplo faz consultas simples. Consultas mais elaboradas do modo Datastore exigem um ou mais índices, que você precisa especificar em um arquivo index.yaml enviado com o aplicativo. Esse arquivo pode ser criado ou gerado automaticamente ao testar seu aplicativo localmente.

Teste local

Se precisar desenvolver e testar seu aplicativo localmente, é possível usar o emulador de modo Datastore.

Para saber mais

Para informações completas sobre o modo Datastore, incluindo otimizações e conceitos, veja a documentação do Cloud Firestore no modo Datastore.