Rövid útmutató: A Java-hoz készült Azure Cosmos DB for NoSQL-kódtár

A KÖVETKEZŐRE VONATKOZIK: NoSQL

Ismerkedés a Java-hoz készült Azure Cosmos DB for NoSQL ügyfélkódtárral a tárolókban lévő adatok lekérdezéséhez és az egyes elemek gyakori műveleteihez. Az alábbi lépéseket követve üzembe helyezhet egy minimális megoldást a környezetében az Azure Developer CLI használatával.

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

Előfeltételek

Beállítás

Helyezze üzembe a projekt fejlesztési tárolóját a környezetében. Ezután 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.

Megnyitás a GitHub Codespacesben

Megnyitás a Dev Containerben

Fontos

A GitHub-fiókok magukban foglalják a tárterületre és az alapórákra való jogosultságot díjmentesen. További információkért tekintse meg a GitHub-fiókokhoz tartozó tárterületet és alapórákat.

  1. Nyisson meg egy terminált a projekt gyökérkönyvtárában.

  2. Hitelesítés az Azure Developer CLI-vel azd auth logina . 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
    
  4. Az inicializálás során konfiguráljon egy egyedi környezetnevet.

    Tipp.

    A rendszer a környezet nevét is használja a célerőforráscsoport neveként. Ebben a rövid útmutatóban fontolja meg a használatát msdocs-cosmos-db-.

  5. Az Azure Cosmos DB-fiók üzembe helyezése a következő használatával azd up: . 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 és a kívánt helyet. 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 az ügyfélkódtárat

Az ügyfélkódtár csomagként azure-spring-data-cosmos a Mavenen keresztül érhető el.

  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>
    

Objektummodell

Név Leírás
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.

Kódpéldák

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

A legtöbb Azure-szolgáltatáshoz irányuló alkalmazáskéréseket engedélyezni kell. Használja a DefaultAzureCredential típust előnyben részesített módszerként az alkalmazások és az Azure Cosmos DB for NoSQL közötti jelszó nélküli kapcsolat implementálásához. DefaultAzureCredential több hitelesítési módszert támogat, és meghatározza, hogy melyik metódust kell használni futásidőben.

Fontos

Az Azure-szolgáltatásokra irányuló kéréseket közvetlenül jelszóval, kapcsolati sztring vagy más hitelesítő adatokkal is engedélyezheti. Ezt a megközelítést azonban körültekintően kell alkalmazni. A fejlesztőknek szorgalmasnak kell lenniük ahhoz, hogy ezeket a titkos kulcsokat soha ne fedje fel nem biztonságos helyen. Bárki, aki hozzáfér a jelszóhoz vagy titkos kulcshoz, hitelesítheti magát az adatbázis-szolgáltatásban. DefaultAzureCredential továbbfejlesztett felügyeleti és biztonsági előnyöket kínál a fiókkulcshoz képest, hogy a kulcsok tárolása nélkül engedélyezze a jelszó nélküli hitelesítést.

Ez a minta először létrehoz egy új osztályt, amely örökli AbstractCosmosConfiguration az Azure Cosmos DB for NoSQL-hez való 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 az osztály új példányát, és egy példány használatával konfigurálja a CosmosClientBuilder hitelesítést DefaultAzureCredential .

@Bean
public CosmosClientBuilder getCosmosClientBuilder() {
    DefaultAzureCredential azureTokenCredential = new DefaultAzureCredentialBuilder()
        .build();
        
    return new CosmosClientBuilder()
        .endpoint(uri)
        .credential(azureTokenCredential);
}

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

Tároló lekérése

A metódus dekorátorával Container konfigurálhat egy osztályt egy tároló elemeinek ábrázolására. Írja be az osztályt a JSON-ba szerializálni kívánt összes tag belefoglalásához. Ebben a példában a típus egyedi azonosítóval rendelkezik, és a kategória, a név, a mennyiség, az ár és a vámkezelés mezői.

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

    @PartitionKey
    private String category;

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(
    "70b63682-b93a-4c77-aad2-65501347265f",
    "gear-surf-surfboards",
    "Yamba Surfboard",
    12,
    false
);
Item created_item = repository.save(item);

Elem 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("70b63682-b93a-4c77-aad2-65501347265f", partitionKey);
if (existing_item.isPresent()) {
    // Do something  
}

Lekérdezési elemek

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
}

Következő lépés