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 Java, aby przechowywać dane bez struktury i zarządzać nimi. Wykonaj kroki opisane w tym przewodniku, aby utworzyć nowe konto, zainstalować bibliotekę klienta Java, 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 (Maven)
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
- Środowisko Java 21 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.
Wygeneruj nowy projekt konsoli Java przy użyciu narzędzia Maven.
mvn archetype:generate -DgroupId=quickstart -DartifactId=console -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=falseZaimportuj pakiet
java-driver-corez Mavena. Dodaj tę sekcję do pliku pom.xml .<dependency> <groupId>org.apache.cassandra</groupId> <artifactId>java-driver-core</artifactId> <version>[4.,)</version> </dependency>Otwórz plik /console/src/main/java/quickstart/App.java .
Obserwuj istniejący szablon aplikacji Java.
package quickstart; /** * Hello world! * */ public class App { public static void main( String[] args ) { System.out.println( "Hello World!" ); } }Usuń komentarze i dane wyjściowe konsoli ze szablonu. Ten blok kodu jest punktem wyjścia dla pozostałej części tego przewodnika.
package quickstart; public class App { public static void main(String[] args) { } }Zaimportuj
java.security.NoSuchAlgorithmExceptionprzestrzeń nazw.import java.security.NoSuchAlgorithmException;Zaktualizuj sygnaturę
mainmetody, aby wskazać, że może zgłosićNoSuchAlgorithmExceptionwyjątek.public static void main(String[] args) throws NoSuchAlgorithmException { }Ważne
W pozostałych krokach w tym przewodniku założono, że dodajesz kod w metodzie
main.Skompiluj projekt.
mvn compile
Model obiektów
| Opis | |
|---|---|
CqlSession |
Reprezentuje określone połączenie z klastrem |
PreparedStatement |
Reprezentuje wstępnie skompilowaną instrukcję CQL, która może być wykonywana wiele razy wydajnie |
BoundStatement |
Reprezentuje przygotowane zapytanie z przypisanymi parametrami |
Row |
Reprezentuje pojedynczy wiersz wyniku zapytania |
Przykłady kodu
Uwierzytelnianie klienta
Zacznij od uwierzytelnienia klienta przy użyciu poświadczeń zebranych wcześniej w tym przewodniku.
Otwórz plik /console/src/main/java/quickstart/App.java w zintegrowanym środowisku projektowym (IDE).
Zaimportuj następujące typy:
java.net.InetSocketAddressjavax.net.ssl.SSLContextcom.datastax.oss.driver.api.core.CqlIdentifiercom.datastax.oss.driver.api.core.CqlSessioncom.datastax.oss.driver.api.core.cql.BoundStatementcom.datastax.oss.driver.api.core.cql.PreparedStatementcom.datastax.oss.driver.api.core.cql.ResultSetcom.datastax.oss.driver.api.core.cql.Row
import java.net.InetSocketAddress; import javax.net.ssl.SSLContext; import com.datastax.oss.driver.api.core.CqlIdentifier; import com.datastax.oss.driver.api.core.CqlSession; import com.datastax.oss.driver.api.core.cql.BoundStatement; import com.datastax.oss.driver.api.core.cql.PreparedStatement; import com.datastax.oss.driver.api.core.cql.ResultSet; import com.datastax.oss.driver.api.core.cql.Row;Utwórz zmienne tekstowe dla poświadczeń zebranych wcześniej w tym przewodniku. Nazwij zmienne
username,passwordicontactPoint. Utwórz również zmienną ciągu o nazwieregiondla lokalnego centrum danych.String username = "<username>"; String password = "<password>"; String contactPoint = "<contact-point>";Utwórz kolejną zmienną typu string dla regionu, w którym utworzyłeś swoje konto Azure Cosmos DB dla Apache Cassandra. Nadaj tej zmiennej
regionnazwę .String region = "<region>";SSLContextUtwórz obiekt, aby upewnić się, że używasz protokołu TLS (Transport Layer Security).SSLContext sslContext = SSLContext.getDefault();Utwórz nowy
CqlSessionobiekt przy użyciu zmiennych poświadczeń i konfiguracji utworzonych w poprzednich krokach. Ustaw punkt kontaktowy, lokalne centrum danych, poświadczenia uwierzytelniania, kluczową przestrzeń oraz kontekst protokołu Transport Layer Security (TLS).CqlSession session = CqlSession.builder() .addContactPoint(new InetSocketAddress(contactPoint, 10350)) .withLocalDatacenter(region) .withAuthCredentials(username, password) .withKeyspace(CqlIdentifier.fromCql("cosmicworks")) .withSslContext(sslContext) .build();
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 nową klasę o nazwie
Productz polami odpowiadającymi tabeli utworzonej wcześniej w tym przewodniku.class Product { public String id; public String name; public String category; public int quantity; public boolean clearance; public Product(String id, String name, String category, int quantity, boolean clearance) { this.id = id; this.name = name; this.category = category; this.quantity = quantity; this.clearance = clearance; } @Override public String toString() { return String.format("Product{id='%s', name='%s', category='%s', quantity=%d, clearance=%b}", id, name, category, quantity, clearance); } }Wskazówka
W języku Java 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 = new Product( "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", "Yamba Surfboard", "gear-surf-surfboards", 12, false );Utwórz nową zmienną ciągu o nazwie
insertQueryz zapytaniem Języka zapytań Cassandra (CQL) w celu wstawienia nowego wiersza.String insertQuery = "INSERT INTO product (id, name, category, quantity, clearance) VALUES (?, ?, ?, ?, ?)";Przygotuj zapytanie insert i zwiąż właściwości produktu jako parametry.
PreparedStatement insertStmt = session.prepare(insertQuery); BoundStatement boundInsert = insertStmt.bind( product.id, product.name, product.category, product.quantity, product.clearance );Wstaw lub zaktualizuj produkt, wykonując powiązaną instrukcję.
session.execute(boundInsert);
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.String readQuery = "SELECT * 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.String id = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb";Przygotuj wyrażenie i powiąż pole
idproduktu jako parametr.PreparedStatement readStmt = session.prepare(readQuery); BoundStatement boundRead = readStmt.bind(id);Wykonaj instrukcję bound i zapisz wynik w zmiennej o nazwie
readResult.ResultSet readResult = session.execute(boundRead);Pobierz pierwszy wiersz z zestawu wyników i, jeśli jest on odnaleziony, przypisz go do obiektu
Product.Row row = readResult.one(); Product matchedProduct = new Product( row.getString("id"), row.getString("name"), row.getString("category"), row.getInt("quantity"), row.getBoolean("clearance") );
Wykonywanie zapytań o dane
Teraz użyj zapytania, aby znaleźć wszystkie dane zgodne z określonym filtrem w tabeli.
Utwórz nową zmienną ciągu o nazwie
findQueryz zapytaniem CQL, które pasuje do elementów z tym samymcategorypolem.String findQuery = "SELECT * FROM product WHERE category = ? ALLOW FILTERING";Utwórz zmienną ciągu o nazwie
ido tej samej wartości co produkt utworzony wcześniej w tym przewodniku.String category = "gear-surf-surfboards";Przygotuj instrukcję i powiąż kategorię produktu jako parametr.
PreparedStatement findStmt = session.prepare(findQuery); BoundStatement boundFind = findStmt.bind(category);Wykonaj instrukcję bound i zapisz wynik w zmiennej o nazwie
findResults.ResultSet results = session.execute(boundFind);Iteruj po wynikach zapytania i przemapuj każdy wiersz na obiekt
Product.for (Row result : results) { Product queriedProduct = new Product( result.getString("id"), result.getString("name"), result.getString("category"), result.getInt("quantity"), result.getBoolean("clearance") ); // Do something here with each result }
Zamknij sesję
W języku Java musisz zamknąć sesję po zakończeniu pracy z dowolnymi zapytaniami i operacjami.
session.close();
Uruchamianie kodu
Uruchom nowo utworzoną aplikację przy użyciu terminalu w katalogu aplikacji.
mvn compile
mvn exec:java -Dexec.mainClass="quickstart.App"
Wskazówka
Upewnij się, że to polecenie jest uruchamiane w ścieżce /console utworzonej w tym przewodniku.
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ą.