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/gocql
Connessione 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.