परिचय: डेवलपर को SQL और NoSQL क्यों जानना चाहिए?
\nजावास्क्रिप्ट (Node.js) में आधुनिक वेब डेवलपमेंट शायद ही कभी डेटाबेस के साथ इंटरैक्शन के बिना होता है। रिलेशनल (PostgreSQL) और डॉक्यूमेंट-ओरिएंटेड (MongoDB) DBMS के बीच चुनाव प्रमुख आर्किटेक्चरल कार्यों में से एक है। इस लेख में, हम व्यवहार में देखेंगे कि दोनों डेटाबेस से कैसे कनेक्ट किया जाए, CRUD संचालन कैसे किया जाए और किसी विशिष्ट कार्य के लिए उपयुक्त टूल कैसे चुना जाए।
\nहम लोकप्रिय लाइब्रेरी का उपयोग करेंगे: PostgreSQL के लिए pg और MongoDB के लिए mongoose। सभी कोड उदाहरण Node.js पर हैं।
1. Node.js में PostgreSQL: रिलेशनल दृष्टिकोण
\n1.1. कनेक्शन और कॉन्फ़िगरेशन
\nPostgreSQL SQL समर्थन के साथ एक शक्तिशाली रिलेशनल DBMS है। Node.js में इसके साथ काम करने के लिए, पैकेज pg इंस्टॉल करें:
npm install pg\nस्थानीय डेटाबेस mydb से कनेक्शन का उदाहरण:
const { Pool } = require('pg');\n\nconst pool = new Pool({\n user: 'postgres',\n host: 'localhost',\n database: 'mydb',\n password: 'secret',\n port: 5432,\n});\n\n// कनेक्शन का परीक्षण\npool.query('SELECT NOW()', (err, res) => {\n if (err) {\n console.error('कनेक्शन त्रुटि:', err);\n } else {\n console.log('PostgreSQL से कनेक्ट:', res.rows[0].now);\n }\n});\n\n1.2. CRUD संचालन (सृजन, पढ़ना, अद्यतन, हटाना)
\nहम एक तालिका users बनाएंगे और बुनियादी संचालन करेंगे।
तालिका बनाना:
\nconst createTable = async () => {\n const query = `\n CREATE TABLE IF NOT EXISTS users (\n id SERIAL PRIMARY KEY,\n name VARCHAR(100) NOT NULL,\n email VARCHAR(100) UNIQUE NOT NULL,\n age INTEGER\n );\n `;\n await pool.query(query);\n console.log('तालिका users बनाई गई');\n};\n\ncreateTable();\nडेटा सम्मिलित करना (INSERT):
\nconst addUser = async (name, email, age) => {\n const query = 'INSERT INTO users (name, email, age) VALUES ($1, $2, $3) RETURNING *';\n const values = [name, email, age];\n const res = await pool.query(query, values);\n console.log('उपयोगकर्ता जोड़ा गया:', res.rows[0]);\n};\n\naddUser('इवान पेत्रोव', 'ivan@example.com', 30);\nडेटा पढ़ना (SELECT):
\nconst getUsers = async () => {\n const res = await pool.query('SELECT * FROM users');\n console.log('सभी उपयोगकर्ता:', res.rows);\n};\n\ngetUsers();\nडेटा अद्यतन (UPDATE):
\nconst updateUserAge = async (id, newAge) => {\n const query = 'UPDATE users SET age = $1 WHERE id = $2 RETURNING *';\n const values = [newAge, id];\n const res = await pool.query(query, values);\n console.log('उपयोगकर्ता अद्यतन किया गया:', res.rows[0]);\n};\n\nupdateUserAge(1, 31);\nडेटा हटाना (DELETE):
\nconst deleteUser = async (id) => {\n const query = 'DELETE FROM users WHERE id = $1 RETURNING *';\n const values = [id];\n const res = await pool.query(query, values);\n console.log('उपयोगकर्ता हटाया गया:', res.rows[0]);\n};\n\ndeleteUser(1);\nपैरामीटराइज़्ड क्वेरी ($1, $2) के उपयोग पर ध्यान दें। यह SQL इंजेक्शन से बचाता है।
1.3. PostgreSQL कब चुनें?
\n- \n
- डेटा की सख्त संरचना और अखंडता समर्थन (विदेशी कुंजी, लेन-देन) आवश्यक है। \n
- जटिल JOIN क्वेरी और एग्रीगेशन आवश्यक हैं। \n
- वित्तीय या महत्वपूर्ण डेटा के साथ काम करना। \n
- प्रोजेक्ट Sequelize या TypeORM जैसे ORM का उपयोग करता है। \n
2. Node.js में MongoDB: NoSQL की लचीलापन
\n2.1. Mongoose के माध्यम से कनेक्शन
\nMongoDB एक डॉक्यूमेंट-ओरिएंटेड डेटाबेस है जहाँ डेटा JSON-like (BSON) प्रारूप में संग्रहीत होता है। काम करने के लिए mongoose इंस्टॉल करें:
npm install mongoose\nस्थानीय Mo सर्वर से कनेक्शन