Démarrage rapide : Utiliser Azure Cosmos DB for Table avec le kit Azure SDK pour Go
Dans ce guide de démarrage rapide, vous déployez une application Azure Cosmos DB for Table de base en utilisant le kit Azure SDK pour Go. Azure Cosmos DB for Table est un magasin de données sans schéma qui permet aux applications de stocker des données de table structurées dans le cloud. Vous apprenez à créer des tables, des lignes et à effectuer des tâches de base au sein de votre ressource Azure Cosmos DB avec Azure SDK pour Go.
Code source de la bibliothèque | Package (Go) | Azure Developer CLI
Prérequis
- Azure Developer CLI
- Docker Desktop
Go
version 1.21 ou plus récente
Si vous ne disposez pas d’un compte Azure, créez-en un gratuitement avant de commencer.
Initialiser le projet
Utilisez l’interface Azure Developer CLI (azd
) pour créer un compte Azure Cosmos DB for Table et déployer un exemple d’application conteneurisé. L’exemple d’application utilise la bibliothèque de client pour gérer, créer, lire et interroger des exemples de données.
Ouvrez un terminal dans un répertoire vide.
Si vous n’êtes pas encore authentifié, authentifiez-vous auprès d’Azure Developer CLI à l’aide de
azd auth login
. Suivez les étapes spécifiées par l’outil pour vous authentifier auprès de l’interface CLI à l’aide de vos informations d’identification Azure préférées.azd auth login
Utilisez
azd init
pour initialiser le projet.azd init --template cosmos-db-table-go-quickstart
Lors de l’initialisation, configurez un nom d’environnement unique.
Déployez le compte Azure Cosmos DB en utilisant
azd up
. Les modèles Bicep déploient également un exemple d’application web.azd up
Pendant le processus d’approvisionnement, sélectionnez votre abonnement, l’emplacement souhaité et le groupe de ressources cible. Attendez la fin du processus de provisionnement. Le processus peut prendre environ cinq minutes.
Une fois le provisionnement de vos ressources Azure effectué, une URL vers l’application web en cours d’exécution est incluse dans la sortie.
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: <https://[container-app-sub-domain].azurecontainerapps.io> SUCCESS: Your application was provisioned and deployed to Azure in 5 minutes 0 seconds.
Utilisez l’URL dans la console pour accéder à votre application web dans le navigateur. Observez la sortie de l’application en cours d’exécution.
Installer la bibliothèque de client
La bibliothèque cliente est disponible via Go, en tant que package aztables
.
Ouvrez un terminal et accédez au dossier
/src
.cd ./src
S’il n’est pas déjà installé, installez le package
aztables
à l’aide dego install
.go install github.com/Azure/azure-sdk-for-go/sdk/data/aztables
Ouvrez et examinez le fichier src/go.mod pour valider l’existence de l’entrée
github.com/Azure/azure-sdk-for-go/sdk/data/aztables
.
Modèle objet
Nom | Description |
---|---|
ServiceClient |
Il s’agit du type client principal utilisé pour gérer les métadonnées ou les bases de données à l’échelle du compte. |
Client |
Ce type représente le client d’une table dans le compte. |
Exemples de code
L’exemple de code du modèle utilise une table nommée cosmicworks-products
. La table cosmicworks-products
contient des détails tels que le nom, la catégorie, la quantité, le prix, un identificateur unique et un indicateur de vente pour chaque produit. Le conteneur utilise un identifiant unique comme clé de ligne et une catégorie comme clé de partition.
Authentifier le client
Cet exemple crée une instance de type ServiceClient
.
credential, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
return err
}
client, err := aztables.NewServiceClient("<azure-cosmos-db-table-account-endpoint>", credential)
if err != nil {
log.Fatal(err)
}
Obtenir une table
Cet exemple crée une instance de type Client
à l’aide de la fonction NewClient
de type ServiceClient
.
table, err := client.NewClient("<azure-cosmos-db-table-name>")
if err != nil {
log.Fatal(err)
}
Créer une entité
Le moyen le plus simple de créer une entité dans une table consiste à créer une instance de type aztables.EDMEntity
. Définissez les propriétés RowKey
et PartitionKey
en utilisant le type aztables.Entity
, puis définissez les éventuelles propriétés supplémentaires en utilisant un mappage de chaînes.
entity := aztables.EDMEntity{
Entity: aztables.Entity{
RowKey: "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
PartitionKey: "gear-surf-surfboards",
},
Properties: map[string]any{
"Name": "Yamba Surfboard",
"Quantity": 12,
"Price": 850.00,
"Clearance": false,
},
}
Convertissez l’entité en tableau d’octets en utilisant json.Marshal
, puis créez l’entité dans la table en utilisant UpsertEntity
.
bytes, err := json.Marshal(entity)
if err != nil {
panic(err)
}
_, err = table.UpsertEntity(context.TODO(), bytes, nil)
if err != nil {
panic(err)
}
Obtenir une entité
Vous pouvez récupérer une entité spécifique à partir d’une table en utilisant GetEntity
. Vous pouvez ensuite utiliser json.Unmarshal
pour l’analyser en utilisant le type aztables.EDMEntity
.
rowKey := "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
partitionKey := "gear-surf-surfboards"
response, err := table.GetEntity(context.TODO(), partitionKey, rowKey, nil)
if err != nil {
panic(err)
}
var entity aztables.EDMEntity
err = json.Unmarshal(response.Value, &entity)
if err != nil {
panic(err)
}
Interroger des entités
Après avoir inséré une entité, vous pouvez également exécuter une requête pour obtenir toutes les entités qui correspondent à un filtre spécifique en utilisant NewListEntitiesPager
avec un filtre de chaîne.
filter := "PartitionKey eq 'gear-surf-surfboards'"
options := &aztables.ListEntitiesOptions{
Filter: &filter,
}
pager := table.NewListEntitiesPager(options)
Analysez les résultats paginés de la requête à l’aide de la fonction More
du sélecteur de pages pour déterminer s’il y a plus de pages, puis la fonction NextPage
pour obtenir la page de résultats suivante.
for pager.More() {
response, err := pager.NextPage(context.TODO())
if err != nil {
panic(err)
}
for _, entityBytes := range response.Entities {
var entity aztables.EDMEntity
err := json.Unmarshal(entityBytes, &entity)
if err != nil {
panic(err)
}
writeOutput(fmt.Sprintf("Found entity:\t%s\t%s", entity.Properties["Name"], entity.RowKey))
}
}
Nettoyer les ressources
Lorsque vous n’avez plus besoin de l’exemple d’application ou de ressources, supprimez le déploiement correspondant et toutes les ressources.
azd down