Membuat dan mengelola database

Halaman ini menjelaskan cara mengelola database Spanner, termasuk cara membuat database, mengubah opsi database, dan menghapus database. Halaman ini memiliki informasi untuk database dialek GoogleSQL dan database dialek PostgreSQL. Untuk mempelajari cara memperbarui skema database, lihat Membuat pembaruan skema.

Untuk berlatih membuat database dan memuatnya dengan data contoh, lihat codelab database Spanner.

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 Bahasa Definisi Database, yang didokumentasikan untuk GoogleSQL dan PostgreSQL. Buka 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.

Google Cloud console

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

    Buka instance Spanner

  2. Pilih instance untuk membuat database.

  3. Klik Buat database.

  4. Masukkan nilai berikut:

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

gcloud

Gunakan perintah gcloud spanner databases create.

```sh
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, tanda --instance dapat dihilangkan.
--instance=INSTANCE
Instance Spanner untuk database.

Opsi berikut bersifat opsional:

--async
Segera tampilkan, tanpa menunggu operasi yang sedang berlangsung selesai.
--database-dialect=DATABASE_DIALECT
Dialek SQL Database Spanner. Harus salah satu dari: POSTGRESQL, GOOGLE_STANDARD_SQL.
--ddl=DDL
Pernyataan DDL (bahasa definisi data) yang dipisahkan dengan titik koma untuk dijalankan di dalam database yang baru dibuat. Jika ada error dalam pernyataan apa pun, database tidak 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 dari kunci.
--kms-location=KMS_LOCATION
Google Cloud lokasi kunci.
--kms-project=KMS_PROJECT
Google Cloud project ID 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 mengetahui informasi selengkapnya tentang opsi yang didukung, lihat referensi DDL ALTER DATABASE untuk GoogleSQL atau PostgreSQL.

Untuk mengetahui informasi tentang pembaruan skema, lihat Membuat pembaruan skema.

Google Cloud console

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

    Buka instance Spanner

  2. Pilih instance yang berisi database yang akan diubah.

  3. Pilih database.

  4. Klik Spanner Studio.

  5. Klik Tab baru atau gunakan tab editor yang 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 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 pembaruan 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 pernyataan DDL yang akan disertakan.

DDL

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

Memeriksa progres operasi update skema

Google Cloud console

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

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

Status progres menampilkan 98%

gcloud

Gunakan gcloud spanner operations describe untuk memeriksa progres operasi.

  1. Dapatkan 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 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. Dapatkan 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 pada database, Anda tidak dapat menghapus database tersebut hingga Anda menonaktifkan perlindungan penghapusannya.

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

Google Cloud console

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

    Buka instance Spanner

  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 Hapus.

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 dihapus.
--instance=INSTANCE
Instance Spanner untuk database.

Untuk mengetahui detail selengkapnya, lihat referensi gcloud.

DDL

DDL tidak mendukung sintaksis penghapusan database.

Langkah berikutnya