Megosztás:


Rövid útmutató: Az Azure Cosmos DB for NoSQL használata a Rusthoz 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 Rust 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 Rust használatával általános műveleteket hajt végre az egyes elemeken.

Fontos

Az Azure Cosmos DB-hez készült Rust SDK jelenleg nyilvános előzetes verzióban érhető el. Ez az előzetes verzió szolgáltatásszint-szerződés nélkül érhető el, és éles számítási feladatokhoz nem javasoljuk. Bizonyos funkciók nem támogatottak, vagy korlátozott funkcionalitású támogatásuk van.

További információkért lásd: Microsoft Azure Previews Kiegészítő Felhasználási Feltételek.

API-referenciadokumentáció | Kódtár forráskód | Crate (Rust) | Azure Developer CLI

Előfeltételek

  • Docker Desktop
  • Rust 1.80 vagy újabb

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

Telepítse a klienskönyvtárat

A klienskönyvtár a Ruston keresztül érhető el, mint azure_data_cosmos láda.

  1. Ha még nincs telepítve, telepítse a azure_data_cosmos létrehozásával a cargo install.

    cargo add azure_data_cosmos
    
  2. Ezenkívül telepítse a azure_identity ládát, ha még nincs telepítve.

    cargo add azure_identity
    

Könyvtárak importálása

Importálja a DefaultAzureCredential, CosmosClient, PartitionKeyés Query típusokat az alkalmazáskódba.

use azure_data_cosmos::{CosmosClient, PartitionKey, Query};
use azure_identity::DefaultAzureCredential;

Objektummodell

Név Description
CosmosClient Ez a típus az elsődleges ügyfél, és a fiókszintű metaadatok vagy adatbázisok kezelésére szolgál.
DatabaseClient Ez a típus a fiókon belüli adatbázist jelöli.
ContainerClient Ez a típus elsősorban olvasási, frissítési és törlési műveletek végrehajtására szolgál a tárolón vagy a tárolóban tárolt elemeken.

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 létrehoz egy új CosmosClient példányt CosmosClient::new használatával, és hitelesít egy DefaultAzureCredential példány segítségével.

let credential = DefaultAzureCredential::new()?;

let client = CosmosClient::new(&endpoint, credential, None)?;

Adatbázis lekérése

A client.database paranccsal kérheti le a meglévő, cosmicworks nevű adatbázist.

let database = client.database_client("cosmicworks");

Szerezz egy tárolót

A meglévő products tárolót a database.container használatával kérje le.

let container = database.container_client("products");

Elem létrehozása

Hozzon létre egy új típust a JSON-ba szerializálni kívánt összes taggal. 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 az értékesítés mezői. Ebből a típusból származtathatja a serde::Serialize tulajdonságot, hogy szerializálható legyen JSON-ra.

use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize)]
pub struct Item {
    pub id: String,
    pub category: String,
    pub name: String,
    pub quantity: i32,
    pub price: f64,
    pub clearance: bool,
}

Hozzon létre egy elemet a tárolóban a következő használatával container.upsert_item: . Ez a módszer "upserteli" az elemet, vagyis hatékonyan kicseréli, ha az már létezik.

let item = Item {
    id: "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb".to_string(),
    category: "gear-surf-surfboards".to_string(),
    name: "Yamba Surfboard".to_string(),
    quantity: 12,
    price: 850.00,
    clearance: false,
};

let partition_key = PartitionKey::from(item.category.clone());
        
let partition_key = PartitionKey::from(item.category.clone());

container.upsert_item(partition_key, item.clone(), None).await?;

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ó container.ReadItem .

let item_id = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb";
let item_partition_key = "gear-surf-surfboards";

let response = container.read_item(item_partition_key, item_id, None).await?;

let item: Item = response.into_json_body().await?;

Lekérdezés elemei

Lekérdezés végrehajtása egy tároló több eleme felett a következő használatával container.NewQueryItemsPager: . Egy adott kategórián belüli összes elem megkeresése ezzel a paraméteres lekérdezéssel:

SELECT * FROM products p WHERE p.category = @category
let item_partition_key = "gear-surf-surfboards";

let query = Query::from("SELECT * FROM c WHERE c.category = @category")
    .with_parameter("@category", item_partition_key)?;

let mut pager = container.query_items::<Item>(query, item_partition_key, None)?;

while let Some(page_response) = pager.next().await {

    let page = page_response?.into_body().await?;

    for item in page.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.

Következő lépés