ScyllaDB è un database NoSQL altamente performante e compatibile con Apache Cassandra. Utilizzando il linguaggio Go, è possibile interagire con ScyllaDB tramite il driver gocql, uno dei client più usati per Cassandra/ScyllaDB in Go.
Prerequisiti
- ScyllaDB in esecuzione (in locale o in un cluster)
- Go installato (consigliata la versione 1.18 o superiore)
- Modulo Go inizializzato
Installazione del driver gocql
Per prima cosa, aggiungi il pacchetto gocql al tuo progetto:
go get github.com/gocql/gocqlConnessione a ScyllaDB
Per connetterti a ScyllaDB, definisci una sessione con i dettagli del cluster:
package main
import (
    "fmt"
    "log"
    "github.com/gocql/gocql"
)
func main() {
    cluster := gocql.NewCluster("127.0.0.1")
    cluster.Keyspace = "test"
    cluster.Consistency = gocql.Quorum
    session, err := cluster.CreateSession()
    if err != nil {
        log.Fatalf("Errore nella connessione: %v", err)
    }
    defer session.Close()
    fmt.Println("Connessione a ScyllaDB riuscita")
}
Creazione di una tabella
err := session.Query(`
    CREATE TABLE IF NOT EXISTS users (
        id UUID PRIMARY KEY,
        name text,
        email text
    )`).Exec()
if err != nil {
    log.Fatal(err)
}
Inserimento di dati
id := gocql.TimeUUID()
if err := session.Query(`
    INSERT INTO users (id, name, email) VALUES (?, ?, ?)`,
    id, "Mario Rossi", "mario@example.com").Exec(); err != nil {
    log.Fatal(err)
}
Lettura dei dati
var name, email string
iter := session.Query(`
    SELECT name, email FROM utenti WHERE id = ? LIMIT 1`,
    id).Iter()
for iter.Scan(&name, &email) {
    fmt.Printf("Nome: %s, Email: %s\n", name, email)
}
if err := iter.Close(); err != nil {
    log.Fatal(err)
}
Considerazioni finali
ScyllaDB, grazie alla sua compatibilità con Cassandra, consente di usare i driver esistenti come gocql per costruire applicazioni robuste e scalabili. È importante tenere presente le best practice per la progettazione di tabelle e la gestione della consistenza nelle query.
Per ambienti di produzione, considera l'utilizzo di configurazioni avanzate del cluster e della gestione della replica.