Introducción a Spanner en Ruby


Objetivos

Este tutorial lo guiará a través de los siguientes pasos utilizando la biblioteca cliente Spanner para Ruby:

  • Cree una instancia y una base de datos de Spanner.
  • Escribir, leer y ejecutar consultas SQL sobre datos de la base de datos.
  • Actualizar el esquema de la base de datos.
  • Actualizar datos mediante una transacción de lectura y escritura.
  • Agregar un índice secundario a la base de datos.
  • Utilice el índice para leer y ejecutar consultas SQL sobre los datos.
  • Recupere datos mediante una transacción de solo lectura.

Costos

Este tutorial utiliza Spanner, que es un componente facturable deGoogle CloudPara obtener información sobre el costo de usar Spanner, consulte Precios .

Antes de empezar

Complete los pasos descritos en Configuración , que cubren la creación y configuración de un valor predeterminado. Google Cloud proyecto, habilitar la facturación, habilitar la API de Cloud Spanner y configurar OAuth 2.0 para obtener credenciales de autenticación para usar la API de Cloud Spanner.

En particular, asegúrese de ejecutar gcloud auth application-default login para configurar su entorno de desarrollo local con credenciales de autenticación.

Utilice un objeto Snapshot para ejecutar transacciones de solo lectura. Utilice el método snapshot de la clase Client para obtener un objeto Snapshot .

A continuación se muestra cómo ejecutar una consulta y realizar una lectura en la misma transacción de solo lectura:

# project_id  = "Your Google Cloud project ID"
# instance_id = "Your Spanner instance ID"
# database_id = "Your Spanner database ID"

require "google/cloud/spanner"

spanner = Google::Cloud::Spanner.new project: project_id
client  = spanner.client instance_id, database_id

client.snapshot do |snapshot|
  snapshot.execute("SELECT SingerId, AlbumId, AlbumTitle FROM Albums").rows.each do |row|
    puts "#{row[:AlbumId]} #{row[:AlbumTitle]} #{row[:SingerId]}"
  end

  # Even if changes occur in-between the reads, the transaction ensures that
  # both return the same data.
  snapshot.read("Albums", [:AlbumId, :AlbumTitle, :SingerId]).rows.each do |row|
    puts "#{row[:AlbumId]} #{row[:AlbumTitle]} #{row[:SingerId]}"
  end
end

Ejecute la muestra utilizando el argumento read_only_transaction .

bundle exec ruby spanner_samples.rb read_only_transaction test-instance example-db

Debería ver un resultado similar a este:

2 Forever Hold Your Peace 2
2 Go, Go, Go 1
1 Green 2
3 Terrified 2
1 Total Junk 1
1 Total Junk 1
2 Go, Go, Go 1
1 Green 2
2 Forever Hold Your Peace 2
3 Terrified 2

Limpieza

Para evitar incurrir en cargos adicionales en su cuenta de facturación de Cloud por los recursos utilizados en este tutorial, elimine la base de datos y borre la instancia que creó.

Eliminar la base de datos

Si elimina una instancia, todas sus bases de datos se eliminan automáticamente. Este paso muestra cómo eliminar una base de datos sin eliminar una instancia (aunque se le cobrarán cargos por la instancia).

En la línea de comandos

gcloud spanner databases delete example-db --instance=test-instance

Usando el Google Cloud consola

  1. Vaya a la página Instancias de Spanner en el Google Cloud consola.

    Ir a la página de Instancias

  2. Haga clic en la instancia.

  3. Haga clic en la base de datos que desea eliminar.

  4. En la página de detalles de la base de datos , haga clic en Eliminar .

  5. Confirme que desea eliminar la base de datos y haga clic en Eliminar .

Eliminar la instancia

Al eliminar una instancia se eliminan automáticamente todas las bases de datos creadas en esa instancia.

En la línea de comandos

gcloud spanner instances delete test-instance

Usando el Google Cloud consola

  1. Vaya a la página Instancias de Spanner en el Google Cloud consola.

    Ir a la página de Instancias

  2. Haga clic en su instancia.

  3. Haga clic en Eliminar .

  4. Confirme que desea eliminar la instancia y haga clic en Eliminar .

¿Qué sigue?