परिचय: C++ में डेटाबेस क्यों जोड़ें
आधुनिक C++ एप्लिकेशन शायद ही कभी स्थायी डेटा भंडारण के बिना चलते हैं। चाहे वह गेम सर्वर हो, टेलीमेट्री सिस्टम हो या उच्च-लोड वाला बैकएंड — आपको DBMS के साथ इंटरैक्शन की आवश्यकता होगी। बाजार में दो मौलिक रूप से भिन्न दृष्टिकोण हावी हैं: रिलेशनल (SQL) और डॉक्यूमेंट-ओरिएंटेड (NoSQL) डेटाबेस।
इस लेख में, हम सीखेंगे कि PostgreSQL (libpqxx लाइब्रेरी के माध्यम से) और MongoDB (आधिकारिक C++ ड्राइवर mongo-cxx-driver के माध्यम से) के साथ कैसे काम करें। आप जानेंगे कि कनेक्शन कैसे सेट करें, CRUD-ऑपरेशन कैसे करें और त्रुटियों को कैसे संभालें।
1. PostgreSQL और C++: रिलेशनल दृष्टिकोण
PostgreSQL एक शक्तिशाली ऑब्जेक्ट-रिलेशनल DBMS है जिसमें ट्रांजेक्शन और जटिल क्वेरी के लिए उत्कृष्ट समर्थन है। C++ के लिए, libpqxx लाइब्रेरी का उपयोग करने की अनुशंसा की जाती है — libpq पर एक आधुनिक, टाइप-सेफ रैपर।
1.1 libpqxx की स्थापना
स्थापना आपके OS पर निर्भर करती है:
- Ubuntu/Debian:
sudo apt install libpqxx-dev - macOS (Homebrew):
brew install libpqxx - Windows (vcpkg):
vcpkg install libpqxx
1.2 कनेक्शन और क्वेरी निष्पादन
DB से कनेक्ट करने, टेबल बनाने और डेटा डालने के लिए एक न्यूनतम प्रोग्राम देखें:
#include <iostream>#include <pqxx/pqxx>
int main() { try { // डेटाबेस से कनेक्शन pqxx::connection conn("dbname=testdb user=postgres password=secret hostaddr=127.0.0.1 port=5432"); if (conn.is_open()) { std::cout << "Connected to PostgreSQL: " << conn.dbname() << std::endl; }
// ट्रांजेक्शन बनाना pqxx::work txn(conn);
// टेबल बनाना txn.exec("CREATE TABLE IF NOT EXISTS users (" "id SERIAL PRIMARY KEY," "name VARCHAR(100) NOT NULL," "email VARCHAR(255) UNIQUE NOT NULL" ");");
// डेटा डालना (सुरक्षा के लिए पैरामीटराइजेशन के साथ) txn.exec_params("INSERT INTO users (name, email) VALUES ($1, $2);", "Alice", "alice@example.com");
// ट्रांजेक्शन की पुष्टि txn.commit();
std::cout << "Data inserted successfully." << std::endl;
} catch (const std::exception &e) { std::cerr << "Error: " << e.what() << std::endl; return 1; } return 0;}1.3 डेटा पढ़ना
डेटा पुनर्प्राप्त करने के लिए, क्वेरी परिणाम पर इटरेटर का उपयोग करें:
pqxx::work txn(conn);pqxx::result result = txn.exec("SELECT id, name, email FROM users;");
for (auto row : result) { int id = row["id"].as<int>(); std::string name = row["name"].as<std::string>(); std::string email = row["email"].as<std::string>(); std::cout << id << ": " << name << " <" << email << ">" << std::endl;}2. MongoDB और C++: डॉक्यूमेंट-ओरिएंटेड दृष्टिकोण
MongoDB डेटा को BSON (बाइनरी JSON) प्रारूप में संग्रहीत करता है। C++ के लिए, आधिकारिक ड्राइवर mongo-cxx-driver का उपयोग किया जाता है, जो libmongoc लाइब्रेरी पर आधारित है।
2.1 mongo-cxx-driver की स्थापना
- Ubuntu:
sudo apt install libmongoc-1.0-0 libbson-1.0-0 libmongocxx-dev - macOS:
brew install mongo-cxx-driver - स्रोत से निर्माण:
cmake,libmongocऔरlibbsonकी आवश्यकता है।
2.2 कनेक्शन और CRUD-ऑपरेशन
स्थानीय MongoDB इंस्टेंस से कनेक्ट करने और एक दस्तावेज़ डालने का उदाहरण:
#include <iostream>#include <bsoncxx/b