Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Rozpocznij pracę z biblioteką klienta usługi Azure Cosmos DB for Apache Cassandra dla języka Go, aby przechowywać dane bez struktury i zarządzać nimi. Wykonaj kroki opisane w tym przewodniku, aby utworzyć nowe konto, zainstalować bibliotekę klienta języka Go, nawiązać połączenie z kontem, wykonać typowe operacje i wykonać zapytania dotyczące końcowych danych przykładowych.
Dokumentacja referencyjna API | Kod źródłowy biblioteki | Pakiet (Go)
Wymagania wstępne
Subskrypcja platformy Azure
- Jeśli nie masz subskrypcji Azure, przed rozpoczęciem utwórz darmowe konto.
Najnowsza wersja interfejsu wiersza polecenia platformy Azure w usłudze Azure Cloud Shell.
- Jeśli wolisz uruchamiać polecenia referencyjne CLI lokalnie, zaloguj się do Azure CLI przy użyciu polecenia
az login.
- Jeśli wolisz uruchamiać polecenia referencyjne CLI lokalnie, zaloguj się do Azure CLI przy użyciu polecenia
-
Go1.24 lub nowsze
Konfigurowanie
Najpierw skonfiguruj konto i środowisko programistyczne dla tego przewodnika. W tej sekcji przedstawiono proces tworzenia konta, uzyskiwania poświadczeń, a następnie przygotowywania środowiska deweloperskiego.
Tworzenie konta
Zacznij od utworzenia interfejsu API dla konta apache Cassandra. Po utworzeniu konta utwórz przestrzeń kluczy i zasoby tabeli.
Jeśli nie masz jeszcze docelowej grupy zasobów, użyj
az group createpolecenia , aby utworzyć nową grupę zasobów w ramach subskrypcji.az group create \ --name "<resource-group-name>" \ --location "<location>"Użyj polecenia ,
az cosmosdb createaby utworzyć nowe konto usługi Azure Cosmos DB dla bazy danych Apache Cassandra z ustawieniami domyślnymi.az cosmosdb create \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --locations "regionName=<location>" \ --capabilities "EnableCassandra"Utwórz nową przestrzeń kluczy za pomocą
az cosmosdb cassandra keyspace createo nazwiecosmicworks.az cosmosdb cassandra keyspace create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --name "cosmicworks"Utwórz nowy obiekt JSON reprezentujący schemat przy użyciu wielolinijkowego polecenia Bash. Następnie użyj
az cosmosdb cassandra table createpolecenia , aby utworzyć nową tabelę o nazwieproducts.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"
Pobieranie poświadczeń
Teraz pobierz hasło biblioteki klienta do utworzenia połączenia z niedawno utworzonym kontem.
Użyj
az cosmosdb showpolecenia , aby uzyskać punkt kontaktu i nazwę użytkownika dla konta.az cosmosdb show \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --query "{username:name,contactPoint:documentEndpoint}"Zapisz wartości właściwości
contactPointiusernamez danych wyjściowych poprzednich poleceń. Wartości tych właściwości to punkt kontaktowy i nazwa użytkownika używana w dalszej części tego przewodnika w celu nawiązania połączenia z kontem z biblioteką.Użyj
az cosmosdb keys listpolecenia, aby pobrać klucze dla konta.az cosmosdb keys list \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --type "keys"Zanotuj wartość właściwości
primaryMasterKeyz danych wyjściowych wcześniejszych poleceń. Wartość tej właściwości to hasło , którego użyjesz w dalszej części tego przewodnika, aby nawiązać połączenie z kontem z biblioteką.
Przygotowywanie środowiska projektowego
Następnie skonfiguruj środowisko deweloperskie przy użyciu nowego projektu i biblioteki klienta. Ten krok jest ostatnim wymaganiem wstępnym przed przejściem do pozostałej części tego przewodnika.
Rozpocznij w pustym katalogu.
Utwórz nowy moduł języka Go.
go mod init quickstartZaimportuj
github.com/apache/cassandra-gocql-driver/v2pakiet z Go.go get github.com/apache/cassandra-gocql-driver/v2Utwórz plik main.go .
Dodaj szablon aplikacji Go.
package main func main() { }Ważne
W pozostałych krokach tego przewodnika założono, że dodajesz swój kod w funkcji
main.
Model obiektów
| Opis | |
|---|---|
Cluster |
Reprezentuje określone połączenie z klastrem |
Session |
Jednostki, które przechowują określone połączenie z klastrem |
Przykłady kodu
Uwierzytelnianie klienta
Zacznij od uwierzytelnienia klienta przy użyciu poświadczeń zebranych wcześniej w tym przewodniku.
Otwórz plik main.go w zintegrowanym środowisku projektowym (IDE).
W funkcji
mainzaimportuj następujące pakiety wraz z pakietemgithub.com/apache/cassandra-gocql-driver/v2:contextcrypto/tls
import ( "context" "crypto/tls" "github.com/apache/cassandra-gocql-driver/v2" )Utwórz zmienne tekstowe dla poświadczeń zebranych wcześniej w tym przewodniku. Nazwij zmienne
username,passwordicontactPoint.username := "<username>" password := "<password>" contactPoint := "<contact-point>"Skonfiguruj wystąpienie typu
PasswordAuthenticatorużywając poświadczeń określonych w poprzednich krokach. Zapisz wynik w zmiennej o nazwieauthentication.authentication := gocql.PasswordAuthenticator{ Username: username, Password: password, }Skonfiguruj wystąpienie
SslOptionsz minimalną wersją protokołu Transport Layer Security (TLS) 1.2 icontactPointzmienną jako nazwę serwera docelowego. Zapisz wynik w zmiennej o nazwiesslOptions.sslOptions := &gocql.SslOptions{ Config: &tls.Config{ MinVersion: tls.VersionTLS12, ServerName: contactPoint, }, }Utwórz nową specyfikację klastra przy użyciu
NewClusteri zmiennejcontactPoint.cluster := gocql.NewCluster(contactPoint)Skonfiguruj obiekt specyfikacji klastra przy użyciu zmiennych poświadczeń i konfiguracji utworzonych w poprzednich krokach.
cluster.SslOpts = sslOptions cluster.Authenticator = authenticationSkonfiguruj pozostałą część obiektu specyfikacji klastra przy użyciu tych wartości statycznych.
cluster.Keyspace = "cosmicworks" cluster.Port = 10350 cluster.ProtoVersion = 4Utwórz nową sesję, która łączy się z klastrem przy użyciu polecenia
CreateSession.session, _ := cluster.CreateSession()Skonfiguruj sesję, aby wywołać funkcję
Closepo tym, jak funkcjamainzakończy działanie.defer session.Close()Utwórz nowy
Backgroundobiekt kontekstu i zapisz go w zmiennejctx.ctx := context.Background()
Ostrzeżenie
Pełna weryfikacja zabezpieczeń warstwy transportu (TLS) jest wyłączona w tym przewodniku, aby uprościć uwierzytelnianie. W przypadku wdrożeń produkcyjnych w pełni włącz walidację.
Aktualizuj lub dodaj dane
Następnie dodaj nowe dane do tabeli. Upserting gwarantuje, że dane są tworzone lub zastępowane odpowiednio w zależności od tego, czy te same dane już istnieją w tabeli.
Zdefiniuj nowy typ o nazwie
Productz polami odpowiadającymi tabeli utworzonej wcześniej w tym przewodniku.type Product struct { id string name string category string quantity int clearance bool }Wskazówka
W języku Go możesz utworzyć ten typ w innym pliku lub utworzyć go na końcu istniejącego pliku.
Utwórz nowy obiekt typu
Product. Zapisz obiekt w zmiennej o nazwieproduct.product := Product { id: "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", name: "Yamba Surfboard", category: "gear-surf-surfboards", quantity: 12, clearance: false, }Utwórz nową zmienną ciągu o nazwie
insertQueryz zapytaniem Języka zapytań Cassandra (CQL) w celu wstawienia nowego wiersza.insertQuery := ` INSERT INTO product (id, name, category, quantity, clearance) VALUES (?, ?, ?, ?, ?) `Użyj funkcji
QueryiExecContext, aby uruchomić zapytanie. Przekaż różne właściwości zmiennejproductjako parametry zapytania._ = session.Query( insertQuery, product.id, product.name, product.category, product.quantity, product.clearance, ).ExecContext(ctx)
Odczyt danych
Następnie odczytaj dane, które zostały wcześniej dodane lub zmodyfikowane w tabeli.
Utwórz nową zmienną ciągu o nazwie
readQueryz zapytaniem CQL, które pasuje do elementów z tym samymidpolem.readQuery := ` SELECT id, name, category, quantity, clearance FROM product WHERE id = ? LIMIT 1 `Utwórz zmienną ciągu o nazwie
ido tej samej wartości co produkt utworzony wcześniej w tym przewodniku.id := "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"Utwórz inną zmienną o nazwie
matchedProduct, aby zapisać wynik tej operacji.var matchedProduct ProductUżyj funkcji
Query,Consistency,IterContextiScanrazem, aby znaleźć pojedynczy element zgodny z zapytaniem i przypisać jego właściwości do zmiennejmatchedProduct.session.Query( readQuery, &id, ).Consistency(gocql.One).IterContext(ctx).Scan( &matchedProduct.id, &matchedProduct.name, &matchedProduct.category, &matchedProduct.quantity, &matchedProduct.clearance, )
Wykonywanie zapytań o dane
Na koniec użyj zapytania, aby znaleźć wszystkie dane zgodne z określonym filtrem w tabeli.
Utwórz zmienne ciągu o nazwie
findQueryicategoryza pomocą zapytania CQL i wymaganego parametru.findQuery := ` SELECT id, name, category, quantity, clearance FROM product WHERE category = ? ALLOW FILTERING ` category := "gear-surf-surfboards"Użyj funkcji
Query,Consistency,IterContextiScannerrazem, aby utworzyć skaner, który potrafi iterować przez wiele elementów, które pasują do zapytania.queriedProducts := session.Query( findQuery, &category, ).Consistency(gocql.All).IterContext(ctx).Scanner()Użyj funkcji
NextiScan, aby iterować po wynikach zapytania i przypisywać właściwości każdego wyniku do zmiennej wewnętrznejqueriedProduct.for queriedProducts.Next() { var queriedProduct Product queriedProducts.Scan( &queriedProduct.id, &queriedProduct.name, &queriedProduct.category, &queriedProduct.quantity, &queriedProduct.clearance, ) // Do something here with each result }
Uruchamianie kodu
Uruchom nowo utworzoną aplikację przy użyciu terminalu w katalogu aplikacji.
go run .
Uprzątnij zasoby
Teraz pobierz hasło biblioteki klienta do utworzenia połączenia z niedawno utworzonym kontem.
Użyj
az cosmosdb showpolecenia , aby uzyskać punkt kontaktu i nazwę użytkownika dla konta.az cosmosdb show \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --query "{username:name,contactPoint:documentEndpoint}"Zapisz wartości właściwości
contactPointiusernamez danych wyjściowych poprzednich poleceń. Wartości tych właściwości to punkt kontaktowy i nazwa użytkownika używana w dalszej części tego przewodnika w celu nawiązania połączenia z kontem z biblioteką.Użyj
az cosmosdb keys listpolecenia, aby pobrać klucze dla konta.az cosmosdb keys list \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --type "keys"Zanotuj wartość właściwości
primaryMasterKeyz danych wyjściowych wcześniejszych poleceń. Wartość tej właściwości to hasło , którego użyjesz w dalszej części tego przewodnika, aby nawiązać połączenie z kontem z biblioteką.