שימוש במנהל התקן של מסד נתונים/SQL ב-Spanner

Go database/sql הוא ממשק כללי למסדי נתונים של SQL (או דומים ל-SQL) לשפת התכנות Go. כדי להשתמש ב-database/sql עם האפליקציה, צריך להשתמש בדרייבר database/sql של Spanner.

הדרייבר Spannerdatabase/sql תומך במסדי נתונים של GoogleSQL ובמסדי נתונים של PostgreSQL.

התקנת מנהל ההתקן של מסד הנתונים/sql ב-Spanner

כדי להשתמש במנהל ההתקן של מסד הנתונים/sql של Spanner באפליקציה, מוסיפים את המודול הבא לקובץ go.mod:

  github.com/googleapis/go-sql-spanner

שימוש במנהל התקן של מסד נתונים/SQL ב-Spanner

כדי ליצור חיבור למסד נתונים של Spanner באמצעות מסד נתונים או SQL, צריך להשתמש ב-spanner כשם של מנהל ההתקן ובשם מוגדר במלואו של מסד הנתונים כמחרוזת החיבור:

GoogleSQL

import (
	"context"
	"database/sql"
	"fmt"

	_ "github.com/googleapis/go-sql-spanner"
)

func connect(projectId, instanceId, databaseId string) error {
	ctx := context.Background()
	dsn := fmt.Sprintf("projects/%s/instances/%s/databases/%s",
		projectId, instanceId, databaseId)
	db, err := sql.Open("spanner", dsn)
	if err != nil {
		return fmt.Errorf("failed to open database connection: %v", err)
	}
	defer func() { _ = db.Close() }()

	fmt.Printf("Connected to %s\n", dsn)
	row := db.QueryRowContext(ctx, "select cast(@greeting as string)", "Hello from Spanner")
	var greeting string
	if err := row.Scan(&greeting); err != nil {
		return fmt.Errorf("failed to get greeting: %v", err)
	}
	fmt.Printf("Greeting: %s\n", greeting)

	return nil
}

PostgreSQL

import (
	"context"
	"database/sql"
	"fmt"

	_ "github.com/googleapis/go-sql-spanner"
)

func connect(projectId, instanceId, databaseId string) error {
	ctx := context.Background()
	dsn := fmt.Sprintf("projects/%s/instances/%s/databases/%s",
		projectId, instanceId, databaseId)
	db, err := sql.Open("spanner", dsn)
	if err != nil {
		return fmt.Errorf("failed to open database connection: %v", err)
	}
	defer func() { _ = db.Close() }()

	fmt.Printf("Connected to %s\n", dsn)
	// The Spanner database/sql driver supports both PostgreSQL-style query
	// parameters ($1, $2, ...) and positional query parameters (?, ?, ...).
	// This example uses PostgreSQL-style parameters.
	row := db.QueryRowContext(ctx, "select $1", "Hello from Spanner PostgreSQL")
	var greeting string
	if err := row.Scan(&greeting); err != nil {
		return fmt.Errorf("failed to get greeting: %v", err)
	}
	fmt.Printf("Greeting: %s\n", greeting)

	return nil
}

מידע נוסף זמין במאגר GitHub של מנהל ההתקן של Spanner database/sql.

תכונות נתמכות

ספריית הקוד של דוגמאות ל-database/sql ב-Spanner Go כוללת דוגמאות מוכנות להפעלה לתכונות נפוצות של Spanner.

טיפים לשיפור הביצועים

כדי להשיג את הביצועים הטובים ביותר כשמשתמשים בדרייבר Spanner database/sql, כדאי לפעול לפי השיטות המומלצות האלה:

המאמרים הבאים