Delen via


Quickstart: Azure Cosmos DB for NoSQL gebruiken met Azure SDK voor Go

In deze quickstart implementeert u een eenvoudige Azure Cosmos DB for Table-toepassing met behulp van de Azure SDK voor Go. Azure Cosmos DB for Table is een schemaloos gegevensarchief waarmee toepassingen gestructureerde tabelgegevens in de cloud kunnen opslaan. U leert hoe u tabellen, rijen maakt en basistaken uitvoert in uw Azure Cosmos DB-resource met behulp van de Azure SDK voor Go.

API-referentiedocumentatiebibliotheek | broncodepakket | (Go) | Azure Developer CLI

Vereisten

  • Azure Developer CLI
  • Docker Desktop
  • Go 1.21 of hoger

Als u geen Azure-account hebt, maak dan een gratis account aan voordat u begint.

Het project initialiseren

Gebruik de Azure Developer CLI (azd) om een Azure Cosmos DB for Table-account te maken en een in een container geplaatste voorbeeldtoepassing te implementeren. De voorbeeldtoepassing maakt gebruik van de clientbibliotheek voor het beheren, maken, lezen en opvragen van voorbeeldgegevens.

  1. Open een terminal in een lege map.

  2. Als u nog niet bent geverifieerd, moet u zich verifiëren bij de Azure Developer CLI met behulp van azd auth login. Volg de stappen die door het hulpprogramma zijn opgegeven om te verifiëren bij de CLI met behulp van uw favoriete Azure-referenties.

    azd auth login
    
  3. Gebruik azd init dit om het project te initialiseren.

    azd init --template cosmos-db-nosql-go-quickstart
    
  4. Configureer tijdens de initialisatie een unieke omgevingsnaam.

  5. Implementeer het Azure Cosmos DB-account met behulp van azd up. De Bicep-sjablonen implementeren ook een voorbeeldwebtoepassing.

    azd up
    
  6. Selecteer tijdens het inrichtingsproces uw abonnement, gewenste locatie en doelresourcegroep. Wacht tot het inrichtingsproces is voltooid. Het proces kan ongeveer vijf minuten duren.

  7. Zodra het inrichten van uw Azure-resources is voltooid, wordt er een URL naar de actieve webtoepassing opgenomen in de uitvoer.

    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.
    
  8. Gebruik de URL in de console om naar uw webtoepassing in de browser te navigeren. Bekijk de uitvoer van de actieve app.

Schermopname van de actieve webtoepassing.

De clientbibliotheek installeren

De clientbibliotheek is beschikbaar via Go, als pakket azcosmos .

  1. Open een terminal en navigeer naar de /src map.

    cd ./src
    
  2. Als dit nog niet is geïnstalleerd, installeert u het azcosmos pakket met behulp van go install.

    go install github.com/Azure/azure-sdk-for-go/sdk/data/azcosmos
    
  3. Installeer ook het azidentity pakket als dat nog niet is geïnstalleerd.

    go install github.com/Azure/azure-sdk-for-go/sdk/azidentity
    
  4. Open en controleer het bestand src/go.mod om te controleren of de github.com/Azure/azure-sdk-for-go/sdk/data/azcosmos en github.com/Azure/azure-sdk-for-go/sdk/azidentity beide vermeldingen bestaan.

Objectmodel

Name Beschrijving
CosmosClient Deze klasse is de primaire clientklasse en wordt gebruikt voor het beheren van metagegevens of databases voor het hele account.
CosmosDatabase Deze klasse vertegenwoordigt een database binnen het account.
CosmosContainer Deze klasse wordt voornamelijk gebruikt om lees-, update- en verwijderbewerkingen uit te voeren op de container of de items die zijn opgeslagen in de container.
PartitionKey Deze klasse vertegenwoordigt een logische partitiesleutel. Deze klasse is vereist voor veel algemene bewerkingen en query's.

Codevoorbeelden

De voorbeeldcode in de sjabloon maakt gebruik van een database met de naam cosmicworks en container.products De products container bevat details zoals naam, categorie, hoeveelheid, een unieke id en een verkoopvlag voor elk product. De container gebruikt de /category eigenschap als een logische partitiesleutel.

De client verifiëren

In dit voorbeeld wordt een nieuw exemplaar gemaakt van het gebruik azcosmos.NewClient en de verificatie met behulp van CosmosClient een DefaultAzureCredential exemplaar.

credential, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
    return err
}

clientOptions := azcosmos.ClientOptions{
    EnableContentResponseOnWrite: true,
}

client, err := azcosmos.NewClient("<azure-cosmos-db-nosql-account-endpoint>", credential, &clientOptions)
if err != nil {
    return err
}

Een database ophalen

Gebruik client.NewDatabase deze om de bestaande database met de naam cosmicworksop te halen.

database, err := client.NewDatabase("cosmicworks")
if err != nil {
    return err
}

Een container ophalen

Haal de bestaande products container op met behulp van database.NewContainer.

container, err := database.NewContainer("products")
if err != nil {
    return err
}

Een item maken

Bouw een Go-type met alle leden die u in JSON wilt serialiseren. In dit voorbeeld heeft het type een unieke id en velden voor categorie, naam, hoeveelheid, prijs en verkoop.

type Item struct {
  Id        string  `json:"id"`
  Category  string  `json:"category"`
  Name      string  `json:"name"`
  Quantity  int     `json:"quantity"`
  Price     float32 `json:"price"`
  Clearance bool    `json:"clearance"`
}

Maak een item in de container met behulp van container.UpsertItem. Met deze methode wordt het item effectief vervangen als het al bestaat.

item := Item {
    Id:        "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
    Category:  "gear-surf-surfboards",
    Name:      "Yamba Surfboard",
    Quantity:  12,
    Price:     850.00,
    Clearance: false,
}

partitionKey := azcosmos.NewPartitionKeyString("gear-surf-surfboards")

context := context.TODO()

bytes, err := json.Marshal(item)
if err != nil {
    return err
}

response, err := container.UpsertItem(context, partitionKey, bytes, nil)
if err != nil {
    return err
}

Een item lezen

Voer een puntleesbewerking uit met behulp van zowel de unieke id (id) als de partitiesleutelvelden. Gebruik container.ReadItem dit om het specifieke item efficiënt op te halen.

partitionKey := azcosmos.NewPartitionKeyString("gear-surf-surfboards")

context := context.TODO()

itemId := "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"

response, err := container.ReadItem(context, partitionKey, itemId, nil)
if err != nil {
    return err
}

if response.RawResponse.StatusCode == 200 {
    read_item := Item{}
    err := json.Unmarshal(response.Value, &read_item)
    if err != nil {
        return err
    }
}

Query-items

Voer een query uit op meerdere items in een container met behulp van container.NewQueryItemsPager. Zoek alle items in een opgegeven categorie met behulp van deze geparameteriseerde query:

SELECT * FROM products p WHERE p.category = @category
partitionKey := azcosmos.NewPartitionKeyString("gear-surf-surfboards")

query := "SELECT * FROM products p WHERE p.category = @category"

queryOptions := azcosmos.QueryOptions{
    QueryParameters: []azcosmos.QueryParameter{
        {Name: "@category", Value: "gear-surf-surfboards"},
    },
}

pager := container.NewQueryItemsPager(query, partitionKey, &queryOptions)

Parseer de gepagineerde resultaten van de query door elke pagina met resultaten te doorlopen met behulp pager.NextPagevan . Gebruik pager.More dit om te bepalen of er resultaten achterblijven aan het begin van elke lus.

items := []Item{}

for pager.More() {
    response, err := pager.NextPage(context.TODO())
    if err != nil {
        return err
    }

    for _, bytes := range response.Items {
        item := Item{}
        err := json.Unmarshal(bytes, &item)
        if err != nil {
            return err
        }
        items = append(items, item)
    }
}

Uw gegevens verkennen

Gebruik de Visual Studio Code-extensie voor Azure Cosmos DB om uw NoSQL-gegevens te verkennen. U kunt kerndatabasebewerkingen uitvoeren, waaronder, maar niet beperkt tot:

  • Query's uitvoeren met behulp van een scrapbook of de query-editor
  • Items wijzigen, bijwerken, maken en verwijderen
  • Bulkgegevens importeren uit andere bronnen
  • Databases en containers beheren

Zie De Visual Studio Code-extensie gebruiken om Azure Cosmos DB for NoSQL-gegevens te verkennen voor meer informatie.

Resources opschonen

Wanneer u de voorbeeldtoepassing of resources niet meer nodig hebt, verwijdert u de bijbehorende implementatie en alle resources.

azd down