परिचय: क्यों Go और डेटाबेस एक आदर्श जोड़ी हैं
Go (Golang) एक कंपाइल्ड, स्टैटिकली टाइप की गई भाषा है, जिसे उच्च प्रदर्शन और विकास में सरलता के लिए बनाया गया है। Go के प्रमुख लाभों में से एक डेटाबेस के साथ काम करने के लिए इसकी समृद्ध मानक लाइब्रेरी और ड्राइवरों का पारिस्थितिकी तंत्र है। इस लेख में, हम समझेंगे कि दो सबसे लोकप्रिय डेटाबेस प्रबंधन प्रणालियों (DBMS) से कैसे जुड़ें और संचालन करें: रिलेशनल PostgreSQL और डॉक्यूमेंट-ओरिएंटेड MongoDB।
हम ड्राइवरों की स्थापना, CRUD संचालन (Create, Read, Update, Delete) लिखना, और Go अनुप्रयोगों के संदर्भ में प्रत्येक प्रकार के DB के लिए सर्वोत्तम अभ्यासों को देखेंगे।
1. Go में PostgreSQL के साथ काम करना
PostgreSQL एक शक्तिशाली ओपन-सोर्स ऑब्जेक्ट-रिलेशनल DBMS है। Go में इसके साथ काम करने के लिए कई ड्राइवर हैं, लेकिन सबसे लोकप्रिय lib/pq और pgx हैं। pgx अधिक आधुनिक और प्रदर्शनकारी है, इसलिए हम इसका उपयोग करेंगे।
1.1. ड्राइवर की स्थापना
go get के माध्यम से pgx पैकेज स्थापित करें:
go get github.com/jackc/pgx/v51.2. डेटाबेस से कनेक्शन
एक main.go फ़ाइल बनाएं और PostgreSQL से कनेक्शन स्थापित करें। कॉन्टेक्स्ट (context.Background()) के उपयोग पर ध्यान दें - यह Go में अनुरोधों के जीवनकाल को प्रबंधित करने का मानक पैटर्न है।
package main
import ( "context" "fmt" "log"
"github.com/jackc/pgx/v5/pgxpool")
func main() { // कनेक्शन स्ट्रिंग: postgres://username:password@host:port/dbname connString := "postgres://user:password@localhost:5432/mydb" // कनेक्शन पूल बनाएं (production के लिए अनुशंसित) pool, err := pgxpool.New(context.Background(), connString) if err != nil { log.Fatal("कनेक्शन पूल बनाने में विफल:", err) } defer pool.Close() // कनेक्शन की जाँच करें err = pool.Ping(context.Background()) if err != nil { log.Fatal("DB से कनेक्ट होने में विफल:", err) } fmt.Println("PostgreSQL से सफलतापूर्वक जुड़ गए!")1.3. SQL क्वेरी निष्पादित करना (CRUD)
users तालिका के उदाहरण के साथ मुख्य संचालन देखें।
तालिका बनाना (CREATE)
// DDL क्वेरी निष्पादित करना_, err = pool.Exec(context.Background(), ` CREATE TABLE IF NOT EXISTS users ( id SERIAL PRIMARY KEY, name VARCHAR(100) NOT NULL, email VARCHAR(100) UNIQUE NOT NULL, age INT )`)if err != nil { log.Fatal("तालिका बनाने में त्रुटि:", err)}डेटा सम्मिलित करना (INSERT)
// ID वापस करने के साथ सम्मिलित करनाvar userID interr = pool.QueryRow(context.Background(), "INSERT INTO users (name, email, age) VALUES ($1, $2, $3) RETURNING id", "अलेक्से", "alex@example.com", 30).Scan(&userID)if err != nil { log.Fatal("सम्मिलित करने में त्रुटि:", err)}fmt.Printf("ID के साथ उपयोगकर्ता जोड़ा गया: %d", userID)डेटा पढ़ना (SELECT)
// एक उपयोगकर्ता प्राप्त करनाtype User struct { ID int Name string Email string Age int}
var user Usererr = pool.QueryRow(context.Background(), "SELECT id, name, email, age FROM users WHERE id = $1", 1). Scan(&user.ID, &user.Name, &user.Email, &user.Age)if err != nil { log.Fatal("उपयोगकर्ता नहीं मिला:", err)}fmt.Printf("मिला: %+v", user)अपडेट और डिलीट (UPDATE/DELETE)
// अपडेट_, err = pool.Exec(context.Background(), "UPDATE users SET age = $1 WHERE id = $2", 31, 1)
// डिलीट_, err = pool.Exec(context.Background(), "DELETE FROM users WHERE id = $1", 1)2. Go में MongoDB के साथ काम करना
MongoDB एक अग्रणी NoSQL डेटाबेस है, जो स्टोरेज
```