Rust और PostgreSQL: दर्द रहित तरीके से तेज़ क्वेरी लिखें

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

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

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

Rust और PostgreSQL: आपके कोड को तेज़ बनाने वाली जोड़ी

\n\n

क्या आपने कभी सोचा है कि क्यों अधिक से अधिक backend डेवलपर Rust की ओर रुख कर रहे हैं? इसका जवाब सरल है: Rust मेमोरी और स्पीड पर नियंत्रण देता है, जबकि PostgreSQL डेटा पर। साथ मिलकर, ये एक ऐसी जोड़ी बनाते हैं जो बिना किसी रुकावट या मेमोरी लीक के प्रति सेकंड लाखों क्वेरी को संभाल सकती है।

\n\n

इस गाइड में, हम सीखेंगे कि Rust और PostgreSQL को कैसे जोड़ा जाए। आप जानेंगे कि कनेक्शन कैसे सेट करें, क्वेरी कैसे चलाएं, SQL इंजेक्शन से कैसे बचें, और async एप्लिकेशन कैसे बनाएं। चलिए शुरू करते हैं!

\n\n

Rust और PostgreSQL ही क्यों?

\n\n

Rust सिर्फ एक ट्रेंडी भाषा नहीं है। इसका ownership सिस्टम और borrow checker गारंटी देता है कि आपको null pointer या डैंगलिंग रेफरेंस नहीं मिलेंगे। और PostgreSQL सिर्फ एक डेटाबेस नहीं है। यह JSON, फुल-टेक्स्ट सर्च और जटिल ट्रांजैक्शन के सपोर्ट वाला एक शक्तिशाली टूल है।

\n\n

जब आप Rust और PostgreSQL को जोड़ते हैं, तो आपको मिलता है:

\n
    \n
  • सुरक्षा — Rust आपको गलती से गलत SQL भेजने नहीं देगा।
  • \n
  • प्रदर्शन — async ड्राइवर C के स्तर पर काम करते हैं।
  • \n
  • नियंत्रण — आप खुद तय करते हैं कि डेटा कब और कैसे लाना है।
  • \n
\n\n

एनवायरनमेंट सेटअप और इंस्टॉलेशन

\n\n

कोड लिखने से पहले, सुनिश्चित करें कि आपके पास ये इंस्टॉल हैं:

\n
    \n
  • Rust (नवीनतम स्थिर संस्करण) — rustup update
  • \n
  • PostgreSQL (लोकली या Docker के माध्यम से) — docker run --name pg -e POSTGRES_PASSWORD=pass -p 5432:5432 -d postgres
  • \n
  • लाइब्रेरी libpq-dev (Linux के लिए) या Mac/Windows पर इसका विकल्प
  • \n
\n\n

एक नया प्रोजेक्ट बनाएं:

\n\n
cargo new rust-postgres-guide\ncd rust-postgres-guide
\n\n

ड्राइवर का चुनाव: tokio-postgres बनाम sqlx

\n\n

Rust में PostgreSQL के साथ काम करने के दो मुख्य तरीके हैं:

\n
    \n
  • tokio-postgres — निम्न-स्तरीय async ड्राइवर। पूर्ण नियंत्रण देता है।
  • \n
  • sqlx — उच्च-स्तरीय async ड्राइवर जो कंपाइल टाइम पर क्वेरी की जांच करता है।
  • \n
\n\n

एडवांस प्रोजेक्ट्स के लिए, मैं sqlx की सलाह देता हूं — यह अधिक सुविधाजनक और सुरक्षित है। लेकिन अधिकतम नियंत्रण के लिए, tokio-postgres का उपयोग करें।

\n\n

Cargo.toml में डिपेंडेंसी जोड़ें:

\n\n
[dependencies]\ntokio = { version = "1", features = ["full"] }\nsqlx = { version = "0.7", features = ["runtime-tokio-rustls", "postgres"] }\nserde = { version = "1", features = ["derive"] }\n
\n\n

पहला कनेक्शन: Rust और PostgreSQL की मुलाकात

\n\n

एक सरल उदाहरण लिखते हैं जो डेटाबेस से कनेक्ट होता है और PostgreSQL का वर्जन लौटाता है।

\n\n
use sqlx::postgres::PgPoolOptions;\nuse std::error::Error;\n\n#[tokio::main]\nasync fn main() -> Result<(), Box<dyn Error>> {\n    // कनेक्शन स्ट्रिंग: postgres://user:password@host:port/db\n    let database_url = "postgres://postgres:pass@localhost:5432/postgres";\n    \n    // कनेक्शन का पूल बनाएं (reusable connections)\n    let pool = PgPoolOptions::new()\n        .max_connections(5)\n        .connect(database_url)\n        .await?;\n\n    // क्वेरी चलाएं\n    let row: (String,) = sqlx::query_as("SELECT version()")\n        .fetch_one(&pool)\n        .await?;\n\n    println!("PostgreSQL version: {}", row.0);\n    Ok(())\n}
\n\n

कोड चलाएं: cargo run। अगर सब कुछ सही है, तो आपको PostgreSQL का वर्जन दिखाई देगा। PgPoolOptions पर ध्यान दें — प्रोडक्शन के लिए कनेक्शन पूल अनिवार्य है। यह कनेक्शन का पुन: उपयोग करता है और हर क्वेरी के लिए नया कनेक्शन नहीं बनाता।

\n\n

टेबल बनाना और CRUD ऑपरेशन

\n\n

अब एक users टेबल बनाते हैं और बुनियादी ऑपरेशन करते हैं: इन्सर्ट, रीड, अपडेट, डिलीट।

\n\n

माइग्रेशन: टेबल बनाना

\n\n

sqlx में, माइग्रेशन अलग SQL फ़ाइलें होती हैं। एक migrations फ़ोल्डर बनाएं और इसमें एक फ़ाइल बनाएं

ब्लॉग

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