Membuat dan mengelola database

Halaman ini menjelaskan cara mengelola database Spanner, termasuk cara membuat database, mengubah opsi database, dan menghapus database. Untuk mempelajari cara memperbarui skema database, lihat Membuat pembaruan skema.

Untuk berlatih membuat database dan memuat data contoh, lihat codelab Database Pertama Anda.

Buat database

Contoh berikut menunjukkan cara membuat database di instance yang ada.

Untuk database dialek GoogleSQL, Anda dapat menentukan skema database pada saat pembuatan database, atau setelah database dibuat. Untuk database dialek PostgreSQL, Anda harus menentukan skema setelah pembuatan.

Skema ditentukan menggunakan Database Definition Language, yang didokumentasikan untuk GoogleSQL dan PostgreSQL. Lihat link berikut untuk mengetahui informasi selengkapnya tentang cara membuat dan memperbarui skema:

Setelah membuat database, Anda dapat mengamankan database yang penting untuk aplikasi dan layanan Anda dengan mengaktifkan perlindungan penghapusan database. Untuk mengetahui informasi selengkapnya, lihat Mencegah penghapusan database secara tidak sengaja.

Konsol

  1. Di konsol Google Cloud, buka halaman Spanner Instances.

    Buka Instance Spanner

  2. Pilih instance tempat database akan dibuat.

  3. Klik Buat database.

  4. Masukkan nilai berikut:

    • Nama database yang akan ditampilkan di konsol Google Cloud.
    • Dialek yang akan digunakan untuk database ini.
    • Untuk database dialek GoogleSQL, secara opsional berikan kumpulan pernyataan DDL yang menentukan skema Anda. Gunakan template DDL untuk mengisi otomatis elemen umum. Jika ada error dalam pernyataan DDL, konsol Google Cloud akan menampilkan error saat Anda mencoba membuat database.
    • Secara opsional, pilih kunci enkripsi yang dikelola pelanggan untuk digunakan pada database ini.
  5. Klik Create untuk membuat database.

gcloud

Gunakan perintah gcloud spanner databases create.

gcloud spanner databases create DATABASE \
  --instance=INSTANCE \
  [--async] \
  [--database-dialect=DATABASE_DIALECT] \
  [--ddl=DDL] \
  [--ddl-file=DDL_FILE] \
  [--kms-key=KMS_KEY : --kms-keyring=KMS_KEYRING --kms-location=KMS_LOCATION --kms-project=KMS_PROJECT] \
  [GCLOUD_WIDE_FLAG …]

Opsi berikut diperlukan:

DATABASE
ID database atau ID yang sepenuhnya memenuhi syarat untuk database. Jika menentukan ID yang sepenuhnya memenuhi syarat, flag --instance dapat dihilangkan.
--instance=INSTANCE
Instance Spanner untuk database.

Opsi berikut bersifat opsional:

--async
Segera kembali, tanpa menunggu operasi yang sedang berlangsung selesai.
--database-dialect=DATABASE_DIALECT
Dialek SQL Database Spanner. Harus berupa salah satu dari: POSTGRESQL, GOOGLE_STANDARD_SQL.
--ddl=DDL
Pernyataan DDL (bahasa definisi data) yang dipisahkan titik koma untuk dijalankan di dalam database yang baru dibuat. Jika ada error dalam pernyataan apa pun, database tidak akan dibuat. Flag ini diabaikan jika --ddl_file ditetapkan. Tidak didukung oleh database dialek PostgreSQL.
--ddl-file=DDL_FILE
Jalur file yang berisi pernyataan DDL (bahasa definisi data) yang dipisahkan titik koma untuk dijalankan di dalam database yang baru dibuat. Jika ada error dalam pernyataan apa pun, database tidak akan dibuat. Jika --ddl_file ditetapkan, --ddl akan diabaikan. Tidak didukung oleh database dialek PostgreSQL.

Jika Anda menentukan kunci Cloud Key Management Service yang akan digunakan saat membuat database, sertakan opsi berikut:

--kms-key=KMS_KEY
ID kunci atau ID yang sepenuhnya memenuhi syarat untuk kunci.

Flag ini harus ditentukan jika ada argumen lain dalam grup ini yang ditentukan. Argumen lainnya dapat dihilangkan jika ID yang sepenuhnya memenuhi syarat diberikan.

--kms-keyring=KMS_KEYRING
ID key ring Cloud KMS kunci.
--kms-location=KMS_LOCATION
Lokasi Google Cloud untuk kunci.
--kms-project=KMS_PROJECT
ID project Google Cloud untuk kunci.

Klien (GoogleSQL)

C++

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Spanner, lihat library klien Spanner.

Untuk melakukan autentikasi ke Spanner, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

void CreateDatabase(google::cloud::spanner_admin::DatabaseAdminClient client,
                    std::string const& project_id,
                    std::string const& instance_id,
                    std::string const& database_id) {
  google::cloud::spanner::Database database(project_id, instance_id,
                                            database_id);
  google::spanner::admin::database::v1::CreateDatabaseRequest request;
  request.set_parent(database.instance().FullName());
  request.set_create_statement("CREATE DATABASE `" + database.database_id() +
                               "`");
  request.add_extra_statements(R"""(
      CREATE TABLE Singers (
          SingerId   INT64 NOT NULL,
          FirstName  STRING(1024),
          LastName   STRING(1024),
          SingerInfo BYTES(MAX),
          FullName   STRING(2049)
              AS (ARRAY_TO_STRING([FirstName, LastName], " ")) STORED
      ) PRIMARY KEY (SingerId))""");
  request.add_extra_statements(R"""(
      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)""");
  auto db = client.CreateDatabase(request).get();
  if (!db) throw std::move(db).status();
  std::cout << "Database " << db->name() << " created.\n";
}

Go

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Spanner, lihat library klien Spanner.

Untuk melakukan autentikasi ke Spanner, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

import (
	"context"
	"fmt"
	"io"
	"regexp"

	database "cloud.google.com/go/spanner/admin/database/apiv1"
	adminpb "cloud.google.com/go/spanner/admin/database/apiv1/databasepb"
)

func createDatabase(ctx context.Context, w io.Writer, db string) error {
	matches := regexp.MustCompile("^(.*)/databases/(.*)$").FindStringSubmatch(db)
	if matches == nil || len(matches) != 3 {
		return fmt.Errorf("Invalid database id %s", db)
	}

	adminClient, err := database.NewDatabaseAdminClient(ctx)
	if err != nil {
		return err
	}
	defer adminClient.Close()

	op, err := adminClient.CreateDatabase(ctx, &adminpb.CreateDatabaseRequest{
		Parent:          matches[1],
		CreateStatement: "CREATE DATABASE `" + matches[2] + "`",
		ExtraStatements: []string{
			`CREATE TABLE Singers (
				SingerId   INT64 NOT NULL,
				FirstName  STRING(1024),
				LastName   STRING(1024),
				SingerInfo BYTES(MAX),
				FullName   STRING(2048) AS (
					ARRAY_TO_STRING([FirstName, LastName], " ")
				) STORED
			) PRIMARY KEY (SingerId)`,
			`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`,
		},
	})
	if err != nil {
		return err
	}
	if _, err := op.Wait(ctx); err != nil {
		return err
	}
	fmt.Fprintf(w, "Created database [%s]\n", db)
	return nil
}

Java

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Spanner, lihat library klien Spanner.

Untuk melakukan autentikasi ke Spanner, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.


import com.google.cloud.spanner.SpannerException;
import com.google.cloud.spanner.SpannerExceptionFactory;
import com.google.cloud.spanner.admin.database.v1.DatabaseAdminClient;
import com.google.common.collect.ImmutableList;
import com.google.spanner.admin.database.v1.CreateDatabaseRequest;
import com.google.spanner.admin.database.v1.Database;
import java.io.IOException;
import java.util.concurrent.ExecutionException;

public class CreateDatabaseWithDefaultLeaderSample {

  static void createDatabaseWithDefaultLeader() throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    final String instanceName = "projects/my-project/instances/my-instance-id";
    final String databaseId = "my-database-name";
    final String defaultLeader = "my-default-leader";
    createDatabaseWithDefaultLeader(instanceName, databaseId, defaultLeader);
  }

  static void createDatabaseWithDefaultLeader(String instanceName, String databaseId,
      String defaultLeader) throws IOException {
    try (DatabaseAdminClient databaseAdminClient = DatabaseAdminClient.create()) {
      Database createdDatabase =
          databaseAdminClient.createDatabaseAsync(
              CreateDatabaseRequest.newBuilder()
                  .setParent(instanceName)
                  .setCreateStatement("CREATE DATABASE `" + databaseId + "`")
                  .addAllExtraStatements(
                      ImmutableList.of("CREATE TABLE Singers ("
                              + "  SingerId   INT64 NOT NULL,"
                              + "  FirstName  STRING(1024),"
                              + "  LastName   STRING(1024),"
                              + "  SingerInfo BYTES(MAX)"
                              + ") PRIMARY KEY (SingerId)",
                          "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",
                          "ALTER DATABASE " + "`" + databaseId + "`"
                              + " SET OPTIONS ( default_leader = '" + defaultLeader + "' )"))
                  .build()).get();
      System.out.println("Created database [" + createdDatabase.getName() + "]");
      System.out.println("\tDefault leader: " + createdDatabase.getDefaultLeader());
    } catch (ExecutionException e) {
      // If the operation failed during execution, expose the cause.
      throw (SpannerException) e.getCause();
    } catch (InterruptedException e) {
      // Throw when a thread is waiting, sleeping, or otherwise occupied,
      // and the thread is interrupted, either before or during the activity.
      throw SpannerExceptionFactory.propagateInterrupt(e);
    }
  }
}

Node.js

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Spanner, lihat library klien Spanner.

Untuk melakukan autentikasi ke Spanner, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// const projectId = 'my-project-id';
// const instanceId = 'my-instance-id';
// const databaseId = 'my-database-id';
// const defaultLeader = 'my-default-leader'; example: 'asia-northeast1'

// Imports the Google Cloud client library
const {Spanner} = require('@google-cloud/spanner');

// creates a client
const spanner = new Spanner({
  projectId: projectId,
});

// Gets a reference to a Cloud Spanner Database Admin Client object
const databaseAdminClient = spanner.getDatabaseAdminClient();

async function createDatabaseWithDefaultLeader() {
  // Create a new database with an extra statement which will alter the
  // database after creation to set the default leader.
  console.log(
    `Creating database ${databaseAdminClient.databasePath(
      projectId,
      instanceId,
      databaseId
    )}.`
  );
  const createSingersTableStatement = `
    CREATE TABLE Singers (
      SingerId   INT64 NOT NULL,
      FirstName  STRING(1024),
      LastName   STRING(1024),
      SingerInfo BYTES(MAX)
    ) PRIMARY KEY (SingerId)`;
  const createAlbumsStatement = `
    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`;

  // Default leader is one of the possible values in the leaderOptions field of the
  // instance config of the instance where the database is created.
  const setDefaultLeaderStatement = `
    ALTER DATABASE \`${databaseId}\`
    SET OPTIONS (default_leader = '${defaultLeader}')`;

  const [operation] = await databaseAdminClient.createDatabase({
    createStatement: 'CREATE DATABASE `' + databaseId + '`',
    extraStatements: [
      createSingersTableStatement,
      createAlbumsStatement,
      setDefaultLeaderStatement,
    ],
    parent: databaseAdminClient.instancePath(projectId, instanceId),
  });

  console.log(`Waiting for creation of ${databaseId} to complete...`);
  await operation.promise();
  console.log(
    `Created database ${databaseId} with default leader ${defaultLeader}.`
  );
}
createDatabaseWithDefaultLeader();

PHP

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Spanner, lihat library klien Spanner.

Untuk melakukan autentikasi ke Spanner, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

use Google\Cloud\Spanner\Admin\Database\V1\Client\DatabaseAdminClient;
use Google\Cloud\Spanner\Admin\Database\V1\CreateDatabaseRequest;

/**
 * Creates a database and tables for sample data.
 * Example:
 * ```
 * create_database($instanceId, $databaseId);
 * ```
 *
 * @param string $projectId The Google Cloud project ID.
 * @param string $instanceId The Spanner instance ID.
 * @param string $databaseId The Spanner database ID.
 */
function create_database(string $projectId, string $instanceId, string $databaseId): void
{
    $databaseAdminClient = new DatabaseAdminClient();
    $instance = $databaseAdminClient->instanceName($projectId, $instanceId);

    $operation = $databaseAdminClient->createDatabase(
        new CreateDatabaseRequest([
            'parent' => $instance,
            'create_statement' => sprintf('CREATE DATABASE `%s`', $databaseId),
            'extra_statements' => [
                'CREATE TABLE Singers (' .
                'SingerId     INT64 NOT NULL,' .
                'FirstName    STRING(1024),' .
                'LastName     STRING(1024),' .
                'SingerInfo   BYTES(MAX),' .
                'FullName     STRING(2048) AS' .
                '(ARRAY_TO_STRING([FirstName, LastName], " ")) STORED' .
                ') PRIMARY KEY (SingerId)',
                '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'
            ]
        ])
    );

    print('Waiting for operation to complete...' . PHP_EOL);
    $operation->pollUntilComplete();

    printf('Created database %s on instance %s' . PHP_EOL,
        $databaseId, $instanceId);
}

Python

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Spanner, lihat library klien Spanner.

Untuk melakukan autentikasi ke Spanner, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

def create_database(instance_id, database_id):
    """Creates a database and tables for sample data."""
    from google.cloud.spanner_admin_database_v1.types import spanner_database_admin

    spanner_client = spanner.Client()
    database_admin_api = spanner_client.database_admin_api

    request = spanner_database_admin.CreateDatabaseRequest(
        parent=database_admin_api.instance_path(spanner_client.project, instance_id),
        create_statement=f"CREATE DATABASE `{database_id}`",
        extra_statements=[
            """CREATE TABLE Singers (
            SingerId     INT64 NOT NULL,
            FirstName    STRING(1024),
            LastName     STRING(1024),
            SingerInfo   BYTES(MAX),
            FullName   STRING(2048) AS (
                ARRAY_TO_STRING([FirstName, LastName], " ")
            ) STORED
        ) PRIMARY KEY (SingerId)""",
            """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""",
        ],
    )

    operation = database_admin_api.create_database(request=request)

    print("Waiting for operation to complete...")
    database = operation.result(OPERATION_TIMEOUT_SECONDS)

    print(
        "Created database {} on instance {}".format(
            database.name,
            database_admin_api.instance_path(spanner_client.project, instance_id),
        )
    )

Ruby

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Spanner, lihat library klien Spanner.

Untuk melakukan autentikasi ke Spanner, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

require "google/cloud/spanner"
require "google/cloud/spanner/admin/database"

database_admin_client = Google::Cloud::Spanner::Admin::Database.database_admin

instance_path = database_admin_client.instance_path project: project_id, instance: instance_id

job = database_admin_client.create_database parent: instance_path,
                                            create_statement: "CREATE DATABASE `#{database_id}`",
                                            extra_statements: [
                                              "CREATE TABLE Singers (
      SingerId     INT64 NOT NULL,
      FirstName    STRING(1024),
      LastName     STRING(1024),
      SingerInfo   BYTES(MAX)
    ) PRIMARY KEY (SingerId)",

                                              "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"
                                            ]

puts "Waiting for create database operation to complete"

job.wait_until_done!

puts "Created database #{database_id} on instance #{instance_id}"

Memperbarui skema atau opsi database

Anda dapat memperbarui skema dan opsi database menggunakan pernyataan DDL.

Misalnya, untuk menambahkan kolom ke tabel, gunakan pernyataan DDL berikut:

GoogleSQL

ALTER TABLE Songwriters ADD COLUMN Publisher STRING(10);

PostgreSQL

ALTER TABLE Songwriters ADD COLUMN Publisher VARCHAR(10);

Untuk mengupdate versi pengoptimal kueri, gunakan pernyataan DDL berikut:

GoogleSQL

ALTER DATABASE Music SET OPTIONS(optimizer_version=null);

PostgreSQL

ALTER DATABASE DB-NAME SET spanner.optimizer_version TO DEFAULT;

Untuk informasi selengkapnya tentang opsi yang didukung, lihat referensi DDL ALTER DATABASE untuk GoogleSQL atau PostgreSQL.

Untuk informasi tentang pembaruan skema, lihat Membuat pembaruan skema.

Konsol

  1. Buka halaman Instance di konsol Google Cloud.

    Instance

  2. Pilih instance yang berisi database yang akan diubah.

  3. Pilih database.

  4. Klik Spanner Studio.

  5. Klik Tab baru atau gunakan tab editor kosong. Kemudian, masukkan pernyataan DDL yang akan diterapkan.

  6. Klik Jalankan untuk menerapkan update. Jika ada error dalam DDL Anda, konsol Google Cloud akan menampilkan error dan database tidak akan diubah.

gcloud

Untuk mengubah database dengan alat command line gcloud, gunakan gcloud spanner databases ddl update.

gcloud spanner databases ddl update \
(DATABASE : --instance=INSTANCE) \
[--async] \
[--ddl=DDL] \
[--ddl-file=DDL_FILE] \

Lihat referensi gcloud untuk mengetahui detail tentang opsi yang tersedia.

Teruskan update database ke perintah dengan flag --ddl, atau flag --ddl-file. Jika file DDL ditentukan, tanda --ddl akan diabaikan.

Lihat referensi DDL ALTER DATABASE untuk GoogleSQL atau PostgreSQL untuk mengetahui pernyataan DDL yang akan disertakan.

DDL

Lihat referensi DDL ALTER DATABASE untuk GoogleSQL atau PostgreSQL untuk mengetahui detailnya.

Memeriksa progres operasi pembaruan skema

Konsol

  1. Di menu navigasi Spanner, pilih tab Operations. Halaman Operasi menampilkan daftar operasi yang sedang berjalan.

  2. Temukan operasi skema dalam daftar. Jika masih berjalan, status progres di kolom Waktu berakhir akan menampilkan persentase operasi yang selesai, seperti yang ditunjukkan pada gambar berikut:

Screenshot status progres yang menunjukkan 98%

gcloud

Gunakan gcloud spanner operations describe untuk memeriksa progres operasi.

  1. Mendapatkan ID operasi:

    gcloud spanner operations list --instance=INSTANCE-NAME \
    --database=DATABASE-NAME --type=DATABASE_UPDATE_DDL

    Ganti kode berikut:

    • INSTANCE-NAME dengan nama instance Spanner.
    • DATABASE-NAME dengan nama database.
  2. Jalankan gcloud spanner operations describe:

    gcloud spanner operations describe OPERATION_ID\
    --instance=INSTANCE-NAME \
    --database=DATABASE-NAME

    Ganti kode berikut:

    • OPERATION-ID: ID operasi dari operasi yang ingin Anda periksa.
    • INSTANCE-NAME: Nama instance Spanner.
    • DATABASE-NAME: Nama database Spanner.

    Bagian progress dalam output menunjukkan persentase operasi yang telah selesai. 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
    ...

REST v1

  1. Mendapatkan ID operasi:

    gcloud spanner operations list --instance=INSTANCE-NAME \
    --database=DATABASE-NAME --type=DATABASE_UPDATE_DDL

    Ganti kode berikut:

    • INSTANCE-NAME dengan nama instance Spanner.
    • DATABASE-NAME dengan nama database.
  2. Periksa progres operasi.

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • PROJECT-ID: project ID.
    • INSTANCE-ID: ID instance.
    • DATABASE-ID: ID database.
    • OPERATION-ID: ID operasi.

    Metode HTTP dan URL:

    GET https://spanner.googleapis.com/v1/projects/PROJECT-ID/instances/INSTANCE-ID/databases/DATABASE-ID/operations/OPERATION-ID

    Untuk mengirim permintaan, perluas salah satu opsi berikut:

    Anda akan melihat respons JSON seperti berikut:

    {
    ...
        "progress": [
          {
            "progressPercent": 100,
            "startTime": "2023-05-27T00:52:27.366688Z",
            "endTime": "2023-05-27T00:52:30.184845Z"
          },
          {
            "progressPercent": 100,
            "startTime": "2023-05-27T00:52:30.184845Z",
            "endTime": "2023-05-27T00:52:40.750959Z"
          }
        ],
    ...
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.protobuf.Empty"
      }
    }
    
    

Jika operasi membutuhkan waktu terlalu lama, Anda dapat membatalkannya. Untuk mengetahui informasi selengkapnya, lihat Membatalkan operasi database yang berjalan lama.

Menghapus database

Menghapus database secara permanen akan menghapus database tersebut dan semua datanya. Penghapusan database tidak dapat diurungkan. Jika perlindungan penghapusan database diaktifkan di database, Anda tidak dapat menghapus database tersebut hingga Anda menonaktifkan perlindungan penghapusannya.

Cadangan yang ada tidak dihapus saat database dihapus. Untuk informasi selengkapnya, lihat Mencadangkan dan memulihkan.

Konsol

  1. Buka halaman Instance di konsol Google Cloud.

    Instance

  2. Pilih instance yang berisi database yang akan dihapus.

  3. Pilih database.

  4. Klik Hapus database. Konfirmasi akan muncul.

  5. Ketik nama database, lalu klik Delete.

gcloud

Untuk menghapus database dengan alat command line gcloud, gunakan gcloud spanner databases delete.

gcloud spanner databases delete \
  (DATABASE : --instance=INSTANCE)

Opsi berikut diperlukan:

DATABASE
ID database atau ID yang sepenuhnya memenuhi syarat untuk database. Jika ID yang sepenuhnya memenuhi syarat diberikan, tanda --instance harus dihilangkan.
--instance=INSTANCE
Instance Spanner untuk database.

Untuk detail selengkapnya, lihat referensi gcloud.

DDL

DDL tidak mendukung sintaksis penghapusan database.

Langkah selanjutnya