Megosztás a következőn keresztül:


Rövid útmutató: Azure Cosmos DB for Apache Cassandra ügyfélkódtár Javához

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 login parancs használatával.
  • 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.

  1. Ha még nincs célerőforráscsoportja, a az group create paranccsal hozzon létre egy új erőforráscsoportot az előfizetésben.

    az group create \
        --name "<resource-group-name>" \
        --location "<location>"
    
  2. az cosmosdb create A 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"
    
  3. Hozzon létre egy új kulcsteret az cosmosdb cassandra keyspace create használatával, amit cosmicworks nevére elnevezett.

    az cosmosdb cassandra keyspace create \
        --resource-group "<resource-group-name>" \
        --account-name "<account-name>" \
        --name "cosmicworks"
    
  4. 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 create paranccsal hozzon létre egy új táblát.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"
    

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.

  1. 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}"
    
  2. Jegyezze le az contactPoint és username tulajdonsá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.

  3. A fiók az cosmosdb keys list lekéréséhez használható.

    az cosmosdb keys list \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --type "keys"
    
  4. Jegyezze fel a primaryMasterKey tulajdonsá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.

  1. Kezdje egy üres mappában.

  2. Hozzon létre egy új Java-konzolprojektet a Maven használatával.

    mvn archetype:generate -DgroupId=quickstart -DartifactId=console -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
    
  3. Importálja a java-driver-core csomagot 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>
    
  4. Nyissa meg a /console/src/main/java/quickstart/App.java fájlt.

  5. 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!" );
        }
    }
    
  6. 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)
        {
        }
    }
    
  7. Importálja a java.security.NoSuchAlgorithmException névteret.

    import java.security.NoSuchAlgorithmException;
    
  8. Frissítse a main metódus aláírását, hogy jelezze, hogy NoSuchAlgorithmException kivé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 main metódusban adja hozzá.

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

  1. Nyissa meg a /console/src/main/java/quickstart/App.java fájlt az integrált fejlesztési környezetben (IDE).

  2. Importálja a következő típusokat:

    • 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. 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és contactPoint. Hozzon létre egy sztringváltozót region, amely a helyi adatközponthoz tartozik.

    String username = "<username>";
    String password = "<password>";
    String contactPoint = "<contact-point>";
    
  4. 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>";
    
  5. Hozzon létre egy SSLContext objektumot, amely biztosítja, hogy a transport layer security (TLS) protokollt használja.

    SSLContext sslContext = SSLContext.getDefault();
    
  6. Hozzon létre egy új CqlSession objektumot 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.

  1. Adjon meg egy új, az útmutatóban korábban létrehozott táblának megfelelő mezőkkel ellátott Product osztá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.

  2. Hozzon létre egy új típusú Productobjektumot. Tárolja az objektumot egy névvel ellátott productváltozóban.

    Product product = new Product(
        "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
        "Yamba Surfboard",
        "gear-surf-surfboards",
        12,
        false
    );
    
  3. Hozzon létre egy új sztringváltozót insertQuery a 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 (?, ?, ?, ?, ?)";
    
  4. 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
    );
    
  5. 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.

  1. Hozzon létre egy új karakterlánc változót readQuery, amely CQL-lekérdezést tartalmaz, és megegyezik az azonos id mezővel rendelkező elemekkel.

    String readQuery = "SELECT * FROM product WHERE id = ? LIMIT 1";
    
  2. Hozzon létre egy sztringváltozót id ugyanazzal az értékkel, mint a jelen útmutatóban korábban létrehozott termék.

    String id = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb";
    
  3. Készítse elő az utasítást, és állítsa be a termék id mezőjét paraméterként.

    PreparedStatement readStmt = session.prepare(readQuery);
    BoundStatement boundRead = readStmt.bind(id);
    
  4. 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);
    
  5. Kérje le az első sort az eredményhalmazból, és képezze le egy Product objektumra, 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.

  1. Hozzon létre egy új karakterlánc változót findQuery, amely CQL-lekérdezést tartalmaz, és megegyezik az azonos category mezővel rendelkező elemekkel.

    String findQuery = "SELECT * FROM product WHERE category = ? ALLOW FILTERING";
    
  2. Hozzon létre egy sztringváltozót id ugyanazzal az értékkel, mint a jelen útmutatóban korábban létrehozott termék.

    String category = "gear-surf-surfboards";
    
  3. 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);
    
  4. 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);
    
  5. Iterálja át a lekérdezés eredményeit, és képezheti le az egyes sorokat egy Product objektumra.

    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.

  1. 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}"
    
  2. Jegyezze le az contactPoint és username tulajdonsá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.

  3. A fiók az cosmosdb keys list lekéréséhez használható.

    az cosmosdb keys list \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --type "keys"
    
  4. Jegyezze fel a primaryMasterKey tulajdonsá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.

Következő lépés