Maison > développement back-end > Golang > le corps du texte

Utiliser Apache Cassandra dans Go : un guide complet

PHPz
Libérer: 2023-06-18 19:56:54
original
1724 Les gens l'ont consulté

Apache Cassandra est une base de données non relationnelle (NoSQL) largement utilisée dans les scénarios de stockage de données distribuées à grande échelle, à haut débit et tolérantes aux pannes. Il utilise un modèle de données similaire à Bigtable de Google et le combine avec l'architecture distribuée d'Amazon Dynamo. Dans cet article, nous verrons comment utiliser Apache Cassandra en langage Go et comment l'utiliser pour créer une application Web simple.

Modèle de données de Cassandra

Le modèle de données de Cassandra peut être logiquement considéré comme une table de hachage entièrement distribuée. La table se compose de plusieurs familles de colonnes. Chaque famille de colonnes contient un espace de clé (Keyspace), qui contient plusieurs tables (Table). Chaque table contient plusieurs lignes (Row) et dans chaque ligne, elle peut stocker plusieurs données nommées colonnes (Column). .

Dans Cassandra, vous pouvez utiliser CQL (Cassandra Query Language) pour interroger et manipuler des données. CQL est facile à apprendre et à utiliser car il utilise une syntaxe similaire au langage SQL, mais certains détails de syntaxe sont encore différents.

Étapes pour utiliser Apache Cassandra

Voyons maintenant comment utiliser Apache Cassandra dans votre application Go. Il y a principalement 5 étapes ci-dessous.

1. Installer Cassandra

La première chose à faire est d'installer Cassandra. Vous pouvez vous rendre sur le site officiel de Cassandra pour télécharger le fichier binaire correspondant et l'installer selon les instructions.

2. Créer une famille de colonnes

Après avoir installé Cassandra, l'étape suivante consiste à créer une famille de colonnes et à ajouter quelques colonnes à la famille de colonnes. Vous pouvez utiliser cqlsh (cassandra shell) pour faire fonctionner Cassandra.

Ici, nous avons créé une famille de colonnes nommée « étudiant », qui contient le nom de l'étudiant, le numéro de l'étudiant, la classe et d'autres informations :

CREATE KEYSPACE learning WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '3'} AND durable_writes = true;

CREATE TABLE learning.students (
   student_id text PRIMARY KEY,
   first_name text,
   last_name text,
   department text
);
Copier après la connexion

3 Connectez-vous à Cassandra

En langage Go, vous pouvez utiliser des bibliothèques tierces pour vous connecter. à Cassandre. Ici, nous utilisons gocql pour nous connecter.

Voici un exemple de code pour vous connecter à un cluster Cassandra :

cluster := gocql.NewCluster("127.0.0.1")
cluster.Keyspace = "learning"
session, err := cluster.CreateSession()
if err != nil {
    log.Fatal(err)
}
defer session.Close()
Copier après la connexion

Ici, il vous suffit de spécifier l'adresse IP ou le nom d'hôte du cluster Cassandra et de spécifier l'espace de clés auquel vous souhaitez vous connecter.

4. Écrire des instructions de requête

En langage Go, vous pouvez utiliser gocql.Query pour écrire des instructions de requête. Voici un exemple de code pour interroger toutes les informations sur les étudiants dans la table :

var students []model.Student

query := "SELECT * FROM students"
iter := session.Query(query).Iter()

for iter.Scan(&student.ID, &student.FirstName, &student.LastName, &student.Department) {
    students = append(students, student)
}

if err := iter.Close(); err != nil {
    log.Fatal(err)
}

for _, student := range students {
    fmt.Println(student.ID, student.FirstName, student.LastName, student.Department)
}
Copier après la connexion

Ici, nous déclarons d'abord une structure model.Student pour stocker les données sur les étudiants extraites de la table. Ensuite, nous avons écrit une instruction de requête SELECT et créé un objet de requête à l'aide de la méthode session.Query. Ensuite, nous parcourons les résultats de la requête, stockons les données dans une tranche, et enfin générons les informations pour tous les étudiants.

5. Fermez la connexion

Enfin, nous devons fermer la connexion avec Cassandra. Voici un exemple de code pour fermer la connexion Cassandra :

defer session.Close()
Copier après la connexion

Création d'une application Web à l'aide de Cassandra

Voyons maintenant comment créer une application Web simple à l'aide d'Apache Cassandra en langage Go. Dans cette application Web, nous créerons une page de liste des étudiants, afficherons les informations de tous les étudiants et fournirons un formulaire pour ajouter des informations sur les étudiants.

Ici, nous utilisons le framework Gin pour créer des applications Web. Voici un exemple de code pour créer une application Web :

package main

import (
    "html/template"
    "log"
    "net/http"
    "strconv"

    "github.com/gin-gonic/gin"
    "github.com/gocql/gocql"
)

type Student struct {
    ID         string
    FirstName  string
    LastName   string
    Department string
}

var session *gocql.Session

func init() {
    cluster := gocql.NewCluster("127.0.0.1")
    cluster.Keyspace = "learning"
    var err error
    session, err = cluster.CreateSession()
    if err != nil {
        log.Fatal(err)
    }
}

func main() {
    router := gin.Default()

    router.LoadHTMLGlob("templates/*")

    router.GET("/", func(c *gin.Context) {
        var students []Student

        query := "SELECT * FROM students"
        iter := session.Query(query).Iter()

        for {
            var student Student
            if !iter.Scan(&student.ID, &student.FirstName, &student.LastName, &student.Department) {
                break
            }
            students = append(students, student)
        }

        if err := iter.Close(); err != nil {
            log.Fatal(err)
        }

        c.HTML(http.StatusOK, "index.tmpl", gin.H{
            "students": students,
        })
    })

    router.POST("/add", func(c *gin.Context) {
        student := Student{
            ID:         c.PostForm("id"),
            FirstName:  c.PostForm("first_name"),
            LastName:   c.PostForm("last_name"),
            Department: c.PostForm("department"),
        }

        query := "INSERT INTO students (student_id, first_name, last_name, department) VALUES (?, ?, ?, ?)"
        err := session.Query(query, student.ID, student.FirstName, student.LastName, student.Department).Exec()
        if err != nil {
            log.Fatal(err)
        }

        c.Redirect(http.StatusFound, "/")
    })

    router.Run(":8080")
}
Copier après la connexion

Ici, nous déclarons d'abord une structure nommée Student, qui est utilisée pour représenter les informations d'un étudiant. Ensuite, on se connecte au cluster Cassandra dans la fonction init.

Dans la fonction principale, nous utilisons le routage Gin pour gérer différentes requêtes HTTP. Sur le chemin "/", nous interrogeons d'abord les informations de tous les étudiants et les transmettons au modèle index.tmpl pour le rendu de la page de liste des étudiants. Sur le chemin "/add", nous insérons un nouveau dossier d'étudiant basé sur les données du formulaire soumis par l'utilisateur, puis redirigeons l'utilisateur vers la page de la liste des étudiants.

Enfin, nous appelons router.Run() pour démarrer l'application Web.

Résumé

Dans cet article, nous avons expliqué comment utiliser Apache Cassandra en langage Go et créé une application Web simple. À travers cet exemple, nous pouvons voir l'utilisation simple de Cassandra et comment utiliser des bibliothèques tierces pour faire fonctionner Cassandra en langage Go. Si vous recherchez une base de données distribuée à haut débit et haute disponibilité, Apache Cassandra peut être une option pour vous.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!