Mulai Cepat: Menyambungkan aplikasi Go ke Azure Cosmos DB untuk MongoDB
BERLAKU UNTUK: MongoDB
Azure Cosmos DB adalah layanan database multi-model yang memungkinkan Anda membuat dan kueri dokumen, tabel, nilai-kunci, dan database grafik dengan kemampuan distribusi global dan skala horizontal dengan cepat. Dalam mulai cepat ini, Anda membuat dan mengelola akun Azure Cosmos DB dengan menggunakan Azure Cloud Shell, mengkloning aplikasi sampel yang ada dari GitHub, dan mengonfigurasinya untuk berfungsi dengan Azure Cosmos DB.
Aplikasi contoh adalah alat manajemen todo
berbasis baris perintah yang ditulis di Go. API Azure Cosmos DB untuk MongoDB kompatibel dengan protokol sambungan MongoDB, sehingga memungkinkan setiap driver klien MongoDB untuk terhubung. Aplikasi ini menggunakan driver Go untuk MongoDB dengan cara yang transparan terhadap aplikasi bahwa data disimpan dalam database Azure Cosmos DB.
Prasyarat
- Akun Azure dengan langganan aktif. Buat akun gratis. Atau coba Azure Cosmos DB secara gratis tanpa langganan Azure. Anda juga dapat menggunakan Azure Cosmos DB Emulator dengan string koneksi
.mongodb://localhost:C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==@localhost:10255/admin?ssl=true
. - Go terinstal di komputer Anda, dan pengetahuan kerja tentang Go.
- Git.
Gunakan lingkungan Bash di Azure Cloud Shell. Untuk informasi selengkapnya, lihat Mulai Cepat untuk Bash di Azure Cloud Shell.
Jika Anda lebih suka menjalankan perintah referensi CLI secara lokal, instal Azure CLI. Jika Anda menjalankan Windows atau macOS, pertimbangkan untuk menjalankan Azure CLI dalam kontainer Docker. Untuk informasi lebih lanjut, lihat Cara menjalankan Azure CLI di kontainer Docker.
Jika Anda menggunakan instalasi lokal, masuk ke Azure CLI dengan menggunakan perintah login az. Untuk menyelesaikan proses autentikasi, ikuti langkah-langkah yang ditampilkan di terminal Anda. Untuk opsi masuk lainnya, lihat Masuk dengan Azure CLI.
Saat Anda diminta, instal ekstensi Azure CLI pada penggunaan pertama. Untuk informasi selengkapnya tentang ekstensi, lihat Menggunakan ekstensi dengan Azure CLI.
Jalankan versi az untuk menemukan versi dan pustaka dependen yang diinstal. Untuk meningkatkan ke versi terbaru, jalankan peningkatan az.
Buat klon sampel aplikasi
Jalankan perintah berikut untuk mengkloning repositori sampel.
Buka prompt perintah, buat folder baru bernama
git-samples
, lalu tutup prompt perintah tersebut.mkdir "C:\git-samples"
Buka jendela terminal git, seperti git bash, dan gunakan perintah
cd
untuk mengubah ke folder baru untuk memasang aplikasi sampel.cd "C:\git-samples"
Jalankan perintah berikut untuk mengkloning repositori sampel. Perintah ini membuat salinan aplikasi sampel di komputer Anda.
git clone https://github.com/Azure-Samples/cosmosdb-go-mongodb-quickstart
Mengulas kode
Langkah ini bersifat opsional. Jika Anda tertarik untuk mempelajari cara kerja aplikasi, Anda dapat meninjau cuplikan berikut. Jika tidak, Anda dapat melewati ke depan untuk Menjalankan aplikasi. Tata letak aplikasi adalah sebagai berikut:
.
├── go.mod
├── go.sum
└── todo.go
Cuplikan berikut semuanya diambil dari file todo.go
.
Menghubungkan aplikasi Go ke Azure Cosmos DB
clientOptions
merangkum string koneksi untuk Azure Cosmos DB, yang diteruskan menggunakan variabel lingkungan (detail di bagian mendatang). Sambungan diinisialisasi menggunakan mongo.NewClient
yang diteruskan dengan instans clientOptions
. Ping
fungsi dipanggil untuk mengonfirmasi keberhasilan konektivitas (ini adalah strategi yang gagal cepat).
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)
}
Catatan
Menggunakan konfigurasi SetDirect(true)
itu penting, tanpanya Anda akan mendapatkan kesalahan konektivitas berikut: unable to connect connection(cdb-ms-prod-<azure-region>-cm1.documents.azure.com:10255[-4]) connection is closed
Buat item todo
Untuk membuat todo
, kami dapat menghandel ke mongo.Collection
dan memanggil fungsi 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)
}
Kami meneruskan Todo
struct yang berisi deskripsi dan status (yang awalnya diatur ke pending
):
type Todo struct {
ID primitive.ObjectID `bson:"_id,omitempty"`
Description string `bson:"description"`
Status string `bson:"status"`
}
Cantumkan todo
item
Kami dapat mencantumkan TODO berdasarkan kriteria. bson.D
dibuat untuk merangkum kriteria filter:
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
digunakan untuk mencari dokumen berdasarkan filter dan hasilnya dikonversi menjadi potongan 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)
}
Terakhir, informasi dirender dalam format tabular:
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()
Memperbarui item todo
todo
dapat diperbarui berdasarkan _id
-nya. Filter bson.D
dibuat berdasarkan _id
dan filter lain dibuat untuk informasi yang diperbarui, yang merupakan status baru (completed
atau pending
) dalam kasus ini. Akhirnya, UpdateOne
fungsi dipanggil dengan filter dan dokumen yang diperbarui:
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)
}
Menghapus todo
todo
dihapus berdasarkan _id
dan dienkapsulasi dalam bentuk bson.D
instans. DeleteOne
dipanggil untuk menghapus dokumen.
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)
}
}
Membangun aplikasi
Ubah ke direktori tempat Anda mengkloning aplikasi dan membangunnya (menggunakan go build
).
cd monogdb-go-quickstart
go build -o todo
Untuk mengonfirmasi bahwa aplikasi telah dibangun dengan benar.
./todo --help
Menyiapkan Azure Cosmos DB
Masuk ke Azure
Jika Anda memilih untuk menginstal dan menggunakan CLI secara lokal, topik ini mengharuskan Anda menjalankan Azure CLI versi 2.0 atau yang lebih baru. Jalankan az --version
untuk menemukan versinya. Jika Anda perlu memasang atau meningkatkan, lihat [Menginstal CLI Azure].
Jika Anda menggunakan Azure CLI yang diinstal, masuk ke langganan Azure Anda dengan perintah az login dan ikuti petunjuk di layar. Anda dapat melewati langkah ini jika Anda menggunakan Azure Cloud Shell.
az login
Menambahkan modul Azure Cosmos DB
Jika Anda menggunakan Azure CLI yang diinstal, periksa untuk melihat apakah cosmosdb
komponen sudah diinstal dengan menjalankan az
perintah. Jika cosmosdb
ada dalam daftar perintah dasar, lanjutkan ke perintah berikutnya. Anda dapat melewati langkah ini jika Anda menggunakan Azure Cloud Shell.
Jika cosmosdb
tidak ada dalam daftar perintah dasar, instal ulang Azure CLI.
Buat grup sumber daya
Buat grup sumber daya dengan buat grup az. Grup sumber daya Azure adalah kontainer logis tempat sumber daya Azure seperti aplikasi web, database, dan akun penyimpanan disebarkan dan dikelola.
Contoh berikut membuat grup sumber daya di wilayah Eropa Barat. Pilih nama unik untuk grup sumber daya.
Jika Anda menggunakan Azure Cloud Shell, pilih Coba, ikuti perintah pada layar untuk masuk, lalu salin perintah ke prompt perintah.
az group create --name myResourceGroup --location "West Europe"
Membuat akun Azure Cosmos DB
Buat akun Azure Cosmos DB dengan perintah az cosmosdb create .
Dalam perintah berikut, ganti nama akun Azure Cosmos DB unik Anda sendiri tempat Anda melihat <cosmosdb-name>
tempat penampung. Nama unik ini akan digunakan sebagai bagian dari titik akhir Azure Cosmos DB Anda (https://<cosmosdb-name>.documents.azure.com/
), sehingga namanya harus unik di semua akun Azure Cosmos DB di Azure.
az cosmosdb create --name <cosmosdb-name> --resource-group myResourceGroup --kind MongoDB
Parameter --kind MongoDB
ini memungkinkan koneksi klien MongoDB.
Saat akun Azure Cosmos DB dibuat, Azure CLI menampilkan informasi yang mirip dengan contoh berikut.
Catatan
Contoh ini menggunakan JSON sebagai format output Azure CLI, yang merupakan default. Untuk menggunakan format output lain, lihat Format output untuk perintah Azure CLI.
{
"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"
}
]
}
Mengambil kunci database
Untuk menyambungkan ke database Azure Cosmos DB, Anda memerlukan kunci database. Gunakan perintah az cosmosdb keys list untuk mengambil kunci utama.
az cosmosdb keys list --name <cosmosdb-name> --resource-group myResourceGroup --query "primaryMasterKey"
Azure CLI menghasilkan informasi yang mirip dengan contoh berikut.
"RUayjYjixJDWG5xTqIiXjC..."
Mengonfigurasi aplikasi
Ekspor string koneksi, database MongoDB, dan kumpulan nama sebagai variabel lingkungan.
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>@"
Catatan
Opsi ssl=true
ini penting karena persyaratan Azure Cosmos DB. Untuk informasi selengkapnya, lihat Persyaratan string koneksi.
Untuk variabel lingkungan MONGODB_CONNECTION_STRING
, ganti tempat penampung untuk <COSMOSDB_ACCOUNT_NAME>
dan <COSMOSDB_PASSWORD>
<COSMOSDB_ACCOUNT_NAME>
: Nama akun Azure Cosmos DB yang Anda buat<COSMOSDB_PASSWORD>
: Kunci database yang diekstrak pada langkah sebelumnya
export MONGODB_DATABASE=todo-db
export MONGODB_COLLECTION=todos
Anda dapat memilih nilai pilihan Anda untuk MONGODB_DATABASE
dan MONGODB_COLLECTION
atau membiarkannya saja.
Jalankan aplikasi
Untuk membuat todo
./todo --create "Create an Azure Cosmos DB database account"
Jika berhasil, Anda akan melihat output dengan MongoDB _id
dari dokumen yang baru dibuat:
added todo ObjectID("5e9fd6befd2f076d1f03bd8a")
Membuat todo
lainnya
./todo --create "Get the MongoDB connection string using the Azure CLI"
Cantumkan semua todo
./todo --list all
Anda akan melihat yang baru saja Anda tambahkan dalam format tabular seperti:
+----------------------------+--------------------------------+-----------+
| ID | DESCRIPTION | STATUS |
+----------------------------+--------------------------------+-----------+
| "5e9fd6b1bcd2fa6bd267d4c4" | Create an Azure Cosmos DB | pending |
| | database account | |
| "5e9fd6befd2f076d1f03bd8a" | Get the MongoDB connection | pending |
| | string using the Azure CLI | |
+----------------------------+--------------------------------+-----------+
Untuk memperbarui status todo
(misalnya mengubahnya menjadi completed
status), gunakan todo
ID:
./todo --update 5e9fd6b1bcd2fa6bd267d4c4,completed
Cantumkan hanya todo
yang telah selesai
./todo --list completed
Anda akan melihat yang baru saja Anda perbarui:
+----------------------------+--------------------------------+-----------+
| ID | DESCRIPTION | STATUS |
+----------------------------+--------------------------------+-----------+
| "5e9fd6b1bcd2fa6bd267d4c4" | Create an Azure Cosmos DB | completed |
| | database account | |
+----------------------------+--------------------------------+-----------+
Menampilkan data di Data Explorer
Data yang disimpan di Azure Cosmos DB tersedia untuk dilihat dan dikueri di portal Microsoft Azure.
Untuk menampilkan, mengkueri, dan bekerja dengan data pengguna yang dibuat di langkah sebelumnya, masuk ke portal Microsoft Azure di browser web Anda.
Di kotak Pencarian teratas, masukkan Azure Cosmos DB. Saat bilah akun Azure Cosmos DB Anda terbuka, pilih akun Azure Cosmos DB Anda. Di navigasi kiri, pilih Data Explorer. Perluas kumpulan Anda di panel Kumpulan, lalu Anda bisa menampilkan dokumen dalam kumpulan, kueri data, dan bahkan membuat dan menjalankan prosedur, pemicu, dan UDF yang disimpan.
todo
Menghapus menggunakan ID-nya:
./todo --delete 5e9fd6b1bcd2fa6bd267d4c4,completed
Cantumkan todo
untuk mengonfirmasi:
./todo --list all
Yang todo
baru saja Anda hapus seharusnya tidak ada:
+----------------------------+--------------------------------+-----------+
| ID | DESCRIPTION | STATUS |
+----------------------------+--------------------------------+-----------+
| "5e9fd6befd2f076d1f03bd8a" | Get the MongoDB connection | pending |
| | string using the Azure CLI | |
+----------------------------+--------------------------------+-----------+
Membersihkan sumber daya
Setelah selesai dengan aplikasi dan akun Azure Cosmos DB, Anda dapat menghapus sumber daya Azure yang dibuat sehingga tidak dikenakan lebih banyak biaya. Untuk menghapus sumber daya:
Di portal Azure, cari dan pilih Grup sumber daya.
Dari daftar, pilih grup sumber daya yang Anda buat untuk panduan mulai cepat ini.
Di panel Gambaran umum grup sumber daya, pilih Hapus grup sumber daya.
Di jendela berikutnya, masukkan nama grup sumber daya yang akan dihapus, lalu pilih Hapus.
Langkah berikutnya
Dalam mulai cepat ini, Anda mempelajari cara membuat akun Azure Cosmos DB for MongoDB menggunakan Azure Cloud Shell, dan membuat dan menjalankan aplikasi baris perintah Go untuk mengelola todo
. Kini Anda dapat mengimpor data tambahan ke akun Azure Cosmos DB.
Mencoba melakukan perencanaan kapasitas untuk migrasi ke Azure Cosmos DB? Anda dapat menggunakan informasi tentang kluster database Anda yang ada saat ini untuk membuat perencanaan kapasitas.
- Jika Anda hanya mengetahui jumlah vcore dan server di kluster database yang ada, baca tentang memperkirakan unit permintaan menggunakan vCore atau vCPU
- Jika Anda mengetahui rasio permintaan umum untuk beban kerja database Anda saat ini, baca memperkirakan unit permintaan menggunakan perencana kapasitas Azure Cosmos DB
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk