Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Important
99,999% kullanılabilirlik hizmet düzeyi sözleşmesi (SLA), anında otomatik ölçeklendirme ve birden çok bölgede otomatik yük devretme ile yüksek ölçekli senaryolar için bir veritabanı çözümü mü arıyorsunuz? NoSQL için Azure Cosmos DB'yi göz önünde bulundurun.
Bu hızlı başlangıçta Go için Azure SDK'sını kullanarak temel bir Tablo için Azure Cosmos DB uygulaması dağıtacaksınız. Tablo için Azure Cosmos DB, uygulamaların yapılandırılmış tablo verilerini bulutta depolamasına olanak sağlayan şemasız bir veri deposudur. Go için Azure SDK'yı kullanarak Azure Cosmos DB kaynağınızda tablo, satır oluşturma ve temel görevleri gerçekleştirme hakkında bilgi edinirsiniz.
Kitaplık kaynak kodu | Paketi (Go) | Azure Geliştirici CLI'sı
Prerequisites
- Azure Geliştirici CLI'sı
- Docker Desktop
-
Go1.21 veya üzeri
Azure hesabınız yoksa, başlamadan önce ücretsiz hesap oluşturun.
Projeyi başlatma
Tablo hesabı için Azure Cosmos DB oluşturmak ve kapsayıcılı örnek bir uygulama dağıtmak için Azure Geliştirici CLI'sini (azd) kullanın. Örnek uygulama örnek verileri yönetmek, oluşturmak, okumak ve sorgulamak için istemci kitaplığını kullanır.
Boş bir dizinde bir terminal açın.
Henüz kimlik doğrulaması yapmadıysanız, Azure Geliştirici CLI'sinde
azd auth loginkullanarak kimlik doğrulaması gerçekleştirin. Tercih ettiğiniz Azure kimlik bilgilerini kullanarak CLI'da kimlik doğrulaması yapmak için araç tarafından belirtilen adımları izleyin.azd auth loginProjeyi başlatmak için
azd initkullanın.azd init --template cosmos-db-table-go-quickstartBaşlatma sırasında benzersiz bir ortam adı yapılandırın.
azd upkullanarak Azure Cosmos DB hesabını dağıtın. Bicep şablonları ayrıca örnek bir web uygulamasını dağıtır.azd upSağlama işlemi sırasında aboneliğinizi, istediğiniz konumu ve hedef kaynak grubunu seçin. Sağlama işleminin tamamlanmasını bekleyin. İşlem yaklaşık beş dakika sürebilir.
Azure kaynaklarınızın sağlanması tamamlandıktan sonra, çalışan web uygulamasının URL'si çıktıya eklenir.
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.Tarayıcıda web uygulamanıza gitmek için konsoldaki URL'yi kullanın. Çalışan uygulamanın çıktısını gözlemleyin.
İstemci kitaplığını yükleme
İstemci kitaplığı, paket olarak aztables Go aracılığıyla kullanılabilir.
Bir terminal açın ve klasöre
/srcgidin.cd ./srcHenüz yüklü değilse,
aztablespaketinigo installkullanarak yükleyin.go install github.com/Azure/azure-sdk-for-go/sdk/data/aztablessrc/go.mod dosyasını açın ve gözden geçirin, böylece girişinin mevcut olduğunu doğrulayabilirsiniz.
Kitaplıkları içeri aktarma
github.com/Azure/azure-sdk-for-go/sdk/azidentity ve github.com/Azure/azure-sdk-for-go/sdk/data/aztables paketlerini uygulama kodunuz içine aktarın.
import (
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/data/aztables"
)
Nesne modeli
| Name | Description |
|---|---|
ServiceClient |
Bu tür birincil istemci türüdür ve hesap genelindeki meta verileri veya veritabanlarını yönetmek için kullanılır. |
Client |
Bu tür, hesaptaki bir tablonun istemcisini temsil eder. |
Kod örnekleri
Şablondaki örnek kod, cosmicworks-products adında bir tablo kullanır. Tabloda cosmicworks-products ad, kategori, miktar, fiyat, benzersiz tanımlayıcı ve her ürün için satış bayrağı gibi ayrıntılar yer alır. Kapsayıcı, satır anahtarı olarak benzersiz bir tanımlayıcı ve bölüm anahtarı olarak kategori kullanır.
İstemcinin kimliğini doğrulama
Bu örnek, ServiceClient türünün yeni bir nesnesini oluşturur.
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)
}
Masa satın al
Bu örnek, Client türünün NewClient işlevini kullanarak ServiceClient türünün bir örneğini oluşturur.
table, err := client.NewClient("<azure-cosmos-db-table-name>")
if err != nil {
log.Fatal(err)
}
Varlık oluşturma
Tabloda yeni varlık oluşturmanın en kolay yolu türünde aztables.EDMEntitybir örnek oluşturmaktır.
RowKey türünü kullanarak PartitionKey ve aztables.Entity özelliklerini ayarlayın ve ardından dize eşlemesi kullanarak ek özellikleri ayarlayın.
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,
},
}
Varlığı, json.Marshal kullanarak bir bayt dizisine dönüştürün ve ardından UpsertEntity kullanarak tabloda varlığı oluşturun.
bytes, err := json.Marshal(entity)
if err != nil {
panic(err)
}
_, err = table.UpsertEntity(context.TODO(), bytes, nil)
if err != nil {
panic(err)
}
Bir varlık elde et
kullanarak GetEntitybir tablodan belirli bir varlığı alabilirsiniz. Daha sonra json.Unmarshal türünü kullanarak aztables.EDMEntity ayrıştırabilirsiniz.
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)
}
Sorgu nesneleri
Bir varlık ekledikten sonra, dize filtresiyle birlikte kullanarak NewListEntitiesPager belirli bir filtreyle eşleşen tüm varlıkları almak için bir sorgu da çalıştırabilirsiniz.
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)
Sorgunun sayfalandırılmış sonuçlarını ayrıştırmak için önce daha fazla sayfa olup olmadığını belirlemek amacıyla More işlevini ve ardından bir sonraki sonuç sayfasını almak için NextPage işlevini kullanarak kontrol edin.
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))
}
}
Kaynakları temizle
Örnek uygulamaya veya kaynaklara artık ihtiyacınız kalmadığında, ilgili dağıtımı ve tüm kaynakları kaldırın.
azd down