Interagire con ScyllaDB in Go

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.

Torna su