Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Začínáme s klientskou knihovnou Azure Cosmos DB for Apache Cassandra pro Javu pro ukládání, správu a dotazování nestrukturovaných dat Postupujte podle kroků v tomto průvodci a vytvořte nový účet, nainstalujte klientskou knihovnu Java, připojte se k účtu, proveďte běžné operace a dotazujte se na konečná ukázková data.
Referenční dokumentace k rozhraní API | Zdrojový kód knihovny | Balíček (Maven)
Požadavky
Předplatné Azure
- Pokud nemáte předplatné Azure, vytvořte si bezplatný účet před zahájením.
Nejnovější verze Azure CLI v Azure Cloud Shellu
- Pokud dáváte přednost místnímu spouštění referenčních příkazů rozhraní příkazového řádku, přihlaste se k Azure CLI pomocí
az loginpříkazu.
- Pokud dáváte přednost místnímu spouštění referenčních příkazů rozhraní příkazového řádku, přihlaste se k Azure CLI pomocí
- Java 21 nebo novější
Instalace
Nejprve pro tuto příručku nastavte účet a vývojové prostředí. Tato část vás provede procesem vytvoření účtu, získáním jeho přihlašovacích údajů a následnou přípravou vývojového prostředí.
Vytvoření účtu
Začněte vytvořením rozhraní API pro účet Apache Cassandra. Po vytvoření účtu vytvořte klíčový prostor a tabulkové zdroje.
Pokud ještě nemáte cílovou skupinu prostředků, použijte
az group createpříkaz k vytvoření nové skupiny prostředků ve vašem předplatném.az group create \ --name "<resource-group-name>" \ --location "<location>"az cosmosdb createPomocí příkazu vytvořte nový účet Azure Cosmos DB pro Apache Cassandra s výchozím nastavením.az cosmosdb create \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --locations "regionName=<location>" \ --capabilities "EnableCassandra"Vytvořte nový keyspace pojmenovaný
az cosmosdb cassandra keyspace createcosmicworks.az cosmosdb cassandra keyspace create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --name "cosmicworks"Vytvořte nový objekt JSON, který bude reprezentovat schéma pomocí příkazu Bash s více řádky. Potom pomocí
az cosmosdb cassandra table createpříkazu vytvořte novou tabulku s názvemproducts.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"
Získání přihlašovacích údajů
Teď získejte heslo pro klientskou knihovnu, které se má použít k vytvoření připojení k nedávno vytvořenému účtu.
Slouží
az cosmosdb showk získání kontaktního bodu a uživatelského jména pro účet.az cosmosdb show \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --query "{username:name,contactPoint:documentEndpoint}"Poznamenejte si hodnotu
contactPointausernamevlastnosti z výstupu předchozích příkazů. Hodnoty těchto vlastností jsou kontaktní bod a uživatelské jméno , které použijete později v tomto průvodci pro připojení k účtu s knihovnou.Slouží
az cosmosdb keys listk získání klíčů pro účet.az cosmosdb keys list \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --type "keys"Poznamenejte si hodnotu
primaryMasterKeyvlastnosti z výstupu předchozích příkazů. Hodnota této vlastnosti je heslo , které použijete později v tomto průvodci pro připojení k účtu s knihovnou.
Příprava vývojového prostředí
Potom nakonfigurujte vývojové prostředí s novým projektem a klientskou knihovnou. Tento krok je posledním požadovaným předpokladem před přechodem na zbytek této příručky.
Začněte v prázdném adresáři.
Vygenerujte nový projekt konzoly Java pomocí Mavenu.
mvn archetype:generate -DgroupId=quickstart -DartifactId=console -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=falseImportujte
java-driver-corebalíček z Mavenu. Přidejte tento oddíl do souborupom.xml .<dependency> <groupId>org.apache.cassandra</groupId> <artifactId>java-driver-core</artifactId> <version>[4.,)</version> </dependency>Otevřete soubor /console/src/main/java/quickstart/App.java .
Podívejte se na stávající ukázkový kód aplikace v Javě.
package quickstart; /** * Hello world! * */ public class App { public static void main( String[] args ) { System.out.println( "Hello World!" ); } }Odeberte komentáře a výstup z konzoly z boilerplate kódu. Tento blok kódu je výchozím bodem zbývající části tohoto průvodce.
package quickstart; public class App { public static void main(String[] args) { } }Naimportujte
java.security.NoSuchAlgorithmExceptionobor názvů.import java.security.NoSuchAlgorithmException;Aktualizujte podpis metody
main, aby naznačoval, že může vyvolat výjimkuNoSuchAlgorithmException.public static void main(String[] args) throws NoSuchAlgorithmException { }Důležité
Zbývající kroky v této příručce předpokládají, že do metody přidáváte svůj kód
main.Zkompilujte projekt.
mvn compile
Objektový model
| Popis | |
|---|---|
CqlSession |
Představuje konkrétní připojení ke clusteru. |
PreparedStatement |
Představuje předkompilovaný příkaz CQL, který lze provést několikrát efektivně. |
BoundStatement |
Představuje připravený příkaz s vázanými parametry. |
Row |
Představuje jeden řádek výsledku dotazu. |
Příklady kódu
Ověření klienta
Začněte ověřením klienta pomocí přihlašovacích údajů shromážděných dříve v této příručce.
Otevřete soubor /console/src/main/java/quickstart/App.java v integrovaném vývojovém prostředí (IDE).
Importujte následující 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;Vytvořte řetězcové proměnné pro přihlašovací údaje shromážděné dříve v této příručce. Pojmenujte proměnné
username,passwordacontactPoint. Vytvořte také proměnnou řetězce pojmenovanouregionpro místní datové centrum.String username = "<username>"; String password = "<password>"; String contactPoint = "<contact-point>";Vytvořte další řetězcovou proměnnou pro oblast, ve které jste vytvořili účet Azure Cosmos DB for Apache Cassandra. Pojmenujte tuto proměnnou
region.String region = "<region>";Vytvořte objekt,
SSLContextabyste měli jistotu, že používáte protokol TLS (Transport Layer Security).SSLContext sslContext = SSLContext.getDefault();Vytvořte nový
CqlSessionobjekt pomocí přihlašovacích údajů a konfiguračních proměnných vytvořených v předchozích krocích. Nastavte kontaktní bod, místní datové centrum, přihlašovací údaje pro ověřování, prostor klíčů a kontext 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();
Výstraha
Úplné ověření protokolu TLS (Transport Layer Security) je v tomto průvodci zakázané, aby se zjednodušilo ověřování. Pro produkční nasazení plně povolte ověřování.
Vložit nebo aktualizovat data
V dalším kroku přepište nová data do tabulky. Přenesení zajistí, že se data vytvoří nebo nahradí odpovídajícím způsobem v závislosti na tom, jestli stejná data již v tabulce existují.
Definujte novou třídu s
Productpoli odpovídajícími tabulce vytvořené dříve v této příručce.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); } }Návod
V Javě můžete tento typ vytvořit v jiném souboru nebo ho vytvořit na konci existujícího souboru.
Vytvořte nový objekt typu
Product. Uložte objekt do proměnné s názvemproduct.Product product = new Product( "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", "Yamba Surfboard", "gear-surf-surfboards", 12, false );Vytvořte novou řetězcovou proměnnou s názvem
insertQuerydotazu Cassandra Query Language (CQL) pro vložení nového řádku.String insertQuery = "INSERT INTO product (id, name, category, quantity, clearance) VALUES (?, ?, ?, ?, ?)";Připravte příkaz insert a svážete vlastnosti produktu jako parametry.
PreparedStatement insertStmt = session.prepare(insertQuery); BoundStatement boundInsert = insertStmt.bind( product.id, product.name, product.category, product.quantity, product.clearance );Upsert produktu spuštěním vázaného příkazu.
session.execute(boundInsert);
Čtení dat
Potom načtěte data, která byla dříve převedena do tabulky.
Vytvořte novou řetězcovou proměnnou pojmenovanou
readQuerys dotazem CQL, který odpovídá položkám se stejným polemid.String readQuery = "SELECT * FROM product WHERE id = ? LIMIT 1";Vytvořte řetězcovou proměnnou s názvem
idse stejnou hodnotou jako produkt vytvořený dříve v této příručce.String id = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb";Připravte příkaz a přiřaďte pole produktu
idjako parametr.PreparedStatement readStmt = session.prepare(readQuery); BoundStatement boundRead = readStmt.bind(id);Spusťte vázaný příkaz a uložte výsledek do proměnné s názvem
readResult.ResultSet readResult = session.execute(boundRead);Načtěte první řádek ze sady výsledků a namapujte ho na objekt
Product, pokud je nalezen.Row row = readResult.one(); Product matchedProduct = new Product( row.getString("id"), row.getString("name"), row.getString("category"), row.getInt("quantity"), row.getBoolean("clearance") );
Dotaz k datům
Teď pomocí dotazu najděte všechna data, která odpovídají určitému filtru v tabulce.
Vytvořte novou řetězcovou proměnnou pojmenovanou
findQuerys dotazem CQL, který odpovídá položkám se stejným polemcategory.String findQuery = "SELECT * FROM product WHERE category = ? ALLOW FILTERING";Vytvořte řetězcovou proměnnou s názvem
idse stejnou hodnotou jako produkt vytvořený dříve v této příručce.String category = "gear-surf-surfboards";Připravte příkaz a vytvořte vazbu kategorie produktu jako parametr.
PreparedStatement findStmt = session.prepare(findQuery); BoundStatement boundFind = findStmt.bind(category);Spusťte vázaný příkaz a uložte výsledek do proměnné s názvem
findResults.ResultSet results = session.execute(boundFind);Iterujte výsledky dotazu a namapujte každý řádek na
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 }
Zavřít relaci
V Javě budete muset relaci ukončit, až budete hotovi s dotazy a operacemi.
session.close();
Spuštění kódu
Spusťte nově vytvořenou aplikaci pomocí terminálu v adresáři vaší aplikace.
mvn compile
mvn exec:java -Dexec.mainClass="quickstart.App"
Návod
Ujistěte se, že tento příkaz spouštíte v cestě /console vytvořené v rámci této příručky.
Vyčistěte zdroje
Teď získejte heslo pro klientskou knihovnu, které se má použít k vytvoření připojení k nedávno vytvořenému účtu.
Slouží
az cosmosdb showk získání kontaktního bodu a uživatelského jména pro účet.az cosmosdb show \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --query "{username:name,contactPoint:documentEndpoint}"Poznamenejte si hodnotu
contactPointausernamevlastnosti z výstupu předchozích příkazů. Hodnoty těchto vlastností jsou kontaktní bod a uživatelské jméno , které použijete později v tomto průvodci pro připojení k účtu s knihovnou.Slouží
az cosmosdb keys listk získání klíčů pro účet.az cosmosdb keys list \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --type "keys"Poznamenejte si hodnotu
primaryMasterKeyvlastnosti z výstupu předchozích příkazů. Hodnota této vlastnosti je heslo , které použijete později v tomto průvodci pro připojení k účtu s knihovnou.