Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Ebben a rövid útmutatóban üzembe helyez egy alapszintű Azure Cosmos DB for NoSQL-alkalmazást az Azure SDK for Go használatával. Az Azure Cosmos DB for NoSQL egy séma nélküli adattár, amellyel az alkalmazások strukturálatlan adatokat tárolnak a felhőben. Az Azure SDK for Go használatával lekérdezheti a tárolók adatait, és általános műveleteket hajthat végre az egyes elemeken.
API-referencia dokumentáció | Könyvtár forráskód | Csomag (Go) | Azure Developer CLI
Előfeltételek
- Azure Developer CLI
- Docker Desktop
-
Go1.21 vagy újabb
Ha nem rendelkezik Azure-fiókkal, a kezdés előtt hozzon létre egy ingyenes fiókot .
A projekt inicializálása
Az Azure Developer CLI (azd) használatával hozzon létre egy Azure Cosmos DB for NoSQL-fiókot, és helyezzen üzembe egy tárolóalapú mintaalkalmazást. A mintaalkalmazás az ügyfélkódtárat használja a mintaadatok kezelésére, létrehozására, olvasására és lekérdezésére.
Nyisson meg egy terminált egy üres mappában.
Ha még nincs hitelesítve, jelentkezzen be az Azure Developer CLI-be a
azd auth loginhasználatával. Kövesse az eszköz által megadott lépéseket a parancssori felületre való hitelesítéshez az ön által előnyben részesített Azure-hitelesítő adatokkal.azd auth loginA projekt inicializálására használható
azd init.azd init --template cosmos-db-nosql-go-quickstartAz inicializálás során konfiguráljon egy egyedi környezetnevet.
Az Azure Cosmos DB-fiókot
azd uphasználatával helyezze üzembe. A Bicep-sablonok egy minta webalkalmazást is üzembe helyeznek.azd upA kiépítési folyamat során válassza ki az előfizetést, a kívánt helyet és a célerőforrás-csoportot. Várja meg, amíg a kiépítési folyamat befejeződik. A folyamat körülbelül öt percet vehet igénybe.
Az Azure-erőforrások kiépítése után a kimenet tartalmazza a futó webalkalmazás URL-címét.
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.A konzol URL-címével keresse meg a webalkalmazást a böngészőben. Figyelje meg a futó alkalmazás kimenetét.
Telepítse a klienskönyvtárat
Az ügyfélkódtár a azcosmos csomagként a Go-ban érhető el.
Nyisson meg egy terminált, és keresse meg a
/srcmappát.cd ./srcHa még nincs telepítve, a
azcosmoscsomagot telepítse ago installsegítségével.go install github.com/Azure/azure-sdk-for-go/sdk/data/azcosmosEmellett telepítse a
azidentitycsomagot, ha még nincs telepítve.go install github.com/Azure/azure-sdk-for-go/sdk/azidentityNyissa meg és tekintse át az src/go.mod fájlt annak ellenőrzéséhez, hogy a bejegyzések és
github.com/Azure/azure-sdk-for-go/sdk/data/azcosmosagithub.com/Azure/azure-sdk-for-go/sdk/azidentitybejegyzések is léteznek-e.
Könyvtárak importálása
Bontsa ki a github.com/Azure/azure-sdk-for-go/sdk/azidentity és github.com/Azure/azure-sdk-for-go/sdk/data/azcosmos csomagokat az alkalmazás kódjába.
import (
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/data/azcosmos"
)
Objektummodell
| Név | Description |
|---|---|
CosmosClient |
Ez az osztály az elsődleges ügyfélosztály, és a fiókszintű metaadatok vagy adatbázisok kezelésére szolgál. |
CosmosDatabase |
Ez az osztály egy adatbázist jelöl a fiókon belül. |
CosmosContainer |
Ez az osztály elsősorban olvasási, frissítési és törlési műveletek végrehajtására szolgál a tárolón vagy a tárolóban tárolt elemeken. |
PartitionKey |
Ez az osztály egy logikai partíciókulcsot jelöl. Ez az osztály számos gyakori művelethez és lekérdezéshez szükséges. |
Példakódok
- Az ügyfél hitelesítése
- Adatbázis lekérése
- Szerez egy tárolót
- Elem létrehozása
- Elem lekérése
- Lekérdezési elemek
A sablon mintakódja egy névvel ellátott cosmicworks adatbázist és egy nevű tárolót productshasznál. A products tároló olyan részleteket tartalmaz, mint a név, a kategória, a mennyiség, az egyedi azonosító és az egyes termékekhez tartozó értékesítési jelző. A tároló a tulajdonságot /category logikai partíciókulcsként használja.
Az ügyfél hitelesítése
Ez a minta létrehoz egy új CosmosClient példányt azcosmos.NewClient használatával, és hitelesít egy DefaultAzureCredential példány segítségével.
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
}
Adatbázis lekérése
A client.NewDatabase paranccsal kérheti le a meglévő, cosmicworks nevű adatbázist.
database, err := client.NewDatabase("cosmicworks")
if err != nil {
return err
}
Szerezz egy tárolót
A meglévő products tárolót a database.NewContainer használatával kérje le.
container, err := database.NewContainer("products")
if err != nil {
return err
}
Elem létrehozása
Hozzon létre egy Go típust az összes olyan taggal, amelyet JSON-ra szeretne szerializálni. Ebben a példában a típus egyedi azonosítóval rendelkezik, és a kategória, a név, a mennyiség, az ár és az értékesítés mezői.
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"`
}
Hozzon létre egy elemet a tárolóban a következő használatával container.UpsertItem: . Ez a módszer "upserteli" az elemet, vagyis hatékonyan kicseréli, ha az már létezik.
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
}
Objektum olvasása
Pontolvasási műveletet hajt végre az egyedi azonosító (id) és a partíciókulcs mezőinek használatával. Az adott elem hatékony lekérésére használható container.ReadItem .
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
}
}
Lekérdezés elemei
Lekérdezés végrehajtása egy tároló több eleme felett a következő használatával container.NewQueryItemsPager: . Egy adott kategórián belüli összes elem megkeresése ezzel a paraméteres lekérdezéssel:
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)
Elemezheti a lekérdezés lapszámozott eredményeit úgy, hogy végighalad az egyes találati oldalakon a használatával pager.NextPage. Annak megállapítására szolgál pager.More , hogy vannak-e eredmények az egyes ciklusok elején.
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)
}
}
Fedezd fel az adataidat
A NoSQL-adatok megismeréséhez használja az Azure Cosmos DB Visual Studio Code-bővítményét. Alapvető adatbázisműveleteket hajthat végre, beleértve, de nem kizárólagosan az alábbiakat:
- Lekérdezések végrehajtása egy album vagy a lekérdezésszerkesztő használatával
- Elemek módosítása, frissítése, létrehozása és törlése
- Tömeges adatok importálása más forrásokból
- Adatbázisok és tárolók kezelése
További információ: A Visual Studio Code bővítmény használata az Azure Cosmos DB for NoSQL-adatok megismeréséhez.
Erőforrások tisztítása
Ha már nincs szüksége a mintaalkalmazásra vagy erőforrásokra, távolítsa el a megfelelő üzembe helyezést és az összes erőforrást.
azd down