Dela via


Snabbstart: Azure Cosmos DB för Apache Cassandra-klientbiblioteket för Java

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 login av kommandot .
  • 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.

  1. Om du inte redan har en målresursgrupp använder du az group create kommandot för att skapa en ny resursgrupp i din prenumeration.

    az group create \
        --name "<resource-group-name>" \
        --location "<location>"
    
  2. az cosmosdb create Anvä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"
    
  3. Skapa ett nytt keyspace med az cosmosdb cassandra keyspace create namnet cosmicworks.

    az cosmosdb cassandra keyspace create \
        --resource-group "<resource-group-name>" \
        --account-name "<account-name>" \
        --name "cosmicworks"
    
  4. Skapa ett nytt JSON-objekt som representerar schemat med hjälp av ett Bash-kommando med flera rader. az cosmosdb cassandra table create Anvä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.

  1. Använd az cosmosdb show fö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}"
    
  2. Registrera värdet för contactPoint egenskaperna och username frå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.

  3. Använd az cosmosdb keys list för att hämta nycklarna för kontot.

    az cosmosdb keys list \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --type "keys"
    
  4. Registrera värdet för primaryMasterKey egenskapen 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.

  1. Börja i en tom katalog.

  2. Generera ett nytt Java-konsolprojekt med maven.

    mvn archetype:generate -DgroupId=quickstart -DartifactId=console -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
    
  3. Importera paketet java-driver-core frå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>
    
  4. Öppna filen /console/src/main/java/quickstart/App.java .

  5. 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!" );
        }
    }
    
  6. 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)
        {
        }
    }
    
  7. Importera java.security.NoSuchAlgorithmException-namnområdet.

    import java.security.NoSuchAlgorithmException;
    
  8. Uppdatera metodsignaturen main för att indikera att den kan utlösa NoSuchAlgorithmException undantaget.

    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 main metoden.

  9. 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.

  1. Öppna filen /console/src/main/java/quickstart/App.java i din integrerade utvecklingsmiljö (IDE).

  2. 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;
    
  3. Skapa strängvariabler för de autentiseringsuppgifter som samlats in tidigare i den här guiden. Ge variablerna username, password och contactPoint namn. Skapa även en strängvariabel med namnet region för det lokala datacentret.

    String username = "<username>";
    String password = "<password>";
    String contactPoint = "<contact-point>";
    
  4. Skapa en annan strängvariabel för den region där du skapade ditt Azure Cosmos DB för Apache Cassandra-kontot. Ge variabeln region namnet.

    String region = "<region>";
    
  5. Skapa ett SSLContext objekt för att säkerställa att du använder TLS-protokollet (Transport Layer Security).

    SSLContext sslContext = SSLContext.getDefault();
    
  6. Skapa ett nytt CqlSession objekt 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.

  1. Definiera en ny klass med namnet Product med 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.

  2. 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
    );
    
  3. Skapa en ny strängvariabel med namnet insertQuery med frågan Cassandra Query Language (CQL) för att infoga en ny rad.

    String insertQuery = "INSERT INTO product (id, name, category, quantity, clearance) VALUES (?, ?, ?, ?, ?)";
    
  4. 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
    );
    
  5. 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.

  1. Skapa en ny strängvariabel med namnet readQuery med en CQL-fråga som matchar objekt med samma id fält.

    String readQuery = "SELECT * FROM product WHERE id = ? LIMIT 1";
    
  2. Skapa en strängvariabel id med namnet med samma värde som den produkt som skapades tidigare i den här guiden.

    String id = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb";
    
  3. Förbered uttalandet och bind produktens id-fält som en parameter.

    PreparedStatement readStmt = session.prepare(readQuery);
    BoundStatement boundRead = readStmt.bind(id);
    
  4. Kör bound-instruktionen och lagra resultatet i en variabel med namnet readResult.

    ResultSet readResult = session.execute(boundRead);
    
  5. Hämta den första raden från resultatuppsättningen och mappa den till ett Product objekt 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.

  1. Skapa en ny strängvariabel med namnet findQuery med en CQL-fråga som matchar objekt med samma category fält.

    String findQuery = "SELECT * FROM product WHERE category = ? ALLOW FILTERING";
    
  2. Skapa en strängvariabel id med namnet med samma värde som den produkt som skapades tidigare i den här guiden.

    String category = "gear-surf-surfboards";
    
  3. Förbered instruktionen och sätt produktkategorin som en parameter.

    PreparedStatement findStmt = session.prepare(findQuery);
    BoundStatement boundFind = findStmt.bind(category);
    
  4. Kör bound-instruktionen och lagra resultatet i en variabel med namnet findResults.

    ResultSet results = session.execute(boundFind);
    
  5. Iterera över frågeresultaten och mappa varje rad till ett Product objekt.

    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.

  1. Använd az cosmosdb show fö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}"
    
  2. Registrera värdet för contactPoint egenskaperna och username frå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.

  3. Använd az cosmosdb keys list för att hämta nycklarna för kontot.

    az cosmosdb keys list \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --type "keys"
    
  4. Registrera värdet för primaryMasterKey egenskapen 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.

Nästa steg