Mulai Cepat: Menggunakan Azure Cosmos DB untuk Tabel dengan Azure SDK for Go
Dalam mulai cepat ini, Anda menyebarkan aplikasi Azure Cosmos DB for Table dasar menggunakan Azure SDK for Go. Azure Cosmos DB for Table adalah penyimpanan data tanpa skema yang memungkinkan aplikasi menyimpan data tabel terstruktur di cloud. Anda mempelajari cara membuat tabel, baris, dan melakukan tugas dasar dalam sumber daya Azure Cosmos DB Anda menggunakan Azure SDK for Go.
Paket kode | sumber pustaka (Go) | Azure Developer CLI
Prasyarat
- Azure Developer CLI
- Desktop Docker
Go
1.21 atau yang lebih baru
Jika Anda tidak memiliki akun Azure, buat akun gratis sebelum memulai.
Menginisialisasi proyek
Gunakan Azure Developer CLI (azd
) untuk membuat akun Azure Cosmos DB for Table dan menyebarkan aplikasi sampel kontainer. Aplikasi sampel menggunakan pustaka klien untuk mengelola, membuat, membaca, dan mengkueri data sampel.
Buka terminal di direktori kosong.
Jika Anda belum diautentikasi, autentikasi ke Azure Developer CLI menggunakan
azd auth login
. Ikuti langkah-langkah yang ditentukan oleh alat untuk mengautentikasi ke CLI menggunakan kredensial Azure pilihan Anda.azd auth login
Gunakan
azd init
untuk menginisialisasi proyek.azd init --template cosmos-db-table-go-quickstart
Selama inisialisasi, konfigurasikan nama lingkungan yang unik.
Sebarkan akun Azure Cosmos DB menggunakan
azd up
. Templat Bicep juga menyebarkan aplikasi web sampel.azd up
Selama proses provisi, pilih langganan Anda, lokasi yang diinginkan, dan grup sumber daya target. Tunggu hingga proses provisi selesai. Prosesnya dapat memakan waktu sekitar lima menit.
Setelah provisi sumber daya Azure Anda selesai, URL ke aplikasi web yang sedang berjalan disertakan dalam output.
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.
Gunakan URL di konsol untuk menavigasi ke aplikasi web Anda di browser. Amati output aplikasi yang sedang berjalan.
Memasang pustaka klien
Pustaka klien tersedia melalui Go, sebagai aztables
paket.
Buka terminal dan navigasi ke
/src
folder .cd ./src
Jika belum diinstal, instal
aztables
paket menggunakango install
.go install github.com/Azure/azure-sdk-for-go/sdk/data/aztables
Buka dan tinjau file src/go.mod untuk memvalidasi bahwa
github.com/Azure/azure-sdk-for-go/sdk/data/aztables
entri ada.
Model objek
Nama | Deskripsi |
---|---|
ServiceClient |
Jenis ini adalah jenis klien utama dan digunakan untuk mengelola metadata atau database di seluruh akun. |
Client |
Jenis ini mewakili klien untuk tabel dalam akun. |
Contoh kode
Kode sampel dalam templat menggunakan tabel bernama cosmicworks-products
. Tabel cosmicworks-products
berisi detail seperti nama, kategori, kuantitas, harga, pengidentifikasi unik, dan bendera penjualan untuk setiap produk. Kontainer menggunakan pengidentifikasi unik sebagai kunci baris dan kategori sebagai kunci partisi.
Mengautentikasi klien
Sampel ini membuat instans baru jenis.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)
}
Mendapatkan tabel
Sampel ini membuat instans jenis Client
menggunakan NewClient
fungsi jenis ServiceClient
.
table, err := client.NewClient("<azure-cosmos-db-table-name>")
if err != nil {
log.Fatal(err)
}
Membuat entitas
Cara term mudah untuk membuat entitas baru dalam tabel adalah dengan membuat instans jenis aztables.EDMEntity
. Atur RowKey
properti dan PartitionKey
menggunakan aztables.Entity
jenis lalu atur properti tambahan menggunakan peta string.
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,
},
}
Gabungkan entitas ke dalam array byte menggunakan json.Marshal
lalu buat entitas dalam tabel menggunakan UpsertEntity
.
bytes, err := json.Marshal(entity)
if err != nil {
panic(err)
}
_, err = table.UpsertEntity(context.TODO(), bytes, nil)
if err != nil {
panic(err)
}
Mendapatkan entitas
Anda dapat mengambil entitas tertentu dari tabel menggunakan GetEntity
. Anda kemudian dapat menggunakan json.Unmarshal
untuk mengurainya menggunakan jenis .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)
}
Mengkueri entitas
Setelah menyisipkan entitas, Anda juga bisa menjalankan kueri untuk mendapatkan semua entitas yang cocok dengan filter tertentu dengan menggunakan NewListEntitiesPager
bersama dengan filter string.
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)
Uraikan hasil kueri yang dipaginasi dengan menggunakan More
fungsi pager untuk menentukan apakah ada lebih banyak halaman, lalu NextPage
fungsi untuk mendapatkan halaman hasil berikutnya.
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))
}
}
Membersihkan sumber daya
Saat Anda tidak lagi memerlukan aplikasi sampel atau sumber daya, hapus penyebaran dan semua sumber daya yang sesuai.
azd down