Snabbstart: Använda Azure Cosmos DB för NoSQL med Azure SDK för Rust
I den här snabbstarten distribuerar du ett grundläggande Azure Cosmos DB for Table-program med hjälp av Azure SDK för Rust. Azure Cosmos DB for Table är ett schemalöst datalager som gör att program kan lagra strukturerade tabelldata i molnet. Du lär dig hur du skapar tabeller, rader och utför grundläggande uppgifter i din Azure Cosmos DB-resurs med hjälp av Azure SDK för Rust.
Viktigt!
Rust SDK för Azure Cosmos DB finns för närvarande i offentlig förhandsversion. Den här förhandsversionen tillhandahålls utan ett serviceavtal och vi rekommenderar det inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller kan vara begränsade.
Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.
API-referensdokumentation Bibliotek källkodSlåda | (Rust) | Azure Developer CLI |
Förutsättningar
- Docker Desktop
- Rost 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
låda.
Om du inte redan har installerat installerar du
azure_data_cosmos
skapa med .cargo install
cargo install azure_data_cosmos
Installera även lådan om den
azure_identity
inte redan är installerad.cargo install azure_identity
Objektmodell
Name | beskrivning |
---|---|
CosmosClient |
Den här typen är den primära klienten och används för att hantera kontoomfattande metadata eller databaser. |
DatabaseClient |
Den här typen representerar en databas i kontot. |
CollectionClient |
Den här typen används främst för att utföra läs-, uppdaterings- och borttagningsåtgärder på antingen containern eller de objekt som lagras i containern. |
Kodexempel
- Autentisera klienten
- Hämta en databas
- Hämta en container
- Skapa ett objekt
- Hämta ett objekt
- Frågeobjekt
Exempelkoden i mallen använder en databas med namnet cosmicworks
och containern med namnet products
. Containern products
innehåller information som namn, kategori, kvantitet, en unik identifierare och en försäljningsflagga för varje produkt. Containern använder egenskapen /category
som en logisk partitionsnyckel.
Autentisera klienten
Det här exemplet skapar en ny instans av användning CosmosClient::new
och autentiserar med hjälp av CosmosClient
en DefaultAzureCredential
instans.
let credential = DefaultAzureCredential::new()?;
let client = CosmosClient::new(&endpoint, credential, None)?;
Hämta 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
Skapa 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 containern med .container.upsert_item
Den här metoden "upserts" objektet ersätter objektet effektivt om det 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äsa ett objekt
Utför en punktläsningsåtgärd med hjälp av både de unika identifierarna (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 i en angiven kategori med den här parameteriserade 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 databasåtgärder, inklusive, men inte begränsat till:
- Köra frågor med hjälp av en klippbok eller frågeredigeraren
- Ändra, uppdatera, skapa och ta bort objekt
- Importera massdata från andra källor
- Hantera databaser och containrar
Mer information finns i Använda Visual Studio Code-tillägget för att utforska Azure Cosmos DB för NoSQL-data.