Freigeben über


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

In dieser Schnellstartanleitung stellen Sie eine einfache Azure Cosmos DB für NoSQL-Anwendung mithilfe des Azure SDK für Rust bereit. Azure Cosmos DB für NoSQL ist ein schemaloser Datenspeicher, mit dem Anwendungen unstrukturierte Daten in der Cloud speichern können. Abfragen von Daten in Ihren Containern und Ausführen allgemeiner Vorgänge für einzelne Elemente mithilfe des Azure SDK für Rust.

Von Bedeutung

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. Bestimmte Funktionen werden nicht unterstützt oder haben nur eingeschränkte Fähigkeiten.

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

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

Voraussetzungen

  • Docker Desktop
  • Rust 1.80 oder höher

Wenn Sie nicht über ein Azure-Konto verfügen, erstellen Sie ein kostenloses Konto , bevor Sie beginnen.

Installieren der Clientbibliothek

Die Clientbibliothek ist über Rust als Crate 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 add azure_data_cosmos
    
  2. Installieren Sie außerdem das CR8-Paket azure_identity (sofern noch nicht installiert).

    cargo add azure_identity
    

Importieren von Bibliotheken

Importieren Sie die DefaultAzureCredential, CosmosClient, PartitionKeyund Query Typen in Ihren Anwendungscode.

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

Objektmodell

Name Description
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.
ContainerClient 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.

Code-Beispiele

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

}

Erkunden Sie Ihre 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:

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

Weitere Informationen finden Sie unter So verwenden Sie die Visual Studio Code-Erweiterung, um Azure Cosmos DB für NoSQL-Daten zu untersuchen.

Nächster Schritt