Go में डेटाबेस के साथ काम करना: शुरुआती लोगों के लिए PostgreSQL और MongoDB
Go (Golang) एक आधुनिक कंपाइल की जाने वाली भाषा है जिसने अपनी उच्च प्रदर्शन, सरलता और अंतर्निहित समवर्ती समर्थन के कारण लोकप्रियता हासिल की है। वेब सेवाओं और एप्लिकेशन विकसित करते समय, लगभग हमेशा डेटाबेस के साथ इंटरैक्ट करने की आवश्यकता होती है। इस लेख में, हम देखेंगे कि दो लोकप्रिय DBMS के साथ कैसे काम करें: रिलेशनल PostgreSQL और डॉक्यूमेंट-ओरिएंटेड MongoDB। यह सामग्री शुरुआती डेवलपर्स के लिए है जो पहले से ही Go की मूल बातों से परिचित हैं।
1. वातावरण तैयार करना और ड्राइवर स्थापित करना
शुरू करने से पहले, सुनिश्चित करें कि आपके पास Go (संस्करण 1.16+) स्थापित है और संबंधित DBMS चल रहे हैं। PostgreSQL के साथ काम करने के लिए lib/pq ड्राइवर की आवश्यकता होगी, और MongoDB के लिए आधिकारिक mongo-go-driver ड्राइवर की आवश्यकता होगी।
go get github.com/lib/pqgo get go.mongodb.org/mongo-driver/mongoएक नया मॉड्यूल बनाएँ:
go mod init example.com/db-demo2. Go में PostgreSQL के साथ काम करना
PostgreSQL SQL समर्थन के साथ एक शक्तिशाली रिलेशनल डेटाबेस है। Go में, हम lib/pq ड्राइवर के साथ मानक पैकेज database/sql का उपयोग करते हैं।
2.1 डेटाबेस से कनेक्शन
कनेक्ट करने के लिए, कनेक्शन स्ट्रिंग (DSN) को इस प्रारूप में निर्दिष्ट करना आवश्यक है: host=... port=... user=... password=... dbname=... sslmode=disable।
package main
import ( "database/sql" "fmt" "log" _ "github.com/lib/pq")
func main() { connStr := "host=localhost port=5432 user=postgres password=secret dbname=testdb sslmode=disable" db, err := sql.Open("postgres", connStr) if err != nil { log.Fatal(err) } defer db.Close()
err = db.Ping() if err != nil { log.Fatal("कनेक्ट नहीं हो सका:", err) } fmt.Println("PostgreSQL से कनेक्शन स्थापित!")}2.2 तालिका बनाना और CRUD-ऑपरेशन
आइए users तालिका बनाने और बुनियादी ऑपरेशन करने पर विचार करें।
// तालिका बनानाcreateTable := `CREATE TABLE IF NOT EXISTS users ( id SERIAL PRIMARY KEY, name VARCHAR(100) NOT NULL, email VARCHAR(100) UNIQUE NOT NULL, age INT);`
_, err = db.Exec(createTable)if err != nil { log.Fatal(err)}
// डेटा सम्मिलित करनाsqlInsert := `INSERT INTO users (name, email, age) VALUES ($1, $2, $3) RETURNING id`var userID interr = db.QueryRow(sqlInsert, "इवान पेत्रोव", "ivan@example.com", 30).Scan(&userID)if err != nil { log.Fatal(err)}fmt.Printf("ID के साथ उपयोगकर्ता जोड़ा गया: %d", userID)
// डेटा क्वेरी करनाrows, err := db.Query("SELECT id, name, email, age FROM users")if err != nil { log.Fatal(err)}defer rows.Close()
for rows.Next() { var u struct { ID int Name string Email string Age int } err := rows.Scan(&u.ID, &u.Name, &u.Email, &u.Age) if err != nil { log.Fatal(err) } fmt.Printf("ID: %d, नाम: %s, Email: %s, आयु: %d", u.ID, u.Name, u.Email, u.Age)}2.3 तैयार क्वेरी का उपयोग करना
तैयार क्वेरी (prepared statements) सुरक्षा और प्रदर्शन को बढ़ाती हैं, विशेष रूप से दोहराए जाने वाले ऑपरेशनों के लिए।
stmt, err := db.Prepare("UPDATE users SET age = $1 WHERE id = $2")if err != nil { log.Fatal(err)}defer stmt.Close()
_, err = stmt.Exec(35, 1)if err != nil { log.Fatal(err)}fmt.Println("उपयोगकर्ता की आयु अपडेट की गई")3. Go में MongoDB के साथ काम करना
MongoDB एक डॉक्यूमेंट-ओरिएंटेड NoSQL डेटाबेस है। Go में, इसके साथ काम आधिकारिक ड्राइवर mongo-go-driver के माध्यम से किया जाता है, जो ऑपरेशन निष्पादन समय को प्रबंधित करने के लिए कॉन्टेक्स्ट का उपयोग करता है।
3.1 MongoDB से कनेक्शन
pa