Megosztás:


Rövid útmutató: Az Azure Cosmos DB for NoSQL használata a Java-hoz készült Azure SDK-val

Ebben a rövid útmutatóban üzembe helyez egy alapszintű Azure Cosmos DB for NoSQL-alkalmazást az Azure SDK for Java használatával. Az Azure Cosmos DB for NoSQL egy séma nélküli adattár, amellyel az alkalmazások strukturálatlan adatokat tárolnak a felhőben. Adatokat kérdezhet le a tárolókban, és az Azure SDK for Java használatával közös műveleteket hajt végre az egyes elemeken.

API-referenciadokumentáció | Kódtár forráskódja | csomag (Maven) | Azure Developer CLI

Előfeltételek

  • Azure Developer CLI
  • Docker Desktop
  • Java 21

Ha nem rendelkezik Azure-fiókkal, a kezdés előtt hozzon létre egy ingyenes fiókot .

A projekt inicializálása

Az Azure Developer CLI (azd) használatával hozzon létre egy Azure Cosmos DB for NoSQL-fiókot, és helyezzen üzembe egy tárolóalapú mintaalkalmazást. A mintaalkalmazás az ügyfélkódtárat használja a mintaadatok kezelésére, létrehozására, olvasására és lekérdezésére.

  1. Nyisson meg egy terminált egy üres mappában.

  2. Ha még nincs hitelesítve, jelentkezzen be az Azure Developer CLI-be a azd auth loginhasználatával. Kövesse az eszköz által megadott lépéseket a parancssori felületre való hitelesítéshez az ön által előnyben részesített Azure-hitelesítő adatokkal.

    azd auth login
    
  3. A projekt inicializálására használható azd init .

    azd init --template cosmos-db-nosql-java-quickstart
    
  4. Az inicializálás során konfiguráljon egy egyedi környezetnevet.

  5. Az Azure Cosmos DB-fiókot azd up használatával helyezze üzembe. A Bicep-sablonok egy minta webalkalmazást is üzembe helyeznek.

    azd up
    
  6. A kiépítési folyamat során válassza ki az előfizetést, a kívánt helyet és a célerőforrás-csoportot. Várja meg, amíg a kiépítési folyamat befejeződik. A folyamat körülbelül öt percet vehet igénybe.

  7. Az Azure-erőforrások kiépítése után a kimenet tartalmazza a futó webalkalmazás URL-címét.

    Deploying services (azd deploy)
    
      (✓) Done: Deploying service web
    - Endpoint: <https://[container-app-sub-domain].azurecontainerapps.io>
    
    SUCCESS: Your application was provisioned and deployed to Azure in 5 minutes 0 seconds.
    
  8. A konzol URL-címével keresse meg a webalkalmazást a böngészőben. Figyelje meg a futó alkalmazás kimenetét.

Képernyőkép a futó webalkalmazásról.

Telepítse a klienskönyvtárat

A klienskönyvtár a azure-spring-data-cosmos csomagként érhető el a Mavenen keresztül.

  1. Lépjen a /src/web mappára, és nyissa meg a pom.xml fájlt.

  2. Ha még nem létezik, adjon hozzá egy bejegyzést a azure-spring-data-cosmos csomaghoz.

    <dependency>
        <groupId>com.azure</groupId>
        <artifactId>azure-spring-data-cosmos</artifactId>
    </dependency>
    
  3. Emellett adjon hozzá egy másik függőséget a azure-identity csomaghoz, ha még nem létezik.

    <dependency>
        <groupId>com.azure</groupId>
        <artifactId>azure-identity</artifactId>
    </dependency>
    

Könyvtárak importálása

Importálja az összes szükséges névteret az alkalmazáskódba.

import com.azure.cosmos.CosmosClientBuilder;
import com.azure.cosmos.models.PartitionKey;
import com.azure.identity.DefaultAzureCredential;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.spring.data.cosmos.config.AbstractCosmosConfiguration;
import com.azure.spring.data.cosmos.config.CosmosConfig;
import com.azure.spring.data.cosmos.core.mapping.Container;
import com.azure.spring.data.cosmos.core.mapping.PartitionKey;
import com.azure.spring.data.cosmos.repository.CosmosRepository;
import com.azure.spring.data.cosmos.repository.Query;
import com.azure.spring.data.cosmos.repository.config.EnableCosmosRepositories;

Objektummodell

Név Description
EnableCosmosRepositories Ez a típus egy metódus-dekorátor, amellyel egy adattárat konfigurálhat az Azure Cosmos DB for NoSQL eléréséhez.
CosmosRepository Ez az osztály az elsődleges ügyfélosztály, amely egy tárolón belüli adatok kezelésére szolgál.
CosmosClientBuilder Ez az osztály az adattár által használt ügyfél létrehozásához használt gyár.
Query Ez a típus egy metódusdekorátor, amellyel megadhatja az adattár által végrehajtott lekérdezést.

Példakódok

A sablon mintakódja egy névvel ellátott cosmicworks adatbázist és egy nevű tárolót productshasznál. A products tároló olyan részleteket tartalmaz, mint a név, a kategória, a mennyiség, az egyedi azonosító és az egyes termékekhez tartozó értékesítési jelző. A tároló a tulajdonságot /category logikai partíciókulcsként használja.

Az ügyfél hitelesítése

Ez a minta először létrehoz egy új osztályt, amely a AbstractCosmosConfiguration osztályból örököl a NoSQL-hez való Azure Cosmos DB kapcsolat konfigurálásához.

@Configuration
@EnableCosmosRepositories
public class CosmosConfiguration extends AbstractCosmosConfiguration {
}

A konfigurációs osztályon belül ez a minta létrehozza a CosmosClientBuilder osztály új példányát, és egy DefaultAzureCredential példány használatával konfigurálja a hitelesítést.

@Bean
public CosmosClientBuilder getCosmosClientBuilder() {
    DefaultAzureCredential credential = new DefaultAzureCredentialBuilder()
        .build();
        
    return new CosmosClientBuilder()
        .endpoint("<azure-cosmos-db-nosql-account-endpoint>")
        .credential(credential);
}

Adatbázis lekérése

A konfigurációs osztályban a minta egy metódust implementál a meglévő, elnevezett cosmicworksadatbázis nevének visszaadására.

@Override
protected String getDatabaseName() {
    return "cosmicworks";
}

Szerezz egy tárolót

A metódus dekorátorával Container konfigurálhat egy osztályt egy tároló elemeinek ábrázolására. Hozza létre az osztályt úgy, hogy a JSON-ba szerializálni kívánt összes tagot belefoglalja. Ebben a példában a típus egyedi azonosítóval rendelkezik, valamint mezőkkel a kategória, a név, a mennyiség, az ár és a kiárusítás számára.

@Container(containerName = "products", autoCreateContainer = false)
public class Item {
    private String id;
    private String name;
    private Integer quantity;
    private Boolean sale;

    @PartitionKey
    private String category;

    // Extra members omitted for brevity
}

Elem létrehozása

Hozzon létre egy elemet a tárolóban a következő használatával repository.save: .

Item item = new Item(
    "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
    "gear-surf-surfboards",
    "Yamba Surfboard",
    12,
    false
);
Item created_item = repository.save(item);

Objektum olvasása

Pontolvasási műveletet hajt végre az egyedi azonosító (id) és a partíciókulcs mezőinek használatával. Az adott elem hatékony lekérésére használható repository.findById .

PartitionKey partitionKey = new PartitionKey("gear-surf-surfboards");
Optional<Item> existing_item = repository.findById("aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", partitionKey);
if (existing_item.isPresent()) {
    // Do something
}

Lekérdezés elemei

Lekérdezés végrehajtása egy tároló több elemén egy lekérdezés definiálásával az adattár felületén. Ez a minta a Query metódusdekorátor használatával határoz meg egy metódust, amely végrehajtja ezt a paraméteres lekérdezést:

SELECT * FROM products p WHERE p.category = @category
@Repository
public interface ItemRepository extends CosmosRepository<Item, String> {

    @Query("SELECT * FROM products p WHERE p.category = @category")
    List<Item> getItemsByCategory(@Param("category") String category);

}

A lekérdezés összes eredményének lekérése a következő használatával repository.getItemsByCategory: . Futtasd végig a lekérdezés eredményeit.

List<Item> items = repository.getItemsByCategory("gear-surf-surfboards");
for (Item item : items) {
    // Do something
}

Fedezd fel az adataidat

A NoSQL-adatok megismeréséhez használja az Azure Cosmos DB Visual Studio Code-bővítményét. Alapvető adatbázisműveleteket hajthat végre, beleértve, de nem kizárólagosan az alábbiakat:

  • Lekérdezések végrehajtása egy album vagy a lekérdezésszerkesztő használatával
  • Elemek módosítása, frissítése, létrehozása és törlése
  • Tömeges adatok importálása más forrásokból
  • Adatbázisok és tárolók kezelése

További információ: A Visual Studio Code bővítmény használata az Azure Cosmos DB for NoSQL-adatok megismeréséhez.

Erőforrások tisztítása

Ha már nincs szüksége a mintaalkalmazásra vagy erőforrásokra, távolítsa el a megfelelő üzembe helyezést és az összes erőforrást.

azd down