Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In dieser Schnellstartanleitung stellen Sie eine einfache Azure Cosmos DB für NoSQL-Anwendung mit dem Azure SDK für Go bereit. Azure Cosmos DB für NoSQL ist ein schemaloser Datenspeicher, mit dem Anwendungen unstrukturierte Daten in der Cloud speichern können. Abfragen von Daten in Ihren Containern und Ausführen allgemeiner Vorgänge für einzelne Elemente mithilfe des Azure SDK für Go.
API-Referenzdokumentation | Quellcode der Bibliothek | Paket (Go) | Azure Developer CLI
Voraussetzungen
- Azure Developer CLI
- Docker Desktop
-
Go1.21 oder höher
Sollten Sie kein Azure-Konto haben, erstellen Sie zunächst ein kostenloses Konto.
Initialisieren des Projekts
Verwenden Sie die Azure Developer CLI (azd), um ein Azure Cosmos DB für NoSQL-Konto zu erstellen und eine containerisierte Beispielanwendung bereitzustellen. Die Beispielanwendung verwendet die Clientbibliothek zum Verwalten, Erstellen, Lesen und Abfragen von Beispieldaten.
Öffnen Sie ein Terminal in einem leeren Verzeichnis.
Wenn Sie noch nicht authentifiziert sind, authentifizieren Sie sich mithilfe von
azd auth loginbei der Azure Developer CLI. Führen Sie die vom Tool angegebenen Schritte aus, um sich mit Ihren bevorzugten Azure-Anmeldeinformationen bei der CLI zu authentifizieren.azd auth loginVerwenden Sie
azd init, um das Projekt zu initialisieren.azd init --template cosmos-db-nosql-go-quickstartKonfigurieren Sie während der Initialisierung einen eindeutigen Umgebungsnamen.
Stellen Sie das Azure Cosmos DB-Konto mit
azd upbereit. Die Bicep-Vorlagen stellen auch eine Beispielwebanwendung bereit.azd upWählen Sie während des Bereitstellungsprozesses Ihr Abonnement, den gewünschten Standort und die Zielressourcengruppe aus. Warten Sie auf den Abschluss des Bereitstellungsvorgangs. Dieser Prozess kann ca. fünf Minuten dauern.
Sobald die Bereitstellung Ihrer Azure-Ressourcen abgeschlossen ist, enthält die Ausgabe eine URL zur ausgeführten Webanwendung.
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.Verwenden Sie die URL in der Konsole, um im Browser zu Ihrer Webanwendung zu navigieren. Sehen Sie sich die Ausgabe der ausgeführten App an.
Installieren der Clientbibliothek
Die Clientbibliothek ist über Go als azcosmos-Paket verfügbar.
Öffnen Sie ein Terminal, und navigieren Sie zu dem
/src-Ordner.cd ./srcInstallieren Sie das
azcosmos-Paket mithilfe vongo install, falls es noch nicht installiert ist.go install github.com/Azure/azure-sdk-for-go/sdk/data/azcosmosInstallieren Sie außerdem das
azidentity-Paket, wenn es noch nicht installiert ist.go install github.com/Azure/azure-sdk-for-go/sdk/azidentityÖffnen und überprüfen Sie die Datei src/go.mod, um zu bestätigen, dass die Einträge
github.com/Azure/azure-sdk-for-go/sdk/data/azcosmosundgithub.com/Azure/azure-sdk-for-go/sdk/azidentityvorhanden sind.
Importieren von Bibliotheken
Importieren Sie die Pakete github.com/Azure/azure-sdk-for-go/sdk/azidentity und github.com/Azure/azure-sdk-for-go/sdk/data/azcosmos in Ihren Anwendungscode.
import (
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/data/azcosmos"
)
Objektmodell
| Name | Beschreibung |
|---|---|
CosmosClient |
Diese Klasse ist die primäre Clientklasse und wird verwendet, um kontoweite Metadaten oder Datenbanken zu verwalten. |
CosmosDatabase |
Diese Klasse stellt eine Datenbank innerhalb des Kontos dar. |
CosmosContainer |
Diese Klasse wird in erster Linie verwendet, um Lese-, Update- und Löschvorgänge für den Container oder die im Container gespeicherten Elemente auszuführen. |
PartitionKey |
Diese Klasse stellt einen logischen Partitionsschlüssel dar. Diese Klasse ist für viele allgemeine Vorgänge und Abfragen erforderlich. |
Codebeispiele
- Authentifizieren des Clients
- Datenbank abrufen
- Container abrufen
- Erstellen eines Elements
- Ein Element abrufen
- Abfrageelemente
Der Beispielcode in der Vorlage verwendet eine Datenbank mit dem Namen cosmicworks und einen Container mit dem Namen products. Der products-Container enthält Details wie Name, Kategorie, Menge, eindeutiger Bezeichner und ein Verkaufsflag für jedes Produkt. Der Container verwendet die /category-Eigenschaft als logischen Partitionsschlüssel.
Authentifizieren des Clients
In diesem Beispiel wird eine neue Instanz von CosmosClient mithilfe von azcosmos.NewClient erstellt und mithilfe einer DefaultAzureCredential-Instanz authentifiziert.
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
}
Datenbank abrufen
Verwenden Sie client.NewDatabase, um die vorhandene Datenbank mit dem Namen cosmicworks abzurufen.
database, err := client.NewDatabase("cosmicworks")
if err != nil {
return err
}
Container abrufen
Rufen Sie den vorhandenen products-Container mithilfe von database.NewContainer ab.
container, err := database.NewContainer("products")
if err != nil {
return err
}
Erstellen eines Elements
Erstellen Sie einen Go-Typ mit allen Elementen, die Sie in JSON serialisieren möchten. In diesem Beispiel weist der Typ einen eindeutigen Bezeichner und Felder für Kategorie, Name, Menge, Preis und Verkauf auf.
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"`
}
Erstellen Sie mithilfe von container.UpsertItem ein Element im Container. Mit dieser Methode wird ein Upsertvorgang für das Element ausgeführt, wodurch es effektiv ersetzt wird (sofern schon vorhanden).
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
}
Lesen eines Elements
Führen Sie einen Punktlesevorgang aus, indem Sie sowohl die eindeutigen Bezeichner (id) als auch die Partitionsschlüsselfelder verwenden. Verwenden Sie container.ReadItem, um das jeweilige Element effizient abzurufen.
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
}
}
Abfrageelemente
Führen Sie mithilfe von container.NewQueryItemsPager eine Abfrage für mehrere Elemente in einem Container durch. Suchen Sie alle Elemente in einer angegebenen Kategorie mithilfe dieser parametrisierten Abfrage:
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)
Parsen Sie die paginierten Ergebnisse der Abfrage, indem Sie jede Ergebnisseite mit pager.NextPage in einer Schleife durchlaufen. Verwenden Sie pager.More, um zu ermitteln, ob zu Beginn jeder Schleife Ergebnisse vorhanden sind.
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)
}
}
Untersuchen Ihrer Daten
Verwenden Sie die Visual Studio Code-Erweiterung für Azure Cosmos DB, um Ihre NoSQL-Daten zu untersuchen. Sie können Kerndatenbankvorgänge ausführen, einschließlich, aber nicht beschränkt auf:
- Ausführen von Abfragen mit einem Scrapbook oder dem Abfrage-Editor
- Ändern, Aktualisieren, Erstellen und Löschen von Elementen
- Importieren von Massendaten aus anderen Quellen
- Verwalten von Datenbanken und Containern
Weitere Informationen finden Sie unter So verwenden Sie die Visual Studio Code-Erweiterung, um Azure Cosmos DB für NoSQL-Daten zu untersuchen.
Bereinigen von Ressourcen
Wenn Sie die Beispielanwendung oder Ressourcen nicht mehr benötigen, entfernen Sie die entsprechende Bereitstellung und alle Ressourcen.
azd down