Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Kom igång med Azure Cosmos DB-klientbiblioteket för Apache Cassandra i Java för att lagra, hantera och ställa frågor mot ostrukturerade data. Följ stegen i den här guiden för att skapa ett nytt konto, installera ett Java-klientbibliotek, ansluta till kontot, utföra vanliga åtgärder och köra frågor mot dina slutliga exempeldata.
API-referensdokumentation | Bibliotekets källkod | Paket (Maven)
Förutsättningar
- En prenumeration på Azure - Om du inte har en Azure-prenumeration, skapa ett gratis konto innan du börjar.
 
- Den senaste versionen av Azure CLI i Azure Cloud Shell. - Om du föredrar att köra CLI-referenskommandon lokalt loggar du in på Azure CLI med hjälp az loginav kommandot .
 
- Om du föredrar att köra CLI-referenskommandon lokalt loggar du in på Azure CLI med hjälp 
- Java 21 eller senare
Förbereda
Konfigurera först konto- och utvecklingsmiljön för den här guiden. Det här avsnittet beskriver hur du skapar ett konto, hämtar dess autentiseringsuppgifter och sedan förbereder utvecklingsmiljön.
Skapa ett konto
Börja med att skapa ett API för Apache Cassandra-konto. När kontot har skapats skapar du nyckelområdet och tabellresurserna.
- Om du inte redan har en målresursgrupp använder du - az group createkommandot för att skapa en ny resursgrupp i din prenumeration.- az group create \ --name "<resource-group-name>" \ --location "<location>"
- az cosmosdb createAnvänd kommandot för att skapa ett nytt Azure Cosmos DB för Apache Cassandra-konto med standardinställningar.- az cosmosdb create \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --locations "regionName=<location>" \ --capabilities "EnableCassandra"
- Skapa ett nytt keyspace med - az cosmosdb cassandra keyspace createnamnet- cosmicworks.- az cosmosdb cassandra keyspace create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --name "cosmicworks"
- Skapa ett nytt JSON-objekt som representerar schemat med hjälp av ett Bash-kommando med flera rader. - az cosmosdb cassandra table createAnvänd sedan kommandot för att skapa en ny tabell med namnet- products.- 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"
Hämta autentiseringsuppgifter
Hämta nu lösenordet för klientbiblioteket som ska användas för att skapa en anslutning till det nyligen skapade kontot.
- Använd - az cosmosdb showför att hämta kontaktpunkten och användarnamnet för kontot.- az cosmosdb show \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --query "{username:name,contactPoint:documentEndpoint}"
- Registrera värdet för - contactPointegenskaperna och- usernamefrån föregående kommandons utdata. Dessa egenskapers värden är kontaktpunkten och användarnamnet som du använder senare i den här guiden för att ansluta till kontot med biblioteket.
- Använd - az cosmosdb keys listför att hämta nycklarna för kontot.- az cosmosdb keys list \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --type "keys"
- Registrera värdet för - primaryMasterKeyegenskapen från föregående kommandons utdata. Den här egenskapens värde är det lösenord som du använder senare i den här guiden för att ansluta till kontot med biblioteket.
Förbereda utvecklingsmiljön
Konfigurera sedan utvecklingsmiljön med ett nytt projekt och klientbiblioteket. Det här steget är det sista nödvändiga kravet innan du går vidare till resten av den här guiden.
- Börja i en tom katalog. 
- Generera ett nytt Java-konsolprojekt med maven. - mvn archetype:generate -DgroupId=quickstart -DartifactId=console -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
- Importera paketet - java-driver-corefrån Maven. Lägg till det här avsnittet i dinpom.xml-fil .- <dependency> <groupId>org.apache.cassandra</groupId> <artifactId>java-driver-core</artifactId> <version>[4.,)</version> </dependency>
- Öppna filen /console/src/main/java/quickstart/App.java . 
- Observera den befintliga standardkodmallen för Java-program. - package quickstart; /** * Hello world! * */ public class App { public static void main( String[] args ) { System.out.println( "Hello World!" ); } }
- Ta bort kommentarer och konsolutskrift från mallkoden. Det här kodblocket är startpunkten för resten av den här guiden. - package quickstart; public class App { public static void main(String[] args) { } }
- Importera - java.security.NoSuchAlgorithmException-namnområdet.- import java.security.NoSuchAlgorithmException;
- Uppdatera metodsignaturen - mainför att indikera att den kan utlösa- NoSuchAlgorithmExceptionundantaget.- public static void main(String[] args) throws NoSuchAlgorithmException { }- Viktigt! - De återstående stegen i den här guiden förutsätter att du lägger till din kod i - mainmetoden.
- Skapa projektet. - mvn compile
Objektmodell
| Beskrivning | |
|---|---|
| CqlSession | Representerar en specifik anslutning till ett kluster | 
| PreparedStatement | Representerar en fördefinierad CQL-instruktion som kan köras flera gånger effektivt | 
| BoundStatement | Representerar en förberedd instruktion med bundna parametrar | 
| Row | Representerar en enskild rad i ett frågeresultat | 
Kodexempel
Autentisera klient
Börja med att autentisera klienten med de autentiseringsuppgifter som samlats in tidigare i den här guiden.
- Öppna filen /console/src/main/java/quickstart/App.java i din integrerade utvecklingsmiljö (IDE). 
- Importera följande typer: - java.net.InetSocketAddress
- javax.net.ssl.SSLContext
- com.datastax.oss.driver.api.core.CqlIdentifier
- com.datastax.oss.driver.api.core.CqlSession
- com.datastax.oss.driver.api.core.cql.BoundStatement
- com.datastax.oss.driver.api.core.cql.PreparedStatement
- com.datastax.oss.driver.api.core.cql.ResultSet
- com.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;
- Skapa strängvariabler för de autentiseringsuppgifter som samlats in tidigare i den här guiden. Ge variablerna - username,- passwordoch- contactPointnamn. Skapa även en strängvariabel med namnet- regionför det lokala datacentret.- String username = "<username>"; String password = "<password>"; String contactPoint = "<contact-point>";
- Skapa en annan strängvariabel för den region där du skapade ditt Azure Cosmos DB för Apache Cassandra-kontot. Ge variabeln - regionnamnet.- String region = "<region>";
- Skapa ett - SSLContextobjekt för att säkerställa att du använder TLS-protokollet (Transport Layer Security).- SSLContext sslContext = SSLContext.getDefault();
- Skapa ett nytt - CqlSessionobjekt med hjälp av variablerna för autentiseringsuppgifter och konfiguration som skapades i föregående steg. Ange kontexten kontaktpunkt, lokalt datacenter, autentiseringsuppgifter, nyckelrymd och TLS (Transport Layer Security).- CqlSession session = CqlSession.builder() .addContactPoint(new InetSocketAddress(contactPoint, 10350)) .withLocalDatacenter(region) .withAuthCredentials(username, password) .withKeyspace(CqlIdentifier.fromCql("cosmicworks")) .withSslContext(sslContext) .build();
Varning
Fullständig TLS-validering (Transport Layer Security) är inaktiverad i den här guiden för att förenkla autentiseringen. Aktivera validering fullt ut för produktionsdistributioner.
Infoga eller uppdatera data
Därefter ökar du nya data till en tabell. Upserting säkerställer att data skapas eller ersätts på lämpligt sätt beroende på om samma data redan finns i tabellen.
- Definiera en ny klass med namnet - Productmed fält som motsvarar tabellen som skapades tidigare i den här guiden.- 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); } }- Tips/Råd - I Java kan du skapa den här typen i en annan fil eller skapa den i slutet av den befintliga filen. 
- Skapa ett nytt objekt av typen - Product. Lagra objektet i en variabel med namnet- product.- Product product = new Product( "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", "Yamba Surfboard", "gear-surf-surfboards", 12, false );
- Skapa en ny strängvariabel med namnet - insertQuerymed frågan Cassandra Query Language (CQL) för att infoga en ny rad.- String insertQuery = "INSERT INTO product (id, name, category, quantity, clearance) VALUES (?, ?, ?, ?, ?)";
- Förbered insert-instruktionen och bind produktegenskaperna som parametrar. - PreparedStatement insertStmt = session.prepare(insertQuery); BoundStatement boundInsert = insertStmt.bind( product.id, product.name, product.category, product.quantity, product.clearance );
- Utöka produkten genom att köra den bundna instruktionen. - session.execute(boundInsert);
Läs data
Läs sedan data som tidigare har laddats upp i tabellen.
- Skapa en ny strängvariabel med namnet - readQuerymed en CQL-fråga som matchar objekt med samma- idfält.- String readQuery = "SELECT * FROM product WHERE id = ? LIMIT 1";
- Skapa en strängvariabel - idmed namnet med samma värde som den produkt som skapades tidigare i den här guiden.- String id = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb";
- Förbered uttalandet och bind produktens - id-fält som en parameter.- PreparedStatement readStmt = session.prepare(readQuery); BoundStatement boundRead = readStmt.bind(id);
- Kör bound-instruktionen och lagra resultatet i en variabel med namnet - readResult.- ResultSet readResult = session.execute(boundRead);
- Hämta den första raden från resultatuppsättningen och mappa den till ett - Productobjekt om det hittas.- Row row = readResult.one(); Product matchedProduct = new Product( row.getString("id"), row.getString("name"), row.getString("category"), row.getInt("quantity"), row.getBoolean("clearance") );
Fråga efter data
Använd nu en fråga för att hitta alla data som matchar ett specifikt filter i tabellen.
- Skapa en ny strängvariabel med namnet - findQuerymed en CQL-fråga som matchar objekt med samma- categoryfält.- String findQuery = "SELECT * FROM product WHERE category = ? ALLOW FILTERING";
- Skapa en strängvariabel - idmed namnet med samma värde som den produkt som skapades tidigare i den här guiden.- String category = "gear-surf-surfboards";
- Förbered instruktionen och sätt produktkategorin som en parameter. - PreparedStatement findStmt = session.prepare(findQuery); BoundStatement boundFind = findStmt.bind(category);
- Kör bound-instruktionen och lagra resultatet i en variabel med namnet - findResults.- ResultSet results = session.execute(boundFind);
- Iterera över frågeresultaten och mappa varje rad till ett - Productobjekt.- 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 }
Stäng session
I Java måste du stänga sessionen när du är klar med frågor och åtgärder.
session.close();
Kör koden
Kör det nyligen skapade programmet med hjälp av en terminal i programkatalogen.
mvn compile
mvn exec:java -Dexec.mainClass="quickstart.App"
Tips/Råd
Kontrollera att du kör det här kommandot inom sökvägen /console som skapats i den här guiden.
Rensa resurser
Hämta nu lösenordet för klientbiblioteket som ska användas för att skapa en anslutning till det nyligen skapade kontot.
- Använd - az cosmosdb showför att hämta kontaktpunkten och användarnamnet för kontot.- az cosmosdb show \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --query "{username:name,contactPoint:documentEndpoint}"
- Registrera värdet för - contactPointegenskaperna och- usernamefrån föregående kommandons utdata. Dessa egenskapers värden är kontaktpunkten och användarnamnet som du använder senare i den här guiden för att ansluta till kontot med biblioteket.
- Använd - az cosmosdb keys listför att hämta nycklarna för kontot.- az cosmosdb keys list \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --type "keys"
- Registrera värdet för - primaryMasterKeyegenskapen från föregående kommandons utdata. Den här egenskapens värde är det lösenord som du använder senare i den här guiden för att ansluta till kontot med biblioteket.