Go hello world

Contoh ini adalah aplikasi "hello world" yang sangat sederhana, ditulis dalam Go, yang mengilustrasikan cara:

  • Menyiapkan autentikasi
  • Hubungkan ke instance Bigtable.
  • Buat tabel baru.
  • Tulis data ke tabel.
  • Baca kembali data.
  • Hapus tabel.

Menyiapkan autentikasi

Untuk menggunakan contoh Go di halaman ini dalam lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.

  1. Instal Google Cloud CLI.

  2. Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

  3. Jika Anda menggunakan shell lokal, buat kredensial autentikasi lokal untuk akun pengguna Anda:

    gcloud auth application-default login

    Anda tidak perlu melakukan langkah ini jika menggunakan Cloud Shell.

    Jika error autentikasi ditampilkan, dan Anda menggunakan penyedia identitas (IdP) eksternal, konfirmasi bahwa Anda telah login ke gcloud CLI dengan identitas gabungan Anda.

Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Menjalankan contoh

Contoh ini menggunakan paket Cloud Bigtable dari Library Klien Google Cloud untuk Go guna berkomunikasi dengan Bigtable.

Untuk menjalankan program contoh ini, ikuti petunjuk untuk contoh di GitHub.

Menggunakan Library Klien Cloud dengan Bigtable

Aplikasi contoh terhubung ke Bigtable dan menunjukkan beberapa operasi sederhana.

Mengimpor library klien

Contoh ini menggunakan impor berikut:

import (
	"context"
	"flag"
	"fmt"
	"log"

	"cloud.google.com/go/bigtable"
)

Menghubungkan ke Bigtable untuk mengelola tabel

Untuk mengelola tabel, hubungkan ke Bigtable menggunakan bigtable.NewAdminClient().

adminClient, err := bigtable.NewAdminClient(ctx, *project, *instance)
if err != nil {
	log.Fatalf("Could not create admin client: %v", err)
}

Membuat tabel

Buat tabel dengan AdminClient.CreateTable(), lalu dapatkan informasi tentang tabel dengan AdminClient.TableInfo(). Buat grup kolom dengan AdminClient.CreateColumnFamily().

tables, err := adminClient.Tables(ctx)
if err != nil {
	log.Fatalf("Could not fetch table list: %v", err)
}

if !sliceContains(tables, tableName) {
	log.Printf("Creating table %s", tableName)
	if err := adminClient.CreateTable(ctx, tableName); err != nil {
		log.Fatalf("Could not create table %s: %v", tableName, err)
	}
}

tblInfo, err := adminClient.TableInfo(ctx, tableName)
if err != nil {
	log.Fatalf("Could not read info for table %s: %v", tableName, err)
}

if !sliceContains(tblInfo.Families, columnFamilyName) {
	if err := adminClient.CreateColumnFamily(ctx, tableName, columnFamilyName); err != nil {
		log.Fatalf("Could not create column family %s: %v", columnFamilyName, err)
	}
}

Menghubungkan ke Bigtable untuk mengelola data

Untuk mengelola data, hubungkan ke Bigtable menggunakan bigtable.NewClient().

client, err := bigtable.NewClient(ctx, *project, *instance)
if err != nil {
	log.Fatalf("Could not create data operations client: %v", err)
}

Menulis baris ke tabel

Buka tabel yang ingin Anda tulis. Gunakan bigtable.NewMutation() untuk membuat mutasi pada satu baris, lalu gunakan Mutation.Set() untuk menetapkan nilai dalam baris. Buat kunci baris unik untuk setiap baris. Ulangi langkah-langkah ini untuk membuat beberapa mutasi. Terakhir, gunakan Table.ApplyBulk() untuk menerapkan semua mutasi ke tabel Anda.

tbl := client.Open(tableName)
muts := make([]*bigtable.Mutation, len(greetings))
rowKeys := make([]string, len(greetings))

log.Printf("Writing greeting rows to table")