Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Mulai menggunakan pustaka klien Azure Cosmos DB for Apache Cassandra untuk Go untuk menyimpan, mengelola, dan mengkueri data yang tidak terstruktur. Ikuti langkah-langkah dalam panduan ini untuk membuat akun baru, menginstal pustaka klien Go, menyambungkan ke akun, melakukan operasi umum, dan mengkueri data sampel akhir Anda.
Dokumentasi referensi API | Kode sumber perpustakaan | Paket (Go)
Prasyarat
Langganan Azure
- Jika Anda tidak memiliki langganan Azure, buatlah akun gratis sebelum Anda memulai.
Versi terbaru Azure CLI di Azure Cloud Shell.
- Jika Anda lebih suka menjalankan perintah referensi CLI secara lokal, masuk ke Azure CLI dengan menggunakan
az loginperintah .
- Jika Anda lebih suka menjalankan perintah referensi CLI secara lokal, masuk ke Azure CLI dengan menggunakan
-
Go1.24 atau yang lebih baru
Persiapan
Pertama, siapkan akun dan lingkungan pengembangan untuk panduan ini. Bagian ini memandu Anda melalui proses pembuatan akun, mendapatkan kredensial akun, lalu menyiapkan lingkungan pengembangan Anda.
Buat akun
Mulailah dengan membuat API untuk akun Apache Cassandra. Setelah akun dibuat, buat keyspace dan sumber daya tabel.
Jika Anda belum memiliki grup sumber daya target, gunakan
az group createperintah untuk membuat grup sumber daya baru di langganan Anda.az group create \ --name "<resource-group-name>" \ --location "<location>"az cosmosdb createGunakan perintah untuk membuat akun Azure Cosmos DB for Apache Cassandra baru dengan pengaturan default.az cosmosdb create \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --locations "regionName=<location>" \ --capabilities "EnableCassandra"Buat keyspace baru menggunakan
az cosmosdb cassandra keyspace createbernamacosmicworks.az cosmosdb cassandra keyspace create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --name "cosmicworks"Buat objek JSON baru untuk mewakili skema Anda menggunakan perintah Bash multibaris. Kemudian, gunakan
az cosmosdb cassandra table createperintah untuk membuat tabel baru bernamaproducts.schemaJson=$(cat <<EOF { "columns": [ { "name": "id", "type": "text" }, { "name": "name", "type": "text" }, { "name": "category", "type": "text" }, { "name": "quantity", "type": "int" }, { "name": "price", "type": "decimal" }, { "name": "clearance", "type": "boolean" } ], "partitionKeys": [ { "name": "id" } ] } EOF )az cosmosdb cassandra table create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --keyspace-name "cosmicworks" \ --name "product" \ --schema "$schemaJson"
Mendapatkan kredensial
Sekarang, dapatkan kata sandi untuk pustaka klien yang akan digunakan guna membuat koneksi ke akun yang baru saja dibuat.
Gunakan
az cosmosdb showuntuk mendapatkan titik kontak dan nama pengguna untuk akun tersebut.az cosmosdb show \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --query "{username:name,contactPoint:documentEndpoint}"Catat nilai
contactPointdanusernameproperti dari keluaran perintah sebelumnya. Nilai properti ini adalah titik kontak dan nama pengguna yang Anda gunakan nanti dalam panduan ini untuk menyambungkan ke akun dengan pustaka.Gunakan
az cosmosdb keys listuntuk mendapatkan kunci untuk akun tersebut.az cosmosdb keys list \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --type "keys"Catat nilai
primaryMasterKeyproperti dari output perintah sebelumnya. Nilai properti ini adalah kata sandi yang Anda gunakan nanti dalam panduan ini untuk menyambungkan ke akun dengan pustaka.
Menyiapkan lingkungan pengembangan
Kemudian, konfigurasikan lingkungan pengembangan Anda dengan proyek baru dan pustaka klien. Langkah ini adalah prasyarat terakhir yang diperlukan sebelum beralih ke sisa panduan ini.
Mulai di direktori kosong.
Buat modul Go baru.
go mod init quickstartgithub.com/apache/cassandra-gocql-driver/v2Impor paket dari Go.go get github.com/apache/cassandra-gocql-driver/v2Buat file main.go .
Tambahkan boilerplate aplikasi Go.
package main func main() { }Penting
Langkah-langkah yang tersisa dalam panduan ini mengasumsikan bahwa Anda menambahkan kode Anda dalam
mainfungsi .
Model objek
| Deskripsi | |
|---|---|
Cluster |
Mewakili koneksi tertentu ke kluster |
Session |
Entitas yang menyimpan koneksi tertentu ke kluster |
Contoh kode
Mengautentikasi klien
Mulailah dengan mengautentikasi klien menggunakan kredensial yang dikumpulkan sebelumnya dalam panduan ini.
Buka file main.go di lingkungan pengembangan terintegrasi (IDE) Anda.
Dalam fungsi
main, impor paket berikut bersama dengan paketgithub.com/apache/cassandra-gocql-driver/v2:contextcrypto/tls
import ( "context" "crypto/tls" "github.com/apache/cassandra-gocql-driver/v2" )Buat variabel string untuk kredensial yang dikumpulkan sebelumnya dalam panduan ini. Beri nama variabel
username, ,passworddancontactPoint.username := "<username>" password := "<password>" contactPoint := "<contact-point>"Konfigurasikan instans jenis
PasswordAuthenticatordengan kredensial yang ditentukan dalam langkah-langkah sebelumnya. Simpan hasilnya di variabel bernamaauthentication.authentication := gocql.PasswordAuthenticator{ Username: username, Password: password, }Konfigurasikan instans
SslOptionsdengan versi minimum Keamanan Lapisan Transportasi (TLS) 1.2 dancontactPointvariabel sebagai nama server target. Simpan hasilnya di variabel bernamasslOptions.sslOptions := &gocql.SslOptions{ Config: &tls.Config{ MinVersion: tls.VersionTLS12, ServerName: contactPoint, }, }Buat spesifikasi kluster baru menggunakan
NewClusterdancontactPointvariabel .cluster := gocql.NewCluster(contactPoint)Konfigurasikan objek spesifikasi kluster dengan menggunakan variabel kredensial dan konfigurasi yang dibuat di langkah-langkah sebelumnya.
cluster.SslOpts = sslOptions cluster.Authenticator = authenticationKonfigurasikan sisa objek spesifikasi kluster dengan nilai statis ini.
cluster.Keyspace = "cosmicworks" cluster.Port = 10350 cluster.ProtoVersion = 4Buat sesi baru yang tersambung ke kluster menggunakan
CreateSession.session, _ := cluster.CreateSession()Konfigurasikan sesi untuk memanggil fungsi
Closesetelah fungsimaindikembalikan.defer session.Close()Buat objek konteks baru
Backgrounddan simpan dalamctxvariabel .ctx := context.Background()
Peringatan
Validasi keamanan lapisan transportasi (TLS) lengkap dinonaktifkan dalam panduan ini untuk menyederhanakan autentikasi. Untuk penyebaran produksi, aktifkan validasi sepenuhnya.
Memasukkan atau memperbarui data
Selanjutnya, upsert data baru ke dalam tabel. Upserting memastikan bahwa data dibuat atau diganti dengan tepat tergantung pada apakah data yang sama sudah ada dalam tabel.
Tentukan jenis baru bernama
Productdengan bidang yang sesuai dengan tabel yang dibuat sebelumnya dalam panduan ini.type Product struct { id string name string category string quantity int clearance bool }Tip
Di Go, Anda dapat membuat jenis ini di file lain atau membuatnya di akhir file yang ada.
Buat objek baru berjenis
Product. Simpan objek dalam variabel bernamaproduct.product := Product { id: "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", name: "Yamba Surfboard", category: "gear-surf-surfboards", quantity: 12, clearance: false, }Buat variabel string baru bernama
insertQuerydengan kueri Cassandra Query Language (CQL) untuk menyisipkan baris baru.insertQuery := ` INSERT INTO product (id, name, category, quantity, clearance) VALUES (?, ?, ?, ?, ?) `Gunakan fungsi
QuerydanExecContextuntuk menjalankan kueri. Masukkan berbagai atribut variabelproductsebagai parameter kueri._ = session.Query( insertQuery, product.id, product.name, product.category, product.quantity, product.clearance, ).ExecContext(ctx)
Baca data
Kemudian, baca data yang sebelumnya diupsert ke dalam tabel.
Buat variabel string baru bernama
readQuerydengan kueri CQL yang cocok dengan item dengan bidang yang samaid.readQuery := ` SELECT id, name, category, quantity, clearance FROM product WHERE id = ? LIMIT 1 `Buat variabel string bernama
iddengan nilai yang sama dengan produk yang dibuat sebelumnya dalam panduan ini.id := "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"Buat variabel lain bernama
matchedProductuntuk menyimpan hasil operasi ini.var matchedProduct ProductGunakan fungsi
Query,Consistency,IterContext, danScansecara bersamaan untuk menemukan item tunggal yang cocok dengan kueri dan menetapkan propertinya ke variabelmatchedProduct.session.Query( readQuery, &id, ).Consistency(gocql.One).IterContext(ctx).Scan( &matchedProduct.id, &matchedProduct.name, &matchedProduct.category, &matchedProduct.quantity, &matchedProduct.clearance, )
Mencari data
Terakhir, gunakan kueri untuk menemukan semua data yang cocok dengan filter tertentu dalam tabel.
Buat variabel string bernama
findQuerydancategorydengan kueri CQL dan parameter yang diperlukan.findQuery := ` SELECT id, name, category, quantity, clearance FROM product WHERE category = ? ALLOW FILTERING ` category := "gear-surf-surfboards"Gunakan fungsi
Query,Consistency,IterContext, danScannerbersama-sama untuk membuat pemindai yang dapat melakukan iterasi pada beberapa item yang sesuai dengan kueri.queriedProducts := session.Query( findQuery, &category, ).Consistency(gocql.All).IterContext(ctx).Scanner()NextGunakan fungsi danScanuntuk melakukan iterasi atas hasil kueri dan tetapkan properti dari setiap hasil ke variabel dalamqueriedProduct.for queriedProducts.Next() { var queriedProduct Product queriedProducts.Scan( &queriedProduct.id, &queriedProduct.name, &queriedProduct.category, &queriedProduct.quantity, &queriedProduct.clearance, ) // Do something here with each result }
Menjalankan kode
Jalankan aplikasi yang baru dibuat menggunakan terminal di direktori aplikasi Anda.
go run .
Membersihkan sumber daya
Sekarang, dapatkan kata sandi untuk pustaka klien yang akan digunakan guna membuat koneksi ke akun yang baru saja dibuat.
Gunakan
az cosmosdb showuntuk mendapatkan titik kontak dan nama pengguna untuk akun tersebut.az cosmosdb show \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --query "{username:name,contactPoint:documentEndpoint}"Catat nilai
contactPointdanusernameproperti dari keluaran perintah sebelumnya. Nilai properti ini adalah titik kontak dan nama pengguna yang Anda gunakan nanti dalam panduan ini untuk menyambungkan ke akun dengan pustaka.Gunakan
az cosmosdb keys listuntuk mendapatkan kunci untuk akun tersebut.az cosmosdb keys list \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --type "keys"Catat nilai
primaryMasterKeyproperti dari output perintah sebelumnya. Nilai properti ini adalah kata sandi yang Anda gunakan nanti dalam panduan ini untuk menyambungkan ke akun dengan pustaka.