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

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

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

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

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

  github.com/googleapis/go-sql-spanner

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

כדי ליצור חיבור למסד נתונים של 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.

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

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

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

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

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