Tujuan
Tutorial ini akan memandu Anda melalui langkah-langkah berikut menggunakan gcloud CLI:
- Membuat instance, database, dan skema Spanner
- Menulis data ke database dan menjalankan kueri SQL pada data tersebut
- Membersihkan dengan menghapus database dan instance
Prosedur di halaman ini berlaku untuk database dialek GoogleSQL dan database dialek PostgreSQL.
Untuk referensi gcloud
Spanner yang lengkap, lihat
gcloud.
Harga
Tutorial ini menggunakan Spanner, yang merupakan komponenGoogle Cloudyang dapat ditagih. Untuk mengetahui informasi tentang biaya penggunaan Spanner, lihat Harga.
Sebelum memulai
Selesaikan langkah-langkah yang dijelaskan dalam Menginstal gcloud CLI dan menyiapkan Cloud Spanner API, yang mencakup pembuatan dan penetapan project default, mengaktifkan penagihan, mengaktifkan Cloud Spanner API, dan menyiapkan OAuth 2.0 untuk mendapatkan kredensial autentikasi guna menggunakan Cloud Spanner API. Google Cloud
Khususnya, pastikan Anda menjalankan gcloud auth application-default
login
untuk menyiapkan
lingkungan pengembangan lokal dengan kredensial autentikasi.
Menetapkan project default
Jika Anda belum melakukannya, tetapkan ID project Google Cloud sebagai project default untuk Google Cloud CLI:
gcloud config set project PROJECT_ID
Jika Anda tidak menetapkan project default, Anda harus meneruskan --project
PROJECT_ID
ke setiap perintah di bawah sebagai argumen pertama ke
gcloud
. Contoh:
gcloud --project=PROJECT_ID spanner instance-configs list
Instance
Saat pertama kali menggunakan Spanner, Anda harus membuat instance, yaitu alokasi resource yang digunakan oleh database Spanner. Saat membuat instance, Anda memilih tempat penyimpanan data dan seberapa besar kapasitas komputasi yang dimiliki instance.
Instance dan konfigurasi instance
Untuk membuat instance, Anda harus memilih konfigurasi instance, yang seperti cetak biru untuk instance Anda yang menentukan penempatan geografis dan replikasi data Spanner Anda.
Mencantumkan konfigurasi instance
Saat membuat instance, Anda menentukan konfigurasi instance, yang menentukan penempatan geografis dan replikasi database Anda di instance tersebut. Anda dapat memilih konfigurasi regional, yang menyimpan data di satu region, dual-region, yang menyimpan data di dua region di negara yang sama, atau konfigurasi multi-region, yang mendistribusikan data di beberapa region. Untuk mengetahui informasi selengkapnya, lihat Ringkasan instance.
Untuk melihat kumpulan konfigurasi instance yang tersedia untuk project Anda:
gcloud spanner instance-configs list
Anda akan melihat daftar konfigurasi regional, dual-region, dan multi-region.
Membuat instance
Untuk membuat instance bernama test-instance
dengan nama tampilan My Instance
menggunakan konfigurasi instance regional regional-us-central1
dengan 1 node:
gcloud spanner instances create test-instance --config=regional-us-central1 \ --description="My Instance" --nodes=1
Pada perintah di atas, nama instance ditetapkan ke test-instance
dan
--description
menetapkan nama tampilan instance. Kedua nilai ini
harus unik dalam project Google Cloud Platform.
Menetapkan instance default
Anda dapat menetapkan instance default yang digunakan Spanner saat Anda belum menentukan instance dalam perintah. Untuk menyetel instance default:
gcloud config set spanner/instance test-instance
Buat database
Buat database bernama example-db
. Dialek database default adalah GoogleSQL.
GoogleSQL
gcloud spanner databases create example-db
PostgreSQL
gcloud spanner databases create example-db --database-dialect=POSTGRESQL
Memperbarui skema
Gunakan Data Definition Language (DDL) Spanner untuk membuat, mengubah, atau menghapus tabel, serta membuat atau menghapus indeks.
Mari kita buat dua tabel:
GoogleSQL
gcloud spanner databases ddl update example-db \ --ddl='CREATE TABLE Singers ( SingerId INT64 NOT NULL, FirstName STRING(1024), LastName STRING(1024), SingerInfo BYTES(MAX) ) PRIMARY KEY (SingerId)' gcloud spanner databases ddl update example-db \ --ddl='CREATE TABLE Albums ( SingerId INT64 NOT NULL, AlbumId INT64 NOT NULL, AlbumTitle STRING(MAX)) PRIMARY KEY (SingerId, AlbumId), INTERLEAVE IN PARENT Singers ON DELETE CASCADE'
PostgreSQL
gcloud spanner databases ddl update example-db \ --ddl='CREATE TABLE Singers ( SingerId bigint NOT NULL, FirstName varchar(1024), LastName varchar(1024), SingerInfo bytea, PRIMARY KEY (SingerId) )' gcloud spanner databases ddl update example-db \ --ddl='CREATE TABLE Albums ( SingerId bigint NOT NULL, AlbumId bigint NOT NULL, AlbumTitle varchar, PRIMARY KEY (SingerId, AlbumId) ) INTERLEAVE IN PARENT Singers ON DELETE CASCADE'
Untuk memeriksa progres operasi, gunakan
gcloud spanner operations describe
.
Perintah ini memerlukan ID operasi.
Dapatkan ID operasi:
gcloud spanner operations list --instance="test-instance" \ --database=DATABASE-NAME --type=DATABASE_UPDATE_DDL
Ganti DATABASE-NAME dengan nama database.
Jalankan gcloud spanner operations describe
:
gcloud spanner operations describe \ --instance="test-instance" \ --database="example-db" \ projects/PROJECT-NAME/instances/test-instance/databases/example-db/operations/OPERATION-ID
Ganti kode berikut:
- PROJECT-NAME: Nama project.
- OPERATION-ID: ID operasi yang ingin Anda periksa.
Outputnya terlihat mirip dengan yang berikut ini:
done: true metadata: ... progress: - endTime: '2022-03-01T00:28:06.691403Z' progressPercent: 100 startTime: '2022-03-01T00:28:04.221401Z' - endTime: '2022-03-01T00:28:17.624588Z' startTime: '2022-03-01T00:28:06.691403Z' progressPercent: 100 ...
Menulis data
Mari kita tambahkan beberapa data contoh ke database
GoogleSQL
gcloud spanner rows insert --database=example-db \ --table=Singers \ --data=SingerId=1,FirstName=Marc,LastName=Richards gcloud spanner rows insert --database=example-db \ --table=Singers \ --data=SingerId=2,FirstName=Catalina,LastName=Smith gcloud spanner rows insert --database=example-db \ --table=Singers \ --data=SingerId=3,FirstName=Alice,LastName=Trentor gcloud spanner rows insert --database=example-db \ --table=Albums \ --data=SingerId=1,AlbumId=1,AlbumTitle="Total Junk" gcloud spanner rows insert --database=example-db \ --table=Albums \ --data=SingerId=2,AlbumId=1,AlbumTitle="Green" gcloud spanner rows insert --database=example-db \ --table=Albums \ --data=^:^SingerId=2:AlbumId=2:AlbumTitle="Go, Go, Go"
Secara default, koma digunakan untuk membatasi item dalam daftar. Pada perintah penyisipan terakhir, kita menentukan titik dua (^:^
) sebagai pembatas sehingga kita dapat menggunakan koma dalam judul album.
PostgreSQL
gcloud spanner databases execute-sql example-db \ --sql="INSERT INTO Singers (SingerId, FirstName, LastName) VALUES (1, 'Marc', 'Richards')" gcloud spanner databases execute-sql example-db \ --sql="INSERT INTO Singers (SingerId, FirstName, LastName) VALUES (2, 'Catalina', 'Smith')" gcloud spanner databases execute-sql example-db \ --sql="INSERT INTO Singers (SingerId, FirstName, LastName) VALUES (3, 'Alice', 'Trentor')" gcloud spanner databases execute-sql example-db \ --sql="INSERT INTO Albums (SingerId, AlbumId, AlbumTitle) VALUES (1, 1, 'Total Junk')" gcloud spanner databases execute-sql example-db \ --sql="INSERT INTO Albums (SingerId, AlbumId, AlbumTitle) VALUES (2, 1, 'Green')" gcloud spanner databases execute-sql example-db \ --sql="INSERT INTO Albums (SingerId, AlbumId, AlbumTitle) VALUES (2, 2, 'Go, Go, Go')"
Membuat kueri data menggunakan SQL
Jalankan kueri di command line:
gcloud spanner databases execute-sql example-db \ --sql='SELECT SingerId, AlbumId, AlbumTitle FROM Albums'
Untuk referensi SQL Spanner, lihat Sintaksis kueri untuk GoogleSQL atau Sintaksis kueri untuk PostgreSQL.
Untuk melihat daftar flag yang dapat Anda gunakan dengan perintah execute-sql
, lihat
gcloud spanner databases execute-sql.
Pembersihan
Agar tidak menimbulkan biaya tambahan pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus database dan hapus instance yang Anda buat.
Menghapus database
Untuk menghapus instance yang ada:
gcloud spanner databases delete example-db
Menghapus instance
Untuk menghapus instance yang ada:
gcloud spanner instances delete test-instance
Perhatikan bahwa menghapus instance juga akan menghapus semua database di instance tersebut. Penghapusan instance tidak dapat dibatalkan.