Freigeben über


Schnellstart: Verwenden von Azure Cosmos DB for NoSQL mit dem Azure SDK für Rust

In diesem Schnellstart stellen Sie eine einfache Azure Cosmos DB for Table-Anwendung mithilfe des Azure SDK für Rust bereit. Azure Cosmos DB for Table ist ein schemaloser Datenspeicher, der es Anwendungen ermöglicht, strukturierte NoSQL-Daten in der Cloud zu speichern. Sie erfahren, wie Sie Tabellen, Zeilen und grundlegende Aufgaben in Ihrer Azure Cosmos DB-Ressource mithilfe des Azure SDK für Rust erstellen.

Wichtig

Das Rust SDK für Azure Cosmos DB befindet sich derzeit in der Public Preview. Diese Vorschauversion wird ohne Vereinbarung zum Servicelevel bereitgestellt und sollte nicht für Produktionsworkloads verwendet werden. Manche Features werden möglicherweise nicht unterstützt oder sind nur eingeschränkt verwendbar.

Weitere Informationen finden Sie unter Zusätzliche Nutzungsbestimmungen für Microsoft Azure-Vorschauen.

API-Referenzdokumentation | Quellcode der Bibliothek | Paket (Rust) | Azure Developer CLI

Voraussetzungen

  • Docker Desktop
  • Rust 1.80 oder höher

Sollten Sie kein Azure-Konto haben, erstellen Sie zunächst ein kostenloses Konto.

Installieren der Clientbibliothek

Die Clientbibliothek ist über Rust als CR8-Paket azure_data_cosmos verfügbar.

  1. Installieren Sie das CR8-Paket azure_data_cosmos mithilfe von cargo install, falls es noch nicht installiert ist.

    cargo install azure_data_cosmos
    
  2. Installieren Sie außerdem das CR8-Paket azure_identity (sofern noch nicht installiert).

    cargo install azure_identity
    

Objektmodell

name Beschreibung
CosmosClient Dieser Typ ist der primäre Client und wird verwendet, um kontoweite Metadaten oder Datenbanken zu verwalten.
DatabaseClient Dieser Typ stellt eine Datenbank innerhalb des Kontos dar.
CollectionClient Dieser Typ wird in erster Linie verwendet, um Lese-, Update- und Löschvorgänge für den Container oder die im Container gespeicherten Elemente auszuführen.

Codebeispiele

Der Beispielcode in der Vorlage verwendet eine Datenbank mit dem Namen cosmicworks und einen Container mit dem Namen products. Der products-Container enthält Details wie Name, Kategorie, Menge, eindeutiger Bezeichner und ein Verkaufsflag für jedes Produkt. Der Container verwendet die /category-Eigenschaft als logischen Partitionsschlüssel.

Authentifizieren des Clients

In diesem Beispiel wird eine neue Instanz von CosmosClient mithilfe von CosmosClient::new erstellt und mithilfe einer DefaultAzureCredential-Instanz authentifiziert.

let credential = DefaultAzureCredential::new()?;

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

Datenbank abrufen

Verwenden Sie client.database, um die vorhandene Datenbank mit dem Namen cosmicworks abzurufen.

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

Container abrufen

Rufen Sie den vorhandenen products-Container mithilfe von database.container ab.

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

Erstellen eines Elements

Erstellen Sie einen neuen Typ mit allen Membern, die Sie in JSON serialisieren möchten. In diesem Beispiel weist der Typ einen eindeutigen Bezeichner und Felder für Kategorie, Name, Menge, Preis und den Verkauf auf. Leiten Sie die serde::Serialize-Eigenschaft für diesen Typ ab, damit sie in JSON serialisiert werden kann.

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

Erstellen Sie mithilfe von container.upsert_item ein Element im Container. Mit dieser Methode wird ein Upsertvorgang für das Element ausgeführt, wodurch es effektiv ersetzt wird (sofern schon vorhanden).

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

Lesen eines Elements

Führen Sie einen Punktlesevorgang aus, indem Sie sowohl die eindeutigen Bezeichner (id) als auch die Partitionsschlüsselfelder verwenden. Verwenden Sie container.ReadItem, um das jeweilige Element effizient abzurufen.

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

Abfrageelemente

Führen Sie mithilfe von container.NewQueryItemsPager eine Abfrage für mehrere Elemente in einem Container durch. Suchen Sie alle Elemente in einer angegebenen Kategorie mithilfe dieser parametrisierten Abfrage:

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
    }

}

Untersuchen Ihrer Daten

Verwenden Sie die Visual Studio Code-Erweiterung für Azure Cosmos DB, um Ihre NoSQL-Daten zu untersuchen. Sie können Kerndatenbankvorgänge ausführen, einschließlich, aber nicht beschränkt auf:

  • Ausführen von Abfragen mit einem Scrapbook oder dem Abfrage-Editor
  • Ändern, Aktualisieren, Erstellen und Löschen von Elementen
  • Importieren von Massendaten aus anderen Quellen
  • Verwalten von Datenbanken und Containern

Weitere Informationen finden Sie unter Verwenden der Visual Studio Code-Erweiterung zum Untersuchen von Azure Cosmos DB for NoSQL-Daten.

Nächster Schritt