Hızlı Başlangıç: MongoDB için Azure Cosmos DB'ye go uygulaması Bağlan
ŞUNLAR IÇIN GEÇERLIDIR: MongoDB
Azure Cosmos DB, genel dağıtım ve yatay ölçek özellikleriyle belge, tablo, anahtar-değer ve grafik veritabanlarını hızlı bir şekilde oluşturup sorgulamanıza olanak tanıyan çok modelli bir veritabanı hizmetidir. Bu hızlı başlangıçta, Azure Cloud Shell'i kullanarak bir Azure Cosmos DB hesabı oluşturup yönetecek, GitHub'dan mevcut bir örnek uygulamayı kopyalayıp Azure Cosmos DB ile çalışacak şekilde yapılandıracaksınız.
Örnek uygulama, Go ile yazılmış bir komut satırı tabanlı todo
yönetim aracıdır. MongoDB için Azure Cosmos DB API'sinin MongoDB kablo protokolüyle uyumlu olması, herhangi bir MongoDB istemci sürücüsünün ona bağlanmasını mümkün hale getirir. Bu uygulama MongoDB için Go sürücüsünü, verilerin Azure Cosmos DB veritabanında depolandığı uygulama için saydam bir şekilde kullanır.
Önkoşullar
- Etkin aboneliği olan bir Azure hesabı. Ücretsiz bir tane oluşturun. İsterseniz Azure aboneliği olmadan Azure Cosmos DB'yi ücretsiz olarak da deneyebilirsiniz. Azure Cosmos DB Öykünücüsü'ni bağlantı dizesi
.mongodb://localhost:C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==@localhost:10255/admin?ssl=true
ile de kullanabilirsiniz. - Go bilgisayarınızda yüklü ve Go hakkında çalışan bir bilgi.
- Git.
Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz . Azure Cloud Shell'de Bash için hızlı başlangıç.
CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yı yükleyin . Windows veya macOS üzerinde çalışıyorsanız Azure CLI’yi bir Docker kapsayıcısında çalıştırmayı değerlendirin. Daha fazla bilgi için bkz . Docker kapsayıcısında Azure CLI'yi çalıştırma.
Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI ile oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Diğer oturum açma seçenekleri için bkz . Azure CLI ile oturum açma.
İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma.
Yüklü sürümü ve bağımlı kitaplıkları bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.
Örnek uygulamayı kopyalama
Örnek depoyu kopyalamak için aşağıdaki komutları çalıştırın.
Bir komut istemi açın, adlı
git-samples
yeni bir klasör oluşturun ve komut istemini kapatın.mkdir "C:\git-samples"
Git Bash gibi bir Git terminal penceresi açın ve örnek uygulamayı yüklemek üzere yeni bir klasör olarak değiştirmek için
cd
komutunu kullanın.cd "C:\git-samples"
Örnek depoyu kopyalamak için aşağıdaki komutu çalıştırın. Bu komut bilgisayarınızda örnek uygulamanın bir kopyasını oluşturur.
git clone https://github.com/Azure-Samples/cosmosdb-go-mongodb-quickstart
Kodu gözden geçirin
Bu adım isteğe bağlıdır. Uygulamanın nasıl çalıştığını öğrenmek istiyorsanız aşağıdaki kod parçacıklarını gözden geçirebilirsiniz. Aksi takdirde, uygulamayı çalıştırma bölümüne atlayabilirsiniz. Uygulama düzeni aşağıdaki gibidir:
.
├── go.mod
├── go.sum
└── todo.go
Aşağıdaki kod parçacıklarının tümü todo.go
dosyasından alınmıştır.
Azure Cosmos DB’yi kullanarak Go uygulamasına bağlanma
clientOptions
bir ortam değişkeni (gelecek bölümdeki ayrıntılar) kullanılarak geçirilen Azure Cosmos DB için bağlantı dizesi kapsüller. Bağlantı, örneğin geçirildiği clientOptions
kullanılarak başlatılırmongo.NewClient
. Ping
işlevi , bağlantının başarılı olduğunu onaylamak için çağrılır (bu hızlı bir hata stratejisidir).
ctx, cancel := context.WithTimeout(context.Background(), time.Second*10)
defer cancel()
clientOptions := options.Client().ApplyURI(mongoDBConnectionString).SetDirect(true)
c, err := mongo.Connect(ctx, clientOptions)
if err != nil {
log.Fatalf("unable to initialize connection %v", err)
}
err = c.Ping(ctx, nil)
if err != nil {
log.Fatalf("unable to connect %v", err)
}
Not
Yapılandırmayı SetDirect(true)
kullanmak önemlidir; bu olmadan aşağıdaki bağlantı hatasını alırsınız: unable to connect connection(cdb-ms-prod-<azure-region>-cm1.documents.azure.com:10255[-4]) connection is closed
todo
Öğe oluşturma
oluşturmak için bir todo
tanıtıcısını mongo.Collection
alır ve işlevini çağırırız InsertOne
.
func create(desc string) {
c := connect()
ctx := context.Background()
defer c.Disconnect(ctx)
todoCollection := c.Database(database).Collection(collection)
r, err := todoCollection.InsertOne(ctx, Todo{Description: desc, Status: statusPending})
if err != nil {
log.Fatalf("failed to add todo %v", err)
}
Açıklamayı ve durumu içeren bir Todo
yapı geçiririz (başlangıçta olarak ayarlanır pending
):
type Todo struct {
ID primitive.ObjectID `bson:"_id,omitempty"`
Description string `bson:"description"`
Status string `bson:"status"`
}
Liste todo
öğeleri
TODO'ları ölçütlere göre listeleyebiliriz. Filtre ölçütlerini kapsüllemek için bir bson.D
oluşturulur:
func list(status string) {
.....
var filter interface{}
switch status {
case listAllCriteria:
filter = bson.D{}
case statusCompleted:
filter = bson.D{{statusAttribute, statusCompleted}}
case statusPending:
filter = bson.D{{statusAttribute, statusPending}}
default:
log.Fatal("invalid criteria for listing todo(s)")
}
Find
filtreye göre belge aramak için kullanılır ve sonuç Todo
todoCollection := c.Database(database).Collection(collection)
rs, err := todoCollection.Find(ctx, filter)
if err != nil {
log.Fatalf("failed to list todo(s) %v", err)
}
var todos []Todo
err = rs.All(ctx, &todos)
if err != nil {
log.Fatalf("failed to list todo(s) %v", err)
}
Son olarak, bilgiler tablo biçiminde işlenir:
todoTable := [][]string{}
for _, todo := range todos {
s, _ := todo.ID.MarshalJSON()
todoTable = append(todoTable, []string{string(s), todo.Description, todo.Status})
}
table := tablewriter.NewWriter(os.Stdout)
table.SetHeader([]string{"ID", "Description", "Status"})
for _, v := range todoTable {
table.Append(v)
}
table.Render()
Öğeyi todo
güncelleştirme
, todo
öğesine _id
göre güncelleştirilebilir. bson.D
Bu durumda yeni bir durum (completed
veya pending
) olan güncelleştirilmiş bilgiler için bir filtre _id
oluşturulur ve başka bir filtre oluşturulur. Son olarak, UpdateOne
işlev filtre ve güncelleştirilmiş belgeyle çağrılır:
func update(todoid, newStatus string) {
....
todoCollection := c.Database(database).Collection(collection)
oid, err := primitive.ObjectIDFromHex(todoid)
if err != nil {
log.Fatalf("failed to update todo %v", err)
}
filter := bson.D{{"_id", oid}}
update := bson.D{{"$set", bson.D{{statusAttribute, newStatus}}}}
_, err = todoCollection.UpdateOne(ctx, filter, update)
if err != nil {
log.Fatalf("failed to update todo %v", err)
}
Silme todo
A todo
, öğesine _id
göre silinir ve bir bson.D
örnek biçiminde kapsüllenmiş olur. DeleteOne
, belgeyi silmek için çağrılır.
func delete(todoid string) {
....
todoCollection := c.Database(database).Collection(collection)
oid, err := primitive.ObjectIDFromHex(todoid)
if err != nil {
log.Fatalf("invalid todo ID %v", err)
}
filter := bson.D{{"_id", oid}}
_, err = todoCollection.DeleteOne(ctx, filter)
if err != nil {
log.Fatalf("failed to delete todo %v", err)
}
}
Uygulama oluşturma
Uygulamayı kopyaladığınız ve oluşturduğunuz dizine geçin (kullanarak go build
).
cd monogdb-go-quickstart
go build -o todo
Uygulamanın düzgün derlendiğini onaylamak için.
./todo --help
Azure Cosmos DB kurulumu
Azure'da oturum açma
CLI'yi yerel olarak yükleyip kullanmayı seçerseniz bu konu, Azure CLI 2.0 veya sonraki bir sürümünü çalıştırmanızı gerektirir. Sürümü bulmak için az --version
komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekiyorsa bkz. [Azure CLI'yi yükleme].
Yüklü bir Azure CLI kullanıyorsanız az login komutuyla Azure aboneliğinizde oturum açın ve ekrandaki yönergeleri izleyin. Azure Cloud Shell'i kullanıyorsanız bu adımı atlayabilirsiniz.
az login
Azure Cosmos DB modülü ekleme
Yüklü bir Azure CLI kullanıyorsanız komutunu çalıştırarak az
bileşenin cosmosdb
zaten yüklü olup olmadığını denetleyin. cosmosdb
, temel komutlar listesindeyse bir sonraki komuta geçin. Azure Cloud Shell'i kullanıyorsanız bu adımı atlayabilirsiniz.
Temel komutlar listesinde değilse cosmosdb
Azure CLI'yı yeniden yükleyin.
Kaynak grubu oluşturma
az group create ile bir kaynak grubu oluşturun. Azure kaynak grubu, web uygulamaları, veritabanları ve depolama hesapları gibi Azure kaynaklarının dağıtıldığı ve yönetildiği mantıksal bir kapsayıcıdır.
Aşağıdaki örnekte Batı Avrupa bölgesinde bir kaynak grubu oluşturulmaktadır. Kaynak grubu için benzersiz bir ad seçin.
Azure Cloud Shell kullanıyorsanız Deneyin'i seçin, oturum açmak için ekrandaki istemleri izleyin ve komutu komut istemine kopyalayın.
az group create --name myResourceGroup --location "West Europe"
Azure Cosmos DB hesabı oluşturma
az cosmosdb create komutuyla bir Azure Cosmos DB hesabı oluşturun.
Aşağıdaki komutta lütfen benzersiz Azure Cosmos DB hesap adınızı <cosmosdb-name>
yer tutucusunu gördüğünüz yere yerleştirin. Bu benzersiz ad, Azure Cosmos DB uç noktanızın (https://<cosmosdb-name>.documents.azure.com/
) bir parçası olarak kullanılacağı için, adın Azure’daki tüm Azure Cosmos DB hesaplarında benzersiz olması gerekir.
az cosmosdb create --name <cosmosdb-name> --resource-group myResourceGroup --kind MongoDB
--kind MongoDB
parametresi MongoDB istemci bağlantılarını etkinleştirir.
Azure Cosmos DB hesabı oluşturulduğunda Azure CLI, aşağıdaki örneğe benzer bilgiler gösterir.
Not
Bu örnek, varsayılan Azure CLI çıktı biçimi olarak JSON kullanır. Başka bir çıktı biçimi kullanmak için bkz. Azure CLI komutları için çıktı biçimleri.
{
"databaseAccountOfferType": "Standard",
"documentEndpoint": "https://<cosmosdb-name>.documents.azure.com:443/",
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Document
DB/databaseAccounts/<cosmosdb-name>",
"kind": "MongoDB",
"location": "West Europe",
"name": "<cosmosdb-name>",
"readLocations": [
{
"documentEndpoint": "https://<cosmosdb-name>-westeurope.documents.azure.com:443/",
"failoverPriority": 0,
"id": "<cosmosdb-name>-westeurope",
"locationName": "West Europe",
"provisioningState": "Succeeded"
}
],
"resourceGroup": "myResourceGroup",
"type": "Microsoft.DocumentDB/databaseAccounts",
"writeLocations": [
{
"documentEndpoint": "https://<cosmosdb-name>-westeurope.documents.azure.com:443/",
"failoverPriority": 0,
"id": "<cosmosdb-name>-westeurope",
"locationName": "West Europe",
"provisioningState": "Succeeded"
}
]
}
Veritabanı anahtarını alma
Bir Azure Cosmos DB veritabanına bağlanmak için veritabanı anahtarı gerekir. Birincil anahtarı almak için az cosmosdb keys list komutunu kullanın.
az cosmosdb keys list --name <cosmosdb-name> --resource-group myResourceGroup --query "primaryMasterKey"
Azure CLI aşağıdaki örneğe benzer bilgiler çıkarır.
"RUayjYjixJDWG5xTqIiXjC..."
Uygulamayı yapılandırma
bağlantı dizesi, MongoDB veritabanını ve koleksiyon adlarını ortam değişkenleri olarak dışarı aktarın.
export MONGODB_CONNECTION_STRING="mongodb://<COSMOSDB_ACCOUNT_NAME>:<COSMOSDB_PASSWORD>@<COSMOSDB_ACCOUNT_NAME>.documents.azure.com:10255/?ssl=true&replicaSet=globaldb&maxIdleTimeMS=120000&appName=@<COSMOSDB_ACCOUNT_NAME>@"
Not
ssl=true
Azure Cosmos DB gereksinimleri nedeniyle bu seçenek önemlidir. Daha fazla bilgi için bkz. Bağlan ion dizesi gereksinimleri.
Ortam değişkeni için MONGODB_CONNECTION_STRING
<COSMOSDB_ACCOUNT_NAME>
ve yer tutucularını değiştirin <COSMOSDB_PASSWORD>
<COSMOSDB_ACCOUNT_NAME>
: Oluşturduğunuz Azure Cosmos DB hesabının adı<COSMOSDB_PASSWORD>
: Önceki adımda ayıklanan veritabanı anahtarı
export MONGODB_DATABASE=todo-db
export MONGODB_COLLECTION=todos
için MONGODB_DATABASE
tercih ettiğiniz değerleri seçebilir veya MONGODB_COLLECTION
olduğu gibi bırakabilirsiniz.
Uygulamayı çalıştırma
Oluşturmak için todo
./todo --create "Create an Azure Cosmos DB database account"
Başarılı olursa, yeni oluşturulan belgenin MongoDB'sini _id
içeren bir çıktı görmeniz gerekir:
added todo ObjectID("5e9fd6befd2f076d1f03bd8a")
Başka bir tane oluşturma todo
./todo --create "Get the MongoDB connection string using the Azure CLI"
Tümünü listele todo
./todo --list all
Yeni eklediğinizleri şu şekilde tablo biçiminde görmeniz gerekir:
+----------------------------+--------------------------------+-----------+
| ID | DESCRIPTION | STATUS |
+----------------------------+--------------------------------+-----------+
| "5e9fd6b1bcd2fa6bd267d4c4" | Create an Azure Cosmos DB | pending |
| | database account | |
| "5e9fd6befd2f076d1f03bd8a" | Get the MongoDB connection | pending |
| | string using the Azure CLI | |
+----------------------------+--------------------------------+-----------+
Bir öğesinin todo
durumunu güncelleştirmek için (örn. durum olarak değiştirin completed
), kimliği kullanın todo
:
./todo --update 5e9fd6b1bcd2fa6bd267d4c4,completed
Yalnızca tamamlananları todo
listeleme
./todo --list completed
Yeni güncelleştirdiğiniz kişiyi görmeniz gerekir:
+----------------------------+--------------------------------+-----------+
| ID | DESCRIPTION | STATUS |
+----------------------------+--------------------------------+-----------+
| "5e9fd6b1bcd2fa6bd267d4c4" | Create an Azure Cosmos DB | completed |
| | database account | |
+----------------------------+--------------------------------+-----------+
Veri Gezgini’nde verileri görüntüleme
Azure Cosmos DB'de depolanan veriler Azure portalında görüntülenebilir ve sorgulanabilir.
Önceki adımda oluşturulan verileri görüntülemek, sorgulamak ve üzerinde çalışmak için web tarayıcınızda Azure portalı oturumunu açın.
Üstteki Arama kutusuna Azure Cosmos DB yazın. Azure Cosmos DB hesabı dikey pencereniz açıldığında Azure Cosmos DB hesabınızı seçin. Sol gezinti bölmesinde Veri Gezgini'i seçin. Koleksiyonlar bölmesinde koleksiyonunuzu genişletin; bundan sonra koleksiyondaki belgeleri görüntüleyebilir, verileri sorgulayabilir ve hatta saklı yordam, tetikleyici ve UDF’ler oluşturup çalıştırabilirsiniz.
Kimliğini kullanarak silme todo
:
./todo --delete 5e9fd6b1bcd2fa6bd267d4c4,completed
Onaylamak için s'leri todo
listeleyin:
./todo --list all
Yeni todo
sildiğiniz şu anda mevcut olmamalıdır:
+----------------------------+--------------------------------+-----------+
| ID | DESCRIPTION | STATUS |
+----------------------------+--------------------------------+-----------+
| "5e9fd6befd2f076d1f03bd8a" | Get the MongoDB connection | pending |
| | string using the Azure CLI | |
+----------------------------+--------------------------------+-----------+
Kaynakları temizleme
Uygulamanız ve Azure Cosmos DB hesabınızla işiniz bittiğinde, daha fazla ücret ödemeden oluşturduğunuz Azure kaynaklarını silebilirsiniz. Kaynakları silmek için:
Azure portalı Arama çubuğunda Kaynak grupları'nı arayın ve seçin.
Listeden bu hızlı başlangıç için oluşturduğunuz kaynak grubunu seçin.
Kaynak grubuna Genel Bakış sayfasında Kaynak grubunu sil'i seçin.
Sonraki pencerede, silinecek kaynak grubunun adını girin ve sil'i seçin.
Sonraki adımlar
Bu hızlı başlangıçta, Azure Cloud Shell'i kullanarak MongoDB için Azure Cosmos DB hesabı oluşturmayı ve yönetmek todo
üzere bir Go komut satırı uygulaması oluşturup çalıştırmayı öğrendiniz. Şimdi Azure Cosmos DB hesabınıza ek veriler aktarabilirsiniz.
Azure Cosmos DB'ye geçiş için kapasite planlaması yapmaya mı çalışıyorsunuz? Kapasite planlaması için mevcut veritabanı kümeniz hakkındaki bilgileri kullanabilirsiniz.
- Tek bildiğiniz mevcut veritabanı kümenizdeki sanal çekirdek ve sunucu sayısıysa, sanal çekirdek veya vCPU kullanarak istek birimlerini tahmin etme hakkında bilgi edinin
- Geçerli veritabanı iş yükünüz için tipik istek oranlarını biliyorsanız Azure Cosmos DB kapasite planlayıcısı kullanarak istek birimlerini tahmin etme hakkında bilgi edinin