Rövid útmutató: Az Azure DocumentDB használata a Rust mongoDB-illesztőjével

Ebben a rövid útmutatóban létrehoz egy alapszintű Azure DocumentDB-alkalmazást a Rust használatával. Az Azure DocumentDB egy NoSQL-adattár, amellyel az alkalmazások a felhőben tárolhatják a dokumentumokat, és hivatalos MongoDB-illesztőprogramokkal érhetik el őket. Ez az útmutató bemutatja, hogyan hozhat létre dokumentumokat, és hogyan hajthat végre alapvető feladatokat az Azure DocumentDB-fürtben a Rust használatával.

API-referenciaForráskód | Csomag (crates.io)

Prerequisites

  • Azure-előfizetés

  • Rust 1.70 vagy újabb

Hozzon létre egy Azure DocumentDB-fürtöt

Első lépésként létre kell hoznia egy Azure DocumentDB-fürtöt, amely a NoSQL-adatok tárolásának és kezelésének alapja.

  1. Jelentkezzen be az Azure Portalra (https://portal.azure.com).

  2. Az Azure Portal menüjében vagy a Kezdőlapon válassza az Erőforrás létrehozása elemet.

  3. Az Új lapon keresse meg és válassza ki az Azure DocumentDB-t.

    Képernyőkép az Azure DocumentDB keresésről.

  4. Az Azure DocumentDB-fürt létrehozása oldal Alapok szakaszában válassza a Fürtszint szakaszban a Konfigurálás lehetőséget.

    Képernyőkép a fürt konfigurálása opcióról.

  5. A Méretezés lapon konfigurálja ezeket a beállításokat, majd válassza a Mentés lehetőséget a fürtszintre vonatkozó módosítások megőrzéséhez.

    Value
    Fürtszint M30 tier, 2 vCore, 8-GiB RAM
    Tárterület szegmensenként 128 GiB

    Képernyőkép egy új Azure DocumentDB-fürt számítási és tárolási beállításairól.

  6. Az Alapok szakaszban konfigurálja a következő beállításokat:

    Value
    Előfizetés Válassza ki Azure előfizetését
    Erőforráscsoport Új erőforráscsoport létrehozása vagy meglévő erőforráscsoport kiválasztása
    Klaszter neve Globálisan egyedi név megadása
    Helyszín Válasszon egy támogatott Azure-régiót az előfizetéséhez
    MongoDB-verzió A következők szerint válasszon: 8.0
    Rendszergazdai felhasználónév Felhasználónév létrehozása a fürt felhasználói rendszergazdaként való eléréséhez
    Jelszó A felhasználónévhez társított egyedi jelszó használata

    Képernyőkép a fürtparaméterekről.

    Jótanács

    Jegyezze fel a felhasználónévhez és jelszóhoz használt értékeket. Ezeket az értékeket az útmutató későbbi részében használjuk. Az érvényes értékekkel kapcsolatos további információkért tekintse meg a fürt korlátait.

  7. Válassza ki a Tovább: Hálózatkezelés lehetőséget.

  8. A Hálózatkezelés lap Tűzfalszabályok szakaszában konfigurálja az alábbi beállításokat:

    Value
    Kapcsolati módszer Public access
    Nyilvános hozzáférés engedélyezése az Azure-ban lévő Azure-szolgáltatásokból és erőforrásokból ehhez a fürthöz Engedélyezett
  9. Adjon hozzá egy tűzfalszabályt a jelenlegi klienseszközhöz, hogy hozzáférést biztosítson a fürthöz a + Jelenlegi kliens IP-cím hozzáadása lehetőség kiválasztásával.

    Képernyőkép a hálózati konfigurációkról.

    Jótanács

    Számos vállalati környezetben a fejlesztői gép IP-címei vpn vagy más vállalati hálózati beállítások miatt rejtve vannak. Ezekben az esetekben ideiglenesen engedélyezheti az összes IP-cím elérését az 0.0.0.0 - 255.255.255.255 IP-címtartomány tűzfalszabályként való hozzáadásával. Ezt a tűzfalszabályt csak ideiglenesen használja a kapcsolattesztelés és -fejlesztés részeként.

  10. Válassza az Áttekintés + létrehozás lehetőséget.

  11. Tekintse át a megadott beállításokat, majd kattintson a Létrehozás-ra. A klaszter létrehozása néhány percet vesz igénybe. Várjon, amíg az erőforrás üzembe helyezése befejeződött.

  12. Végül válassza a Go to resource opciót az Azure DocumentDB-fürthöz lépéshez a portálon.

Képernyőkép a goto-erőforrás beállításairól.

Szerezze be a fürt hitelesítő adatait

Szerezd be a fürthöz való csatlakozáshoz használt hitelesítő adatokat.

  1. A fürtoldalon válassza a Kapcsolati láncokat lehetőséget az erőforrás menüjében.

  2. A Kapcsolati sztringek szakaszban másolja vagy rögzítse a Kapcsolati sztring mező értékét.

Képernyőkép a kapcsolati karakterláncok opcióról.

Important

A portál kapcsolati sztringje nem tartalmazza a jelszó értékét. A <password> helyettesítő szöveget le kell cserélnie a fürt létrehozásakor megadott hitelesítő adatokkal, vagy interaktívan be kell írnia a jelszót.

A projekt inicializálása

Hozzon létre egy új Rust-projektet az aktuális könyvtárban.

  1. Kezdje egy üres mappában.

  2. Nyisson egy terminált az aktuális könyvtárban.

  3. Hozzon létre egy új Rust-projektet a Cargo használatával.

    cargo new azure-documentdb-rust-quickstart
    cd azure-documentdb-rust-quickstart
    

Telepítse a klienskönyvtárat

Az klienskönyvtár a crates.io-n keresztül érhető el, mint mongodb csomag.

  1. Adja hozzá a MongoDB Rust sofőrt a Cargo használatával.

    cargo add mongodb
    
  2. Adja hozzá az aszinkron tokio műveletek futtatókörnyezetét.

    cargo add tokio --features full
    
  3. Adja hozzá a serde crate-et a szerializáció támogatásához.

    cargo add serde --features derive
    
  4. Adja hozzá a futures crate-et aszinkron streamek műveleteihez.

    cargo add futures
    
  5. Nyissa meg az alkalmazás kódjához tartozó src/main.rs fájlt.

  6. Importálja a szükséges modulokat az alkalmazáskódba:

    use futures::TryStreamExt;
    use mongodb::{
        bson::doc,
        options::ClientOptions,
        Client, Collection,
    };
    use serde::{Deserialize, Serialize};
    

Objektummodell

Name Description
Client A MongoDB-hez való csatlakozáshoz használt típus.
Database Egy adatbázist jelöl a klaszterben.
Collection<T> Egy adatbázison belüli gyűjteményt jelöl a fürtben.

Példakódok

Az alkalmazás kódja egy elnevezett adventureworks adatbázishoz és egy nevű productsgyűjteményhez csatlakozik. A products gyűjtemény 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ő. Az itt található kódminták a leggyakoribb műveleteket hajtják végre a gyűjtemények használatakor.

Az ügyfél hitelesítése

Először csatlakozzon az ügyfélhez egy egyszerű kapcsolati sztring használatával.

  1. Hozza létre a fő aszinkron függvényt, és állítsa be a kapcsolati sztringet. Cserélje le <your-cluster-name>, <your-username> és <your-password> a tényleges fürtinformációkkal.

    #[tokio::main]
    async fn main() -> Result<(), Box<dyn std::error::Error>> {
        // Connection string for Azure DocumentDB cluster
        let connection_string = "mongodb+srv://<your-username>:<your-password>@<your-cluster-name>.global.mongocluster.cosmos.azure.com/?tls=true&authMechanism=SCRAM-SHA-256&retrywrites=false&maxIdleTimeMS=120000";
    
        // Parse connection string into client options
        let client_options = ClientOptions::parse(connection_string).await?;
    
  2. Hozza létre a MongoDB-ügyfelet, és ellenőrizze a kapcsolatot.

        // Create a new client and connect to the server
        let client = Client::with_options(client_options)?;
    
        // Ping the server to verify connection
        client
            .database("admin")
            .run_command(doc! { "ping": 1 })
            .await?;
    
        println!("Successfully connected and pinged Azure DocumentDB");
    

Gyűjtemény lekérése

Most szerezze be az adatbázist és a gyűjteményt. Ha az adatbázis és a gyűjtemény még nem létezik, az illesztővel automatikusan létrehozhatja.

  1. Az adatbázisra mutató hivatkozás lekérése.

        // Get database reference
        let database = client.database("adventureworks");
        println!("Connected to database: {}", database.name());
    
  2. Az adatbázison belüli gyűjteményre mutató hivatkozás lekérése.

        // Get collection reference
        let collection: Collection<Product> = database.collection("products");
        println!("Connected to collection: products");
    

Dokumentum létrehozása

Ezután hozzon létre néhány új dokumentumot a gyűjteményben. A dokumentumokat úgy állíthatja be, hogy az lecserélje a meglévő dokumentumokat, ha már léteznek ugyanazzal az egyedi azonosítóval.

  1. Termékstruktúra definiálása és minta termékdokumentumok létrehozása.

        // Define Product struct for type-safe operations
        #[derive(Debug, Serialize, Deserialize)]
        struct Product {
            #[serde(rename = "_id")]
            id: String,
            name: String,
            category: String,
            quantity: i32,
            price: f64,
            sale: bool,
        }
    
        // Create sample products
        let products = vec![
            Product {
                id: "00000000-0000-0000-0000-000000004018".to_string(),
                name: "Windry Mittens".to_string(),
                category: "apparel-accessories-gloves-and-mittens".to_string(),
                quantity: 121,
                price: 35.00,
                sale: false,
            },
            Product {
                id: "00000000-0000-0000-0000-000000004318".to_string(),
                name: "Niborio Tent".to_string(),
                category: "gear-camp-tents".to_string(),
                quantity: 140,
                price: 420.00,
                sale: true,
            },
        ];
    
  2. Helyezze be a dokumentumokat "upsert" műveletek használatával.

        // Insert documents with upsert
        for product in &products {
            let filter = doc! { "_id": &product.id };
            let update = doc! { "$set": mongodb::bson::to_document(product)? };
    
            let result = collection
                .update_one(filter, update)
                .upsert(true)
                .await?;
    
            if result.upserted_id.is_some() {
                println!("Inserted document with ID: {}", product.id);
            } else {
                println!("Updated document with ID: {}", product.id);
            }
        }
    

Dokumentum lekérése

Ezután végezzen pontolvasási műveletet egy adott dokumentum gyűjteményből való lekéréséhez.

  1. Adja meg a szűrőt egy adott dokumentum azonosító alapján való megkereséséhez.

        // Retrieve a specific document by ID
        let filter = doc! { "_id": "00000000-0000-0000-0000-000000004018" };
    
  2. Hajtsa végre a lekérdezést, és kérje le az eredményt.

        let retrieved_product = collection.find_one(filter).await?;
    
        match retrieved_product {
            Some(product) => println!("Retrieved product: {} - ${:.2}", product.name, product.price),
            None => println!("Product not found"),
        }
    

Dokumentumok lekérdezése

Végül több dokumentumot is lekérdezhet a MongoDB lekérdezési nyelv (MQL) használatával.

  1. Lekérdezés definiálása adott feltételeknek megfelelő dokumentumok megkereséséhez.

        // Query for products on sale
        let query_filter = doc! { "sale": true };
        let mut cursor = collection.find(query_filter).await?;
    
  2. Az összes egyező dokumentum lekéréséhez iterálja végig a kurzort.

        println!("Products on sale:");
        while let Some(product) = cursor.try_next().await? {
            println!(
                "- {}: ${:.2} (Category: {})",
                product.name, product.price, product.category
            );
        }
    
        Ok(())
    }
    

Adatok felfedezése a Visual Studio Code használatával

A Visual Studio Code DocumentDB bővítményével alapvető adatbázis-műveleteket hajthat végre, beleértve az adatok lekérdezését, beszúrását, frissítését és törlését.

  1. Nyissa meg a Visual Studio Code-ot.

  2. Lépjen a Bővítmények nézetre, és keresse meg a kifejezést DocumentDB. Keresse meg a DocumentDB for VS Code bővítményt .

  3. Válassza a bővítmény Telepítés gombját. Várja meg, amíg a telepítés befejeződik. Töltse újra a Visual Studio kódot, ha erre felszólítják.

  4. Lépjen a DocumentDB bővítményre a tevékenységsáv megfelelő ikonjának kiválasztásával.

  5. A DocumentDB-kapcsolatok panelen válassza az + Új kapcsolat... lehetőséget.

  6. A párbeszédpanelen válassza a Service Discovery , majd az Azure DocumentDB – Azure Service Discovery lehetőséget.

  7. Válassza ki az Azure-előfizetését és az újonnan létrehozott Azure DocumentDB-fürtöt.

    Jótanács

    Számos vállalati környezetben a fejlesztői gép IP-címei vpn vagy más vállalati hálózati beállítások miatt rejtve vannak. Ezekben az esetekben ideiglenesen engedélyezheti az összes IP-cím elérését az 0.0.0.0 - 255.255.255.255 IP-címtartomány tűzfalszabályként való hozzáadásával. Ezt a tűzfalszabályt csak ideiglenesen használja a kapcsolattesztelés és -fejlesztés részeként. További információ: tűzfal konfigurálása.

  8. Visszatérve a DocumentDB-kapcsolatok panelre, bontsa ki a fürt csomópontját, és keresse meg a meglévő dokumentum- és gyűjteménycsomópontokat.

  9. Nyissa meg a gyűjtemény helyi menüjét, majd válassza a DocumentDB Scrapbook > New DocumentDB Scrapbook lehetőséget.

  10. Adja meg a következő MongoDB lekérdezési nyelv (MQL) parancsokat, majd válassza az Összes futtatása lehetőséget. Figyelje meg a parancsok kimenetét.

    db.products.find({
      price: { $gt: 200 },
      sale: true
    })
    .sort({ price: -1 })
    .limit(3)
    

Erőforrások tisztítása

Ha végzett az Azure DocumentDB-fürttel, törölheti a létrehozott Azure-erőforrásokat, így nem kell további díjakat fizetnie.

  1. Az Azure Portal keresősávján keresse meg és válassza ki az erőforráscsoportokat.

    Képernyőkép az erőforráscsoportok keresésének lehetőségről.

  2. A listában válassza ki a rövid útmutatóhoz használt erőforráscsoportot.

    Képernyőkép az erőforráscsoportról.

  3. Az erőforráscsoport lapján válassza az Erőforráscsoport törlése lehetőséget.

  4. A törlés megerősítését kérő párbeszédpanelen adja meg az erőforráscsoport nevét annak megerősítéséhez, hogy törölni kívánja azt. Végül válassza a Törlés lehetőséget az erőforráscsoport végleges törléséhez.

    Képernyőkép az erőforráscsoport törlésének megerősítését kérő gombról.