Delen via


Quickstart: Azure Cosmos DB voor Apache Cassandra-clientbibliotheek voor Java

Ga aan de slag met de Azure Cosmos DB voor Apache Cassandra-clientbibliotheek voor Java om ongestructureerde gegevens op te slaan, te beheren en er query's op uit te voeren. Volg de stappen in deze handleiding om een nieuw account te maken, een Java-clientbibliotheek te installeren, verbinding te maken met het account, algemene bewerkingen uit te voeren en uw uiteindelijke voorbeeldgegevens op te vragen.

API-referentiedocumentatie | Bibliotheekbroncode | Pakket (Maven)

Vereiste voorwaarden

  • Een Azure-abonnement

    • Als je geen Azure-abonnement hebt, maak dan een gratis account aan voordat je begint.
  • De nieuwste versie van de Azure CLI in Azure Cloud Shell.

    • Als u liever CLI-referentieopdrachten lokaal uitvoert, meldt u zich aan bij de Azure CLI met behulp van de az login opdracht.
  • Java 21 of hoger

Installeren

Stel eerst de account- en ontwikkelomgeving voor deze handleiding in. In deze sectie wordt u begeleid bij het maken van een account, het verkrijgen van de referenties en het voorbereiden van uw ontwikkelomgeving.

Een account maken

Begin met het maken van een API voor een Apache Cassandra-account. Zodra het account is gemaakt, maakt u de keyspace- en tabelbronnen.

  1. Als u nog geen doelresourcegroep hebt, gebruikt u de az group create opdracht om een nieuwe resourcegroep in uw abonnement te maken.

    az group create \
        --name "<resource-group-name>" \
        --location "<location>"
    
  2. Gebruik de az cosmosdb create opdracht om een nieuw Azure Cosmos DB voor Apache Cassandra-account te maken met standaardinstellingen.

    az cosmosdb create \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --locations "regionName=<location>" \
        --capabilities "EnableCassandra"
    
  3. Maak een nieuwe keyspace met az cosmosdb cassandra keyspace create en noem deze cosmicworks.

    az cosmosdb cassandra keyspace create \
        --resource-group "<resource-group-name>" \
        --account-name "<account-name>" \
        --name "cosmicworks"
    
  4. Maak een nieuw JSON-object om uw schema weer te geven met behulp van een Bash-opdracht met meerdere regels. Gebruik vervolgens de opdracht om een nieuwe tabel met de az cosmosdb cassandra table create naam productste maken.

    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"
    

Referenties ophalen

Haal nu het wachtwoord op dat de clientbibliotheek moet gebruiken om een verbinding te maken met het onlangs gemaakte account.

  1. Gebruik az cosmosdb show dit om het contactpunt en de gebruikersnaam voor het account op te halen.

    az cosmosdb show \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --query "{username:name,contactPoint:documentEndpoint}"
    
  2. Noteer de waarde van de contactPoint en username eigenschappen uit de uitvoer van de vorige opdrachten. De waarden van deze eigenschappen zijn het contactpunt en de gebruikersnaam die u verderop in deze handleiding gebruikt om verbinding te maken met het account met de bibliotheek.

  3. Gebruik az cosmosdb keys list om de sleutels op te halen voor het account.

    az cosmosdb keys list \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --type "keys"
    
  4. Noteer de waarde van de primaryMasterKey eigenschap uit de uitvoer van de vorige opdrachten. De waarde van deze eigenschap is het wachtwoord dat u verderop in deze handleiding gebruikt om verbinding te maken met het account met de bibliotheek.

Ontwikkelomgeving voorbereiden

Configureer vervolgens uw ontwikkelomgeving met een nieuw project en de clientbibliotheek. Deze stap is het laatste vereiste voordat u verdergaat met de rest van deze handleiding.

  1. Begin in een lege map.

  2. Genereer een nieuw Java-consoleproject met behulp van Maven.

    mvn archetype:generate -DgroupId=quickstart -DartifactId=console -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
    
  3. Importeer het java-driver-core pakket uit Maven. Voeg deze sectie toe aan uw pom.xml-bestand .

    <dependency>
      <groupId>org.apache.cassandra</groupId>
      <artifactId>java-driver-core</artifactId>
      <version>[4.,)</version>
    </dependency>
    
  4. Open het bestand /console/src/main/java/quickstart/App.java .

  5. Bekijk het bestaande sjabloon voor Java-toepassingen.

    package quickstart;
    
    /**
     * Hello world!
     *
     */
    public class App 
    {
        public static void main( String[] args )
        {
            System.out.println( "Hello World!" );
        }
    }
    
  6. Verwijder de opmerkingen en console-uitvoer van de sjablooncode. Dit codeblok is het startpunt voor de rest van deze handleiding.

    package quickstart;
    
    public class App 
    {
        public static void main(String[] args)
        {
        }
    }
    
  7. Importeer de java.security.NoSuchAlgorithmException naamruimte.

    import java.security.NoSuchAlgorithmException;
    
  8. Werk de main methodehandtekening bij om aan te geven dat deze de NoSuchAlgorithmException uitzondering kan genereren.

    public static void main(String[] args) throws NoSuchAlgorithmException
    {    
    }
    

    Belangrijk

    In de resterende stappen in deze handleiding wordt ervan uitgegaan dat u uw code toevoegt binnen de main methode.

  9. Bouw het project.

    mvn compile
    

Objectmodel

Beschrijving
CqlSession Vertegenwoordigt een specifieke verbinding met een cluster
PreparedStatement Vertegenwoordigt een vooraf gecompileerde CQL-instructie die meerdere keren efficiënt kan worden uitgevoerd
BoundStatement Vertegenwoordigt een voorbereide instructie met gebonden parameters
Row Vertegenwoordigt één rij van een queryresultaat

Codevoorbeelden

Client verifiëren

Begin met het authentificeren van de client met behulp van de inloggegevens die eerder in deze handleiding zijn verzameld.

  1. Open het bestand /console/src/main/java/quickstart/App.java in uw IDE (Integrated Development Environment).

  2. Importeer de volgende typen:

    • 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. Maak stringvariabelen voor de in deze handleiding eerder verzamelde inloggegevens. Geef de variabelen usernameeen naam en passwordcontactPoint. Maak ook een tekenreeksvariabele met de naam region voor het lokale datacenter.

    String username = "<username>";
    String password = "<password>";
    String contactPoint = "<contact-point>";
    
  4. Maak een andere tekenreeksvariabele voor de regio waar u uw Azure Cosmos DB voor Apache Cassandra-account hebt gemaakt. Geef deze variabele regioneen naam.

    String region = "<region>";
    
  5. Maak een SSLContext object om ervoor te zorgen dat u het TLS-protocol (Transport Layer Security) gebruikt.

    SSLContext sslContext = SSLContext.getDefault();
    
  6. Maak een nieuw CqlSession object met behulp van de referenties en configuratievariabelen die in de vorige stappen zijn gemaakt. Stel het contactpunt, het lokale datacenter, verificatiereferenties, keyspace en TLS-context (Transport Layer Security) in.

    CqlSession session = CqlSession.builder()
        .addContactPoint(new InetSocketAddress(contactPoint, 10350))
        .withLocalDatacenter(region)
        .withAuthCredentials(username, password)
        .withKeyspace(CqlIdentifier.fromCql("cosmicworks"))
        .withSslContext(sslContext)
        .build();
    

Waarschuwing

Volledige TLS-validatie (Transport Layer Security) is uitgeschakeld in deze handleiding om verificatie te vereenvoudigen. Voor productie-implementaties schakelt u validatie volledig in.

Gegevens bijwerken of toevoegen

Vervolgens worden nieuwe gegevens in een tabel geplaatst. Upserting zorgt ervoor dat de gegevens op de juiste wijze worden gemaakt of vervangen, afhankelijk van of dezelfde gegevens al in de tabel aanwezig zijn.

  1. Definieer een nieuwe klasse met de naam Product velden die overeenkomen met de tabel die eerder in deze handleiding is gemaakt.

    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);
        }
    }
    

    Aanbeveling

    In Java kunt u dit type in een ander bestand maken of maken aan het einde van het bestaande bestand.

  2. Maak een nieuw object van het type Product. Sla het object op in een variabele met de naam product.

    Product product = new Product(
        "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
        "Yamba Surfboard",
        "gear-surf-surfboards",
        12,
        false
    );
    
  3. Maak een nieuwe tekenreeksvariabele insertQuery met de CQL-query (Cassandra Query Language) voor het invoegen van een nieuwe rij.

    String insertQuery = "INSERT INTO product (id, name, category, quantity, clearance) VALUES (?, ?, ?, ?, ?)";
    
  4. Bereid de invoeginstructie voor en bind de producteigenschappen als parameters.

    PreparedStatement insertStmt = session.prepare(insertQuery);
    BoundStatement boundInsert = insertStmt.bind(
        product.id,
        product.name,
        product.category,
        product.quantity,
        product.clearance
    );
    
  5. Upsert het product door de gebonden opdracht uit te voeren.

    session.execute(boundInsert);
    

Gegevens lezen

Lees vervolgens gegevens die eerder in de tabel zijn geplaatst.

  1. Maak een nieuwe tekenreeksvariabele genaamd readQuery, met een CQL-query die overeenkomt met items met hetzelfde id-veld.

    String readQuery = "SELECT * FROM product WHERE id = ? LIMIT 1";
    
  2. Maak een tekenreeksvariabele id met dezelfde waarde als het product dat eerder in deze handleiding is gemaakt.

    String id = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb";
    
  3. Bereid de verklaring voor en bind het id veld van het product als een parameter.

    PreparedStatement readStmt = session.prepare(readQuery);
    BoundStatement boundRead = readStmt.bind(id);
    
  4. Voer de afhankelijke instructie uit en sla het resultaat op in een variabele met de naam readResult.

    ResultSet readResult = session.execute(boundRead);
    
  5. Haal de eerste rij op uit de resultatenset en wijs deze toe aan een Product object als deze wordt gevonden.

    Row row = readResult.one();
    Product matchedProduct = new Product(
        row.getString("id"),
        row.getString("name"),
        row.getString("category"),
        row.getInt("quantity"),
        row.getBoolean("clearance")
    );
    

Gegevens opvragen

Gebruik nu een query om alle gegevens te vinden die overeenkomen met een specifiek filter in de tabel.

  1. Maak een nieuwe tekenreeksvariabele genaamd findQuery, met een CQL-query die overeenkomt met items met hetzelfde category-veld.

    String findQuery = "SELECT * FROM product WHERE category = ? ALLOW FILTERING";
    
  2. Maak een tekenreeksvariabele id met dezelfde waarde als het product dat eerder in deze handleiding is gemaakt.

    String category = "gear-surf-surfboards";
    
  3. Bereid de verklaring voor en koppel de productcategorie als parameter.

    PreparedStatement findStmt = session.prepare(findQuery);
    BoundStatement boundFind = findStmt.bind(category);
    
  4. Voer de afhankelijke instructie uit en sla het resultaat op in een variabele met de naam findResults.

    ResultSet results = session.execute(boundFind);
    
  5. De queryresultaten doorlopen en elke rij toewijzen aan een Product object.

    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
    }
    

Sessie sluiten

In Java moet u de sessie sluiten nadat u klaar bent met query's en bewerkingen.

session.close();

De code uitvoeren

Voer de zojuist gemaakte toepassing uit met behulp van een terminal in uw toepassingsmap.

mvn compile
mvn exec:java -Dexec.mainClass="quickstart.App"

Aanbeveling

Zorg ervoor dat u deze opdracht uitvoert binnen het pad /console dat in deze handleiding is gemaakt.

De hulpbronnen opschonen

Haal nu het wachtwoord op dat de clientbibliotheek moet gebruiken om een verbinding te maken met het onlangs gemaakte account.

  1. Gebruik az cosmosdb show dit om het contactpunt en de gebruikersnaam voor het account op te halen.

    az cosmosdb show \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --query "{username:name,contactPoint:documentEndpoint}"
    
  2. Noteer de waarde van de contactPoint en username eigenschappen uit de uitvoer van de vorige opdrachten. De waarden van deze eigenschappen zijn het contactpunt en de gebruikersnaam die u verderop in deze handleiding gebruikt om verbinding te maken met het account met de bibliotheek.

  3. Gebruik az cosmosdb keys list om de sleutels op te halen voor het account.

    az cosmosdb keys list \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --type "keys"
    
  4. Noteer de waarde van de primaryMasterKey eigenschap uit de uitvoer van de vorige opdrachten. De waarde van deze eigenschap is het wachtwoord dat u verderop in deze handleiding gebruikt om verbinding te maken met het account met de bibliotheek.

Volgende stap