Dela via


Snabbstart: Använd Azure Cosmos DB för NoSQL med Azure SDK för Rust

I den här snabbstartsguiden distribuerar du en enkel Azure Cosmos DB för en NoSQL-applikation med hjälp av Azure SDK för Rust. Azure Cosmos DB for NoSQL är ett schemalöst datalager som gör det möjligt för program att lagra ostrukturerade data i molnet. Fråga data i dina behållare och utför vanliga operationer på enskilda objekt med hjälp av Azure SDK för Rust.

Viktigt

Rust SDK för Azure Cosmos DB är för närvarande i offentlig förhandsvisning. Denna förhandsgranskning tillhandahålls utan ett servicenivåavtal, och vi rekommenderar inte att den används för produktionsarbetsbelastningar. Vissa funktioner stöds inte eller har begränsat stöd med begränsade funktioner.

För mer information, se Tilläggsvillkor för användning av Microsoft Azure förhandsversioner.

API-referensdokumentation | Källkod | för bibliotekCrate (Rust) | Azure Developer CLI

Prerequisites

  • Docker Desktop
  • Rust 1.80 eller senare

Om du inte har något Azure-konto skapar du ett kostnadsfritt konto innan du börjar.

Installera klientbiblioteket

Klientbiblioteket är tillgängligt via Rust, som azure_data_cosmos paketet.

  1. Om det inte redan är installerat, installera azure_data_cosmos med hjälp av cargo install.

    cargo add azure_data_cosmos
    
  2. Installera också azure_identity-kitet om det inte redan är installerat.

    cargo add azure_identity
    

Importera bibliotek

Importera typerna DefaultAzureCredential, CosmosClient, PartitionKeyoch Query till programkoden.

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

Objektmodell

Name Beskrivning
CosmosClient Denna typ är den primära klienten och används för att hantera kontobred metadata eller databaser.
DatabaseClient Denna typ representerar en databas inom kontot.
ContainerClient Denna typ används främst för att utföra läs-, uppdaterings- och raderingsoperationer på antingen behållaren eller de föremål som lagras i behållaren.

Kodexempel

Exempelkoden i mallen använder en databas som heter cosmicworks och en behållare som heter products. Containern products innehåller information som namn, kategori, kvantitet, en unik identifierare och en försäljningsflagga för varje produkt. Behållaren använder /category-egenskapen som en logisk partitionsnyckel.

Autentisera klienten

Det här exemplet skapar en ny instans av CosmosClient med användning av CosmosClient::new och autentiserar med en DefaultAzureCredential instans.

let credential = DefaultAzureCredential::new()?;

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

Skaffa en databas

Använd client.database för att hämta den befintliga databasen med namnet cosmicworks.

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

Hämta en container

Hämta den befintliga products-containern med database.container.

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

Skapa ett objekt

Bygg en ny typ med alla medlemmar som du vill serialisera till JSON. I det här exemplet har typen en unik identifierare och fält för kategori, namn, kvantitet, pris och försäljning. Härled egenskapen för den serde::Serialize här typen så att den kan serialiseras till JSON.

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,
}

Skapa ett objekt i behållaren med hjälp av container.upsert_item. Denna metod "uppdaterar eller lägger till" posten och ersätter effektivt posten om den redan finns.

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?;

Läs ett objekt

Utför en punktläsningsoperation genom att använda både den unika identifieraren (id) och partitionsnyckelfälten. Använd container.ReadItem för att effektivt hämta det specifika objektet.

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?;

Frågeobjekt

Utför en fråga över flera objekt i en container med hjälp av container.NewQueryItemsPager. Hitta alla objekt inom en specificerad kategori med hjälp av den här parameterstyrda frågan.

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
    }

}

Utforska dina data

Använd Visual Studio Code-tillägget för Azure Cosmos DB för att utforska dina NoSQL-data. Du kan utföra grundläggande databasoperationer, inklusive men inte begränsat till:

  • Utföra frågeställningar med hjälp av ett scrapbook eller frågeredigeraren
  • Ändra, uppdatera, skapa och ta bort objekt
  • Importera massdata från andra källor
  • Hantering av databaser och containrar

För mer information, se hur du använder Visual Studio Code-tillägget för att utforska Azure Cosmos DB för NoSQL-data.

Nästa steg