Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ismerkedés az Apache Cassandra-hoz készült Azure Cosmos DB Java-ügyfélkódtárával a strukturálatlan adatok tárolásához, kezeléséhez és lekérdezéséhez. Az útmutató lépéseit követve hozzon létre egy új fiókot, telepítsen egy Java-ügyfélkódtárat, csatlakozzon a fiókhoz, hajtsa végre a gyakori műveleteket, és kérje le a végső mintaadatokat.
API-referenciadokumentáció | Kódtár forráskódja | Csomag (Maven)
Előfeltételek
Azure-előfizetés
- Ha nincs Azure-előfizetésed, hozz létre egy ingyenes fiókot mielőtt elkezdenéd.
Az Azure CLI legújabb verziója az Azure Cloud Shellben.
- Ha inkább helyi cli-referenciaparancsokat szeretne futtatni, jelentkezzen be az Azure CLI-be a
az loginparancs használatával.
- Ha inkább helyi cli-referenciaparancsokat szeretne futtatni, jelentkezzen be az Azure CLI-be a
- Java 21 vagy újabb
Előkészítés
Először állítsa be az útmutató fiók- és fejlesztési környezetét. Ez a szakasz végigvezeti a fiók létrehozásának, a hitelesítő adatok beszerzésének, majd a fejlesztési környezet előkészítésének folyamatán.
Fiók létrehozása
Először hozzon létre egy API-t apache Cassandra-fiókhoz. A fiók létrehozása után hozza létre a kulcsteret és a táblaerőforrásokat.
Ha még nincs célerőforráscsoportja, a
az group createparanccsal hozzon létre egy új erőforráscsoportot az előfizetésben.az group create \ --name "<resource-group-name>" \ --location "<location>"az cosmosdb createA paranccsal hozzon létre egy új Azure Cosmos DB-fiókot az Apache Cassandra-fiókhoz alapértelmezett beállításokkal.az cosmosdb create \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --locations "regionName=<location>" \ --capabilities "EnableCassandra"Hozzon létre egy új kulcsteret
az cosmosdb cassandra keyspace createhasználatával, amitcosmicworksnevére elnevezett.az cosmosdb cassandra keyspace create \ --resource-group "<resource-group-name>" \ --account-name "<account-name>" \ --name "cosmicworks"Hozzon létre egy új JSON-objektumot, amely egy többsoros Bash-paranccsal ábrázolja a sémát. Ezután a
az cosmosdb cassandra table createparanccsal hozzon létre egy új táblát.productsschemaJson=$(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"
Hitelesítő adatok lekérése
Most szerezze be az ügyfélkódtár jelszavát, amellyel kapcsolatot hozhat létre a nemrég létrehozott fiókkal.
A fiók kapcsolattartási pontjának és felhasználónevének lekérésére használható
az cosmosdb show.az cosmosdb show \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --query "{username:name,contactPoint:documentEndpoint}"Jegyezze le az
contactPointésusernametulajdonságok értékét az előző parancsok kimenetéből. Ezeknek a tulajdonságoknak az értékei: a kapcsolattartási pont és a felhasználónév, amelyeket a könyvtárral való fiók-csatlakozáshoz használ az útmutató következő részeiben.A fiók
az cosmosdb keys listlekéréséhez használható.az cosmosdb keys list \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --type "keys"Jegyezze fel a
primaryMasterKeytulajdonság értékét az előző parancsok kimenetéből. Ennek a tulajdonságnak az értéke az jelszó, amit az útmutató későbbi részében használni fogsz a könyvtár segítségével a fiókhoz való csatlakozáshoz.
Fejlesztési környezet előkészítése
Ezután konfigurálja a fejlesztési környezetet egy új projekttel és az ügyfélkódtárral. Ez a lépés az utolsó szükséges előfeltétel, mielőtt továbblépne az útmutató többi részére.
Kezdje egy üres mappában.
Hozzon létre egy új Java-konzolprojektet a Maven használatával.
mvn archetype:generate -DgroupId=quickstart -DartifactId=console -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=falseImportálja a
java-driver-corecsomagot a Maven segítségével. Adja hozzá ezt a szakaszt a pom.xml fájlhoz.<dependency> <groupId>org.apache.cassandra</groupId> <artifactId>java-driver-core</artifactId> <version>[4.,)</version> </dependency>Nyissa meg a /console/src/main/java/quickstart/App.java fájlt.
Figyelje meg a meglévő Java alkalmazási sablont.
package quickstart; /** * Hello world! * */ public class App { public static void main( String[] args ) { System.out.println( "Hello World!" ); } }Távolítsa el a megjegyzéseket és a konzol üzeneteket az alap sablonkódból. Ez a kódblokk az útmutató további részeinek kiindulópontja.
package quickstart; public class App { public static void main(String[] args) { } }Importálja a
java.security.NoSuchAlgorithmExceptionnévteret.import java.security.NoSuchAlgorithmException;Frissítse a
mainmetódus aláírását, hogy jelezze, hogyNoSuchAlgorithmExceptionkivételt dobhat.public static void main(String[] args) throws NoSuchAlgorithmException { }Fontos
Az útmutató többi lépése feltételezi, hogy a kódot a
mainmetódusban adja hozzá.Készítse el a projektet.
mvn compile
Objektummodell
| Leírás | |
|---|---|
CqlSession |
Egy specifikus klaszterkapcsolatot képvisel. |
PreparedStatement |
Előre összeállított CQL-utasítást jelöl, amely többször is hatékonyan végrehajtható |
BoundStatement |
Előkészített utasítást jelöl kötött paraméterekkel |
Row |
Egy lekérdezés eredményének egyetlen sorát jelöli |
Példakódok
Ügyfél hitelesítése
Első lépésként hitelesíti az ügyfelet az útmutatóban korábban összegyűjtött hitelesítő adatokkal.
Nyissa meg a /console/src/main/java/quickstart/App.java fájlt az integrált fejlesztési környezetben (IDE).
Importálja a következő típusokat:
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;Sztringváltozók létrehozása az útmutatóban korábban gyűjtött hitelesítő adatokhoz. Nevezze el a változókat
username,passwordéscontactPoint. Hozzon létre egy sztringváltozótregion, amely a helyi adatközponthoz tartozik.String username = "<username>"; String password = "<password>"; String contactPoint = "<contact-point>";Hozzon létre egy új karakterláncváltozót ahhoz a régióhoz, ahol létrehozta az Azure Cosmos DB for Apache Cassandra accountját. Nevezze el ezt a változót
region.String region = "<region>";Hozzon létre egy
SSLContextobjektumot, amely biztosítja, hogy a transport layer security (TLS) protokollt használja.SSLContext sslContext = SSLContext.getDefault();Hozzon létre egy új
CqlSessionobjektumot az előző lépésekben létrehozott hitelesítő és konfigurációs változók használatával. Adja meg a kapcsolattartási pontot, a helyi adatközpontot, a hitelesítési hitelesítő adatokat, a kulcsteret és a Transport Layer Security (TLS) környezetet.CqlSession session = CqlSession.builder() .addContactPoint(new InetSocketAddress(contactPoint, 10350)) .withLocalDatacenter(region) .withAuthCredentials(username, password) .withKeyspace(CqlIdentifier.fromCql("cosmicworks")) .withSslContext(sslContext) .build();
Figyelmeztetés
Ebben az útmutatóban le van tiltva a teljes átviteli rétegbiztonság (TLS) ellenőrzése a hitelesítés egyszerűsítése érdekében. Éles telepítéseknél teljesen engedélyezze az érvényesítést.
Adatok frissítése vagy beszúrása
Következő lépésként új adatokat kell beszúrni egy táblába. Az Upserting biztosítja az adatok megfelelő létrehozását vagy cseréjét attól függően, hogy ugyanazok az adatok már léteznek-e a táblában.
Adjon meg egy új, az útmutatóban korábban létrehozott táblának megfelelő mezőkkel ellátott
Productosztályt.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); } }Jótanács
A Javában létrehozhatja ezt a típust egy másik fájlban, vagy létrehozhatja a meglévő fájl végén.
Hozzon létre egy új típusú
Productobjektumot. Tárolja az objektumot egy névvel ellátottproductváltozóban.Product product = new Product( "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", "Yamba Surfboard", "gear-surf-surfboards", 12, false );Hozzon létre egy új sztringváltozót
insertQuerya Cassandra Query Language (CQL) lekérdezéssel egy új sor beszúrásához.String insertQuery = "INSERT INTO product (id, name, category, quantity, clearance) VALUES (?, ?, ?, ?, ?)";Készítse elő a beszúró utasítást, és kösse össze a termék tulajdonságait paraméterként.
PreparedStatement insertStmt = session.prepare(insertQuery); BoundStatement boundInsert = insertStmt.bind( product.id, product.name, product.category, product.quantity, product.clearance );A kötött utasítás végrehajtásával újítsa fel a terméket.
session.execute(boundInsert);
Adatok beolvasása
Ezután olvassa be azokat az adatokat, amelyeket korábban a táblázatba illesztett be.
Hozzon létre egy új karakterlánc változót
readQuery, amely CQL-lekérdezést tartalmaz, és megegyezik az azonosidmezővel rendelkező elemekkel.String readQuery = "SELECT * FROM product WHERE id = ? LIMIT 1";Hozzon létre egy sztringváltozót
idugyanazzal az értékkel, mint a jelen útmutatóban korábban létrehozott termék.String id = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb";Készítse elő az utasítást, és állítsa be a termék
idmezőjét paraméterként.PreparedStatement readStmt = session.prepare(readQuery); BoundStatement boundRead = readStmt.bind(id);Hajtsa végre a kötött utasítást, és tárolja az eredményt egy nevesített
readResultváltozóban.ResultSet readResult = session.execute(boundRead);Kérje le az első sort az eredményhalmazból, és képezze le egy
Productobjektumra, ha megtalálható.Row row = readResult.one(); Product matchedProduct = new Product( row.getString("id"), row.getString("name"), row.getString("category"), row.getInt("quantity"), row.getBoolean("clearance") );
Adatok lekérdezése
Most egy lekérdezéssel megkeresheti az összes olyan adatot, amely megfelel a tábla adott szűrőjének.
Hozzon létre egy új karakterlánc változót
findQuery, amely CQL-lekérdezést tartalmaz, és megegyezik az azonoscategorymezővel rendelkező elemekkel.String findQuery = "SELECT * FROM product WHERE category = ? ALLOW FILTERING";Hozzon létre egy sztringváltozót
idugyanazzal az értékkel, mint a jelen útmutatóban korábban létrehozott termék.String category = "gear-surf-surfboards";Készítse elő az utasítást, és kösse meg a termékkategóriát paraméterként.
PreparedStatement findStmt = session.prepare(findQuery); BoundStatement boundFind = findStmt.bind(category);Hajtsa végre a kötött utasítást, és tárolja az eredményt egy nevesített
findResultsváltozóban.ResultSet results = session.execute(boundFind);Iterálja át a lekérdezés eredményeit, és képezheti le az egyes sorokat egy
Productobjektumra.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 }
Munkamenet bezárása
A Java-ban be kell zárnia a munkamenetet, miután befejezte a lekérdezéseket és műveleteket.
session.close();
A kód futtatása
Futtassa az újonnan létrehozott alkalmazást egy terminál használatával az alkalmazáskönyvtárban.
mvn compile
mvn exec:java -Dexec.mainClass="quickstart.App"
Jótanács
Győződjön meg arról, hogy ezt a parancsot az útmutatóban létrehozott /konzol elérési útján futtatja.
Erőforrások tisztítása
Most szerezze be az ügyfélkódtár jelszavát, amellyel kapcsolatot hozhat létre a nemrég létrehozott fiókkal.
A fiók kapcsolattartási pontjának és felhasználónevének lekérésére használható
az cosmosdb show.az cosmosdb show \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --query "{username:name,contactPoint:documentEndpoint}"Jegyezze le az
contactPointésusernametulajdonságok értékét az előző parancsok kimenetéből. Ezeknek a tulajdonságoknak az értékei: a kapcsolattartási pont és a felhasználónév, amelyeket a könyvtárral való fiók-csatlakozáshoz használ az útmutató következő részeiben.A fiók
az cosmosdb keys listlekéréséhez használható.az cosmosdb keys list \ --resource-group "<resource-group-name>" \ --name "<account-name>" \ --type "keys"Jegyezze fel a
primaryMasterKeytulajdonság értékét az előző parancsok kimenetéből. Ennek a tulajdonságnak az értéke az jelszó, amit az útmutató későbbi részében használni fogsz a könyvtár segítségével a fiókhoz való csatlakozáshoz.