Freigeben über


Schnellstart: Azure Cosmos DB für Apache Cassandra-Clientbibliothek für Java

Erste Schritte mit der Azure Cosmos DB für Apache Cassandra-Clientbibliothek für Java zum Speichern, Verwalten und Abfragen unstrukturierter Daten. Führen Sie die Schritte in diesem Handbuch aus, um ein neues Konto zu erstellen, eine Java-Clientbibliothek zu installieren, eine Verbindung mit dem Konto herzustellen, allgemeine Vorgänge auszuführen und Ihre endgültigen Beispieldaten abzufragen.

API-Referenzdokumentation | Quellcode | der BibliothekPaket (Maven)

Voraussetzungen

  • Ein Azure-Abonnement

    • Wenn Sie noch kein Azure-Abonnement haben, erstellen Sie ein kostenloses Konto, bevor Sie beginnen.
  • Die neueste Version der Azure CLI in Azure Cloud Shell.

    • Wenn Sie CLI-Referenzbefehle lieber lokal ausführen möchten, melden Sie sich mit dem az login Befehl bei der Azure CLI an.
  • Java 21 oder höher

Einrichten

Richten Sie zunächst die Konto- und Entwicklungsumgebung für diesen Leitfaden ein. In diesem Abschnitt erfahren Sie, wie Sie ein Konto erstellen, die Anmeldeinformationen des Kontos abrufen und Ihre Entwicklungsumgebung vorbereiten.

Erstellen eines Kontos

Erstellen Sie zunächst eine API für Apache Cassandra-Konto. Nachdem das Konto erstellt wurde, erstellen Sie die Keyspace- und Tabellen-Ressourcen.

  1. Wenn Sie noch keine Zielressourcengruppe haben, verwenden Sie den az group create Befehl, um eine neue Ressourcengruppe in Ihrem Abonnement zu erstellen.

    az group create \
        --name "<resource-group-name>" \
        --location "<location>"
    
  2. Verwenden Sie den az cosmosdb create Befehl, um ein neues Azure Cosmos DB für Apache Cassandra-Konto mit Standardeinstellungen zu erstellen.

    az cosmosdb create \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --locations "regionName=<location>" \
        --capabilities "EnableCassandra"
    
  3. Erstellen Sie einen neuen Keyspace mit az cosmosdb cassandra keyspace create namens cosmicworks.

    az cosmosdb cassandra keyspace create \
        --resource-group "<resource-group-name>" \
        --account-name "<account-name>" \
        --name "cosmicworks"
    
  4. Erstellen Sie ein neues JSON-Objekt, um Ihr Schema mithilfe eines mehrzeiligen Bash-Befehls darzustellen. Verwenden Sie dann den az cosmosdb cassandra table create Befehl, um eine neue Tabelle mit dem Namen productszu erstellen.

    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"
    

Abrufen von Anmeldeinformationen

Rufen Sie nun das Kennwort für die Clientbibliothek ab, um eine Verbindung mit dem vor Kurzem erstellten Konto herzustellen.

  1. Verwenden Sie az cosmosdb show, um den Kontaktpunkt und den Benutzernamen für das Konto abzurufen.

    az cosmosdb show \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --query "{username:name,contactPoint:documentEndpoint}"
    
  2. Notieren Sie den Wert der contactPoint Und username Eigenschaften aus der Ausgabe der vorherigen Befehle. Die Werte dieser Eigenschaften sind der Kontaktpunkt und der Benutzername , den Sie später in diesem Handbuch verwenden, um eine Verbindung mit dem Konto mit der Bibliothek herzustellen.

  3. Verwenden Sie az cosmosdb keys list, um die Schlüssel für das Konto zu erhalten.

    az cosmosdb keys list \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --type "keys"
    
  4. Notieren Sie den Wert der Eigenschaft primaryMasterKey aus der Ausgabe des vorherigen Befehls. Der Wert dieser Eigenschaft ist das Kennwort , das Sie später in diesem Handbuch zum Herstellen einer Verbindung mit dem Konto mit der Bibliothek verwenden.

Vorbereiten der Entwicklungsumgebung

Konfigurieren Sie dann Ihre Entwicklungsumgebung mit einem neuen Projekt und der Clientbibliothek. Dieser Schritt ist die letzte erforderliche Voraussetzung, bevor Sie mit dem Rest dieses Handbuchs fortfahren.

  1. Beginnen Sie in einem leeren Verzeichnis.

  2. Generieren Sie ein neues Java-Konsolenprojekt mit Maven.

    mvn archetype:generate -DgroupId=quickstart -DartifactId=console -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
    
  3. Importieren Sie das java-driver-core Paket aus Maven. Fügen Sie diesen Abschnitt zu Ihrer pom.xmlDatei hinzu .

    <dependency>
      <groupId>org.apache.cassandra</groupId>
      <artifactId>java-driver-core</artifactId>
      <version>[4.,)</version>
    </dependency>
    
  4. Öffnen Sie die Datei "/console/src/main/java/quickstart/App.java ".

  5. Beobachten Sie die vorhandene Java-Anwendungsbausteine.

    package quickstart;
    
    /**
     * Hello world!
     *
     */
    public class App 
    {
        public static void main( String[] args )
        {
            System.out.println( "Hello World!" );
        }
    }
    
  6. Entfernen Sie die Kommentare und die Konsolenausgabe aus der Code-Vorlage. Dieser Codeblock ist der Ausgangspunkt für den Rest dieses Handbuchs.

    package quickstart;
    
    public class App 
    {
        public static void main(String[] args)
        {
        }
    }
    
  7. Importieren Sie den java.security.NoSuchAlgorithmException Namespace.

    import java.security.NoSuchAlgorithmException;
    
  8. Aktualisieren Sie die main Methodensignatur, um anzugeben, dass sie die NoSuchAlgorithmException Ausnahme auslösen könnte.

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

    Von Bedeutung

    Bei den verbleibenden Schritten in diesem Leitfaden wird davon ausgegangen, dass Sie Ihren Code innerhalb der main Methode hinzufügen.

  9. Projekt erstellen.

    mvn compile
    

Objektmodell

BESCHREIBUNG
CqlSession Stellt eine bestimmte Verbindung zu einem Cluster dar.
PreparedStatement Stellt eine vorkompilierte CQL-Anweisung dar, die mehrmals effizient ausgeführt werden kann
BoundStatement Stellt eine vorbereitete Anweisung mit gebundenen Parametern dar.
Row Stellt eine einzelne Zeile eines Abfrageergebnisses dar.

Code-Beispiele

Authentifizieren des Clients

Beginnen Sie damit, den Client mithilfe der Anmeldeinformationen zu authentifizieren, die zuvor in diesem Handbuch gesammelt wurden.

  1. Öffnen Sie die Datei "/console/src/main/java/quickstart/App.java " in Ihrer integrierten Entwicklungsumgebung (IDE).

  2. Importieren Sie die folgenden 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. Erstellen Sie String-Variablen für die zuvor in diesem Handbuch gesammelten Anmeldeinformationen. Benennen Sie die Variablen username, passwordund contactPoint. Erstellen Sie außerdem eine Zeichenfolgenvariable, die für das lokale Rechenzentrum benannt ist region .

    String username = "<username>";
    String password = "<password>";
    String contactPoint = "<contact-point>";
    
  4. Erstellen Sie eine weitere Zeichenfolgenvariable für die Region, in der Sie Ihr Azure Cosmos DB für Apache Cassandra-Konto erstellt haben. Benennen Sie diese Variable region.

    String region = "<region>";
    
  5. Erstellen Sie ein SSLContext Objekt, um sicherzustellen, dass Sie das TLS-Protokoll (Transport Layer Security) verwenden.

    SSLContext sslContext = SSLContext.getDefault();
    
  6. Erstellen Sie ein neues CqlSession Objekt mit den in den vorherigen Schritten erstellten Anmeldeinformationen und Konfigurationsvariablen. Legen Sie den Kontaktpunkt, das lokale Rechenzentrum, die Authentifizierungsanmeldeinformationen, die Schlüsseltaste und den TLS-Kontext (Transport Layer Security) fest.

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

Warnung

Die vollständige TLS-Überprüfung (Transport Layer Security) ist in diesem Handbuch deaktiviert, um die Authentifizierung zu vereinfachen. Aktivieren Sie die Validierung vollständig für Produktionsbereitstellungen.

Daten-Update durchführen

Als Nächstes fügen Sie neue Daten in eine Tabelle ein. Upserting stellt sicher, dass die Daten erstellt oder entsprechend ersetzt werden, je nachdem, ob die gleichen Daten bereits in der Tabelle vorhanden sind.

  1. Definieren Sie eine neue Klasse mit Product Feldern, die der zuvor in diesem Leitfaden erstellten Tabelle entsprechen.

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

    Tipp

    In Java können Sie diesen Typ in einer anderen Datei erstellen oder am Ende der vorhandenen Datei erstellen.

  2. Erstellen Sie ein neues Objekt vom Typ Product. Speichern Sie das Objekt in einer Variablen mit dem Namen product.

    Product product = new Product(
        "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
        "Yamba Surfboard",
        "gear-surf-surfboards",
        12,
        false
    );
    
  3. Erstellen Sie eine neue Zeichenfolgenvariable insertQuery mit der Cassandra Query Language (CQL)-Abfrage zum Einfügen einer neuen Zeile.

    String insertQuery = "INSERT INTO product (id, name, category, quantity, clearance) VALUES (?, ?, ?, ?, ?)";
    
  4. Bereiten Sie die Insert-Anweisung vor, und binden Sie die Produkteigenschaften als Parameter.

    PreparedStatement insertStmt = session.prepare(insertQuery);
    BoundStatement boundInsert = insertStmt.bind(
        product.id,
        product.name,
        product.category,
        product.quantity,
        product.clearance
    );
    
  5. Führen Sie ein Upsert für das Produkt aus, indem Sie die gebundenen Anweisung ausführen.

    session.execute(boundInsert);
    

Daten lesen

Lesen Sie dann Daten, die zuvor in die Tabelle eingefügt wurden.

  1. Erstellen Sie eine neue Zeichenfolgenvariable namens readQuery mit einer CQL-Abfrage, die mit Elementen mit demselben id-Feld übereinstimmt.

    String readQuery = "SELECT * FROM product WHERE id = ? LIMIT 1";
    
  2. Erstellen Sie eine Zeichenfolgenvariable id mit demselben Wert wie das zuvor in diesem Handbuch erstellte Produkt.

    String id = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb";
    
  3. Bereiten Sie die Anweisung vor und binden Sie das Feld id des Produkts als Parameter.

    PreparedStatement readStmt = session.prepare(readQuery);
    BoundStatement boundRead = readStmt.bind(id);
    
  4. Führen Sie die gebundene Anweisung aus, und speichern Sie das Ergebnis in einer Variablen mit dem Namen readResult.

    ResultSet readResult = session.execute(boundRead);
    
  5. Rufen Sie die erste Zeile aus dem Resultset ab, und ordnen Sie sie einem Product Objekt zu, falls gefunden.

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

Abfragedaten

Verwenden Sie nun eine Abfrage, um alle Daten zu finden, die einem bestimmten Filter in der Tabelle entsprechen.

  1. Erstellen Sie eine neue Zeichenfolgenvariable namens findQuery mit einer CQL-Abfrage, die mit Elementen mit demselben category-Feld übereinstimmt.

    String findQuery = "SELECT * FROM product WHERE category = ? ALLOW FILTERING";
    
  2. Erstellen Sie eine Zeichenfolgenvariable id mit demselben Wert wie das zuvor in diesem Handbuch erstellte Produkt.

    String category = "gear-surf-surfboards";
    
  3. Bereiten Sie die Anweisung vor, und binden Sie die Produktkategorie als Parameter.

    PreparedStatement findStmt = session.prepare(findQuery);
    BoundStatement boundFind = findStmt.bind(category);
    
  4. Führen Sie die gebundene Anweisung aus, und speichern Sie das Ergebnis in einer Variablen mit dem Namen findResults.

    ResultSet results = session.execute(boundFind);
    
  5. Durchlaufen Sie die Abfrageergebnisse, und ordnen Sie jede Zeile einem Product Objekt zu.

    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
    }
    

Sitzung beenden

In Java müssen Sie die Sitzung schließen, nachdem Sie mit allen Abfragen und Vorgängen fertig sind.

session.close();

Ausführen des Codes

Führen Sie die neu erstellte Anwendung mit einem Terminal in Ihrem Anwendungsverzeichnis aus.

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

Tipp

Stellen Sie sicher, dass Sie diesen Befehl innerhalb des in diesem Handbuch erstellten /console-Pfads ausführen.

Bereinigen von Ressourcen

Rufen Sie nun das Kennwort für die Clientbibliothek ab, um eine Verbindung mit dem vor Kurzem erstellten Konto herzustellen.

  1. Verwenden Sie az cosmosdb show, um den Kontaktpunkt und den Benutzernamen für das Konto abzurufen.

    az cosmosdb show \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --query "{username:name,contactPoint:documentEndpoint}"
    
  2. Notieren Sie den Wert der contactPoint Und username Eigenschaften aus der Ausgabe der vorherigen Befehle. Die Werte dieser Eigenschaften sind der Kontaktpunkt und der Benutzername , den Sie später in diesem Handbuch verwenden, um eine Verbindung mit dem Konto mit der Bibliothek herzustellen.

  3. Verwenden Sie az cosmosdb keys list, um die Schlüssel für das Konto zu erhalten.

    az cosmosdb keys list \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --type "keys"
    
  4. Notieren Sie den Wert der Eigenschaft primaryMasterKey aus der Ausgabe des vorherigen Befehls. Der Wert dieser Eigenschaft ist das Kennwort , das Sie später in diesem Handbuch zum Herstellen einer Verbindung mit dem Konto mit der Bibliothek verwenden.

Nächster Schritt