Rust में डेटाबेस के साथ काम करना: PostgreSQL और MongoDB

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

परिचय: क्यों Rust और डेटाबेस एक आदर्श संयोजन हैं

Rust एक आधुनिक सिस्टम प्रोग्रामिंग भाषा है, जो C/C++ के प्रदर्शन को कंपाइलर द्वारा गारंटीकृत मेमोरी सुरक्षा के साथ जोड़ती है। बैकएंड सेवाओं, वेब एप्लिकेशन और माइक्रोसर्विसेज को विकसित करते समय, डेटाबेस के साथ इंटरैक्शन की आवश्यकता लगभग हमेशा उत्पन्न होती है। इस लेख में, हम विस्तार से देखेंगे कि दो सबसे लोकप्रिय प्रकार के DB: रिलेशनल PostgreSQL और डॉक्यूमेंट-ओरिएंटेड MongoDB के साथ कैसे काम करें।

हम व्यावहारिक उदाहरणों के साथ कनेक्शन, CRUD ऑपरेशन, ट्रांजेक्शन और एग्रीगेशन को कवर करेंगे। सभी कोड उदाहरण async रनटाइम tokio का उपयोग करके Rust में लिखे गए हैं, जो अधिकतम प्रदर्शन प्रदान करता है।



1. प्रोजेक्ट सेटअप और निर्भरताएँ स्थापित करना

शुरू करने के लिए, एक नया प्रोजेक्ट बनाएँ और आवश्यक क्रेट्स जोड़ें। टर्मिनल खोलें और निष्पादित करें:

cargo new rust_db_examplecd rust_db_example

फ़ाइल Cargo.toml में निर्भरताएँ जोड़ें:

[dependencies]tokio = { version = "1", features = ["full"] }sqlx = { version = "0.7", features = ["runtime-tokio-rustls", "postgres"] }mongodb = "2.8"serde = { version = "1.0", features = ["derive"] }serde_json = "1.0"chrono = { version = "0.4", features = ["serde"] }

अब प्रोजेक्ट संरचना तैयार है। हम PostgreSQL के लिए sqlx का उपयोग करेंगे - यह कंपाइल करने योग्य क्वेरी के समर्थन के साथ एक async ड्राइवर है, और MongoDB के साथ काम करने के लिए आधिकारिक mongodb ड्राइवर का उपयोग करेंगे।



1.1. sqlx के माध्यम से PostgreSQL से कनेक्शन

PostgreSQL के साथ काम करने के लिए एक मॉड्यूल लिखें। फ़ाइल src/postgres.rs बनाएँ:

use sqlx::postgres::PgPoolOptions;use sqlx::PgPool;use anyhow::Result;

pub async fn connect_to_postgres() -> Result<PgPool> { let database_url = "postgres://user:password@localhost:5432/mydb"; let pool = PgPoolOptions::new() .max_connections(5) .connect(database_url) .await?; println!("✅ PostgreSQL से कनेक्ट हुए"); Ok(pool)}

// उपयोगकर्ता मॉडल परिभाषित करें#[derive(Debug, sqlx::FromRow)]pub struct User { pub id: i32, pub name: String, pub email: String, pub created_at: chrono::NaiveDateTime,}


1.2. MongoDB से कनेक्शन

फ़ाइल src/mongodb.rs बनाएँ:

use mongodb::{Client, Collection, Database};use mongodb::bson::{doc, Document};use anyhow::Result;

pub async fn connect_to_mongodb() -> Result<(Database, Collection<Document>)> { let client = Client::with_uri_str("mongodb://localhost:27017")?; let database = client.database("mydb"); let collection = database.collection::<Document>("users"); println!("✅ MongoDB से कनेक्ट हुए"); Ok((database, collection))}


2. PostgreSQL में CRUD ऑपरेशन

अब हम बुनियादी ऑपरेशन लागू करेंगे: रिकॉर्ड बनाना, पढ़ना, अपडेट करना और हटाना।



2.1. डेटा सम्मिलित करना (CREATE)

pub async fn create_user(pool: &PgPool, name: &str, email: &str) -> Result<User> {    let user = sqlx::query_as::<_, User>(        "INSERT INTO users (name, email) VALUES ($1, $2) RETURNING id, name, email, created_at"    )    .bind(name)    .bind(email)    .fetch_one(pool)    .await?;        println!("उपयोगकर्ता बनाया गया: {:?}", user);    Ok(user)}


2.2. डेटा पढ़ना (READ)

pub async fn get_user_by_id(pool: &PgPool, user_id: i32) -> Result<Option<User>> {    let user = sqlx::query_as::<_, User>(        "SELECT id, name, email, created_at FROM users WHERE id = $1"    )    .bind(user_id)    .fetch_optional(pool)    .await?;        match user {        Some(u) => println!("उपयोगकर्ता मिला: {:?}", u),        None => println!("id={} वाला उपयोगकर्ता नहीं मिला"                

ब्लॉग

पुस्तक अनुशंसाएँ