Rövid útmutató: Az Azure Cosmos DB for Table használata a Go-hoz készült Azure SDK-val
Ebben a rövid útmutatóban üzembe helyez egy alapszintű Azure Cosmos DB for Table-alkalmazást az Azure SDK for Go használatával. Az Azure Cosmos DB for Table egy séma nélküli adattár, amely lehetővé teszi, hogy az alkalmazások strukturált táblaadatokat tároljanak a felhőben. Megtudhatja, hogyan hozhat létre táblákat, sorokat, és hogyan hajthat végre alapvető feladatokat az Azure Cosmos DB-erőforrásban az Azure SDK for Go használatával.
Kódtár forráskódcsomagja (Go) | Azure Developer CLI |
Előfeltételek
- Azure Developer CLI
- Docker Desktop
Go
1.21 vagy újabb
Ha még nem rendelkezik Azure-fiókkal, első lépésként 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 Table-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 könyvtárban.
Ha még nincs hitelesítve, jelentkezzen be az Azure Developer CLI-be a használatával
azd auth login
. 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 login
A projekt inicializálására használható
azd init
.azd init --template cosmos-db-table-go-quickstart
Az inicializálás során konfiguráljon egy egyedi környezetnevet.
Az Azure Cosmos DB-fiók üzembe helyezése a következő használatával
azd up
: . A Bicep-sablonok egy minta webalkalmazást is üzembe helyeznek.azd up
A 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 az ügyfélkódtárat
Az ügyfélkódtár csomagként aztables
a Go-on keresztül érhető el.
Nyisson meg egy terminált, és keresse meg a
/src
mappát.cd ./src
Ha még nincs telepítve, telepítse a csomagot a
aztables
következővelgo install
: .go install github.com/Azure/azure-sdk-for-go/sdk/data/aztables
Nyissa meg és tekintse át az src/go.mod fájlt annak ellenőrzéséhez, hogy a
github.com/Azure/azure-sdk-for-go/sdk/data/aztables
bejegyzés létezik-e.
Objektummodell
Név | Leírás |
---|---|
ServiceClient |
Ez a típus az elsődleges ügyféltípus, és a fiókszintű metaadatok vagy adatbázisok kezelésére szolgál. |
Client |
Ez a típus a fiókon belüli tábla ügyfélét jelöli. |
Kódpéldák
A sablonban lévő mintakód egy nevű táblát cosmicworks-products
használ. A cosmicworks-products
táblázat olyan részleteket tartalmaz, mint a név, a kategória, a mennyiség, az ár, az egyedi azonosító és az egyes termékek értékesítési jelzője. A tároló egy egyedi azonosítót használ sorkulcsként és kategóriaként partíciókulcsként.
Az ügyfél hitelesítése
Ez a minta létrehoz egy új típusú példányt 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)
}
Táblázat lekérése
Ez a minta a Client
típus egy példányát hozza létre a NewClient
típus függvényével ServiceClient
.
table, err := client.NewClient("<azure-cosmos-db-table-name>")
if err != nil {
log.Fatal(err)
}
Entitás létrehozása
Az új entitások táblabeli létrehozásának legegyszerűbb módja egy típuspéldány aztables.EDMEntity
létrehozása. Állítsa be a RowKey
típust és PartitionKey
a tulajdonságokat, aztables.Entity
majd állítsa be a további tulajdonságokat egy sztringtérkép használatával.
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,
},
}
Konvergálja az entitást egy bájttömbbe json.Marshal
, majd hozza létre az entitást a táblában a használatával UpsertEntity
.
bytes, err := json.Marshal(entity)
if err != nil {
panic(err)
}
_, err = table.UpsertEntity(context.TODO(), bytes, nil)
if err != nil {
panic(err)
}
Entitás lekérése
Egy adott entitást lekérhet egy táblából a következő használatával GetEntity
: . Ezután json.Unmarshal
a típussal elemezheti.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)
}
Entitások lekérdezése
Miután beszúrt egy entitást, egy lekérdezést is futtathat az adott szűrőnek megfelelő összes entitás lekéréséhez egy sztringszűrővel NewListEntitiesPager
együtt.
category := "gear-surf-surfboards"
// Ensure the value is OData-compliant by escaping single quotes
safeCategory := strings.ReplaceAll(category, "'", "''")
filter := fmt.Sprintf("PartitionKey eq '%s'", safeCategory)
options := &aztables.ListEntitiesOptions{
Filter: &filter,
}
pager := table.NewListEntitiesPager(options)
Elemezheti a lekérdezés More
lapszámozott eredményeit a lapozó függvényével annak megállapításához, hogy van-e több oldal, majd a NextPage
függvény az eredmények következő oldalának lekéréséhez.
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))
}
}
Az erőforrások eltávolí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