Maison >développement back-end >Golang >Interaction entre les fonctions Golang et les bases de données distribuées dans les systèmes distribués

Interaction entre les fonctions Golang et les bases de données distribuées dans les systèmes distribués

王林
王林original
2024-04-19 15:06:01714parcourir

Dans un système distribué, les fonctions Go peuvent interagir avec des bases de données distribuées. Les étapes spécifiques sont les suivantes : Installez les dépendances nécessaires. Utilisez la fonction spanner.NewClient pour vous connecter à la base de données. Utilisez la méthode Query pour exécuter la requête et obtenir l'itérateur. Utilisez la méthode Do pour parcourir les résultats de la requête et traiter les données. Une fois la requête terminée, utilisez la méthode Close pour fermer la connexion.

分布式系统中 Golang 函数与分布式数据库的交互

Interaction entre les fonctions Go et les bases de données distribuées dans les systèmes distribués

Dans les systèmes distribués, il est courant que les fonctions Go interagissent avec les bases de données distribuées. Cet article vous guide dans l'utilisation du code Go pour vous connecter et interroger une base de données distribuée.

Installer les dépendances

La première étape consiste à installer les dépendances nécessaires :

import (
    "context"
    "fmt"
    "log"

    "cloud.google.com/go/spanner"
)

Connectez-vous à la base de données

Pour vous connecter à la base de données, utilisez la fonction spanner.NewClient : spanner.NewClient 函数:

client, err := spanner.NewClient(context.Background(), "projects/my-project", "instances/my-instance", "databases/my-database")
if err != nil {
    log.Fatal(err)
}

执行查询

要执行查询,请使用 Query 方法:

stmt := spanner.Statement{SQL: `SELECT * FROM Singers`}
iter := client.Single().Query(context.Background(), stmt)
defer iter.Stop()

iter 是一个迭代器,它将遍历查询结果。

处理结果

要处理结果,请使用 Do

for {
    row, err := iter.Next()
    if err == iterator.Done {
        break
    }
    if err != nil {
        log.Fatal(err)
    }
    var singerId int64
    var firstName string
    var lastName string
    if err := row.ColumnByName("SingerId", &singerId); err != nil {
        log.Fatal(err)
    }
    if err := row.ColumnByName("FirstName", &firstName); err != nil {
        log.Fatal(err)
    }
    if err := row.ColumnByName("LastName", &lastName); err != nil {
        log.Fatal(err)
    }
    fmt.Printf("%d %s %s\n", singerId, firstName, lastName)
}

Exécutez le query

Pour exécuter une requête, utilisez la méthode Query :

client.Close()

iter est un itérateur qui parcourra les résultats de la requête.

Traitement des résultats

Pour traiter les résultats, veuillez utiliser la méthode Do : 🎜
package main

import (
    "context"
    "fmt"
    "log"

    "cloud.google.com/go/spanner"
)

func main() {
    client, err := spanner.NewClient(context.Background(), "projects/my-project", "instances/my-instance", "databases/my-database")
    if err != nil {
        log.Fatal(err)
    }
    defer client.Close()

    stmt := spanner.Statement{SQL: `SELECT * FROM Singers`}
    iter := client.Single().Query(context.Background(), stmt)
    defer iter.Stop()

    for {
        row, err := iter.Next()
        if err == iterator.Done {
            break
        }
        if err != nil {
            log.Fatal(err)
        }
        var singerId int64
        var firstName string
        var lastName string
        if err := row.ColumnByName("SingerId", &singerId); err != nil {
            log.Fatal(err)
        }
        if err := row.ColumnByName("FirstName", &firstName); err != nil {
            log.Fatal(err)
        }
        if err := row.ColumnByName("LastName", &lastName); err != nil {
            log.Fatal(err)
        }
        fmt.Printf("%d %s %s\n", singerId, firstName, lastName)
    }
}
🎜Fermer la connexion🎜🎜Une fois la requête terminée, veuillez fermer la connexion à la base de données : 🎜rrreee🎜Cas réel 🎜🎜Voici un exemple de code Complete Go montrant comment se connecter à une base de données Cloud Spanner et exécuter des requêtes : 🎜rrreee

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!

Déclaration:
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