कलेक्शन बनाम SQL तालिकाएँ
शिक्षार्थी MongoDB कलेक्शन की रिलेशनल तालिकाओं से तुलना करेंगे और समझेंगे कि लचीला स्कीमा डेटा डिज़ाइन को कैसे बदलता है।
कलेक्शन बनाम SQL तालिकाएँ, CoddyKit पर MongoDB Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह MongoDB Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। MongoDB Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
तालिकाएँ बनाम collections: एक नज़र में
SQL की मूल इकाई तालिका है, जिसमें हर पंक्ति के कॉलम समान होते हैं। MongoDB की मूल इकाई collection है — दस्तावेज़ों का ऐसा समूह जिसमें हर दस्तावेज़ अलग हो सकता है।
स्थिर स्कीमा: SQL का तरीका
SQL में किसी भी डेटा को डालने से पहले स्थिर स्कीमा परिभाषित करना आवश्यक होता है, और बाद में इसे बदलने पर पूरी तालिका दोबारा बनानी पड़ सकती है। यह कठोर है, लेकिन अनुमानित और संग्रहण की दृष्टि से कुशल है।
-- SQL table: schema defined upfront, rigid
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(200) UNIQUE NOT NULL,
age INT,
created_at TIMESTAMP DEFAULT NOW()
);
-- Every row must have exactly these columnsलचीला स्कीमा: MongoDB का तरीका
जैसे ही आप डेटा डालते हैं, MongoDB collection अपने-आप बन जाती है — किसी स्कीमा की आवश्यकता नहीं होती। यह लचीला स्कीमा प्रोटोटाइप बनाने के लिए बहुत अच्छा है, लेकिन आपके कोड को अनुपस्थित फ़ील्ड संभालने होंगे।
// No schema definition needed - collection created on first insert
db.users.insertOne({ name: 'Alice', email: 'alice@test.com', age: 30 });
// Next insert can have completely different fields
db.users.insertOne({ name: 'Bob', email: 'bob@test.com', company: 'Acme', role: 'admin' });
// Both documents live in the same 'users' collectionस्कीमा बनाम स्कीमा-रहित: समझौता
इनमें से कोई भी हर स्थिति में बेहतर नहीं है। स्थिर स्कीमा खराब डेटा से सुरक्षा देते हैं, जबकि लचीले स्कीमा आपको तेज़ी से आगे बढ़ने देते हैं। MongoDB का JSON Schema validation एक वैकल्पिक बीच का रास्ता देता है।
नॉर्मलाइज़ेशन बनाम डी-नॉर्मलाइज़ेशन
SQL में नॉर्मलाइज़ेशन को प्राथमिकता दी जाती है — यानी डेटा को अलग-अलग तालिकाओं में बाँटना। MongoDB में डी-नॉर्मलाइज़ेशन को प्राथमिकता दी जाती है — यानी संबंधित डेटा को साथ में रखना, ताकि JOIN के बिना सब कुछ एक ही बार में पढ़ा जा सके।
// SQL normalized: address in separate table
// SELECT u.name, a.city FROM users u JOIN addresses a ON a.user_id = u.id
// MongoDB denormalized: address embedded in user document
{
_id: ObjectId('...'),
name: 'Alice',
address: { city: 'London', zip: 'EC1A' } // no JOIN needed
}collections बनाना स्पष्ट रूप से
Collections अपने-आप बन जाती हैं, लेकिन createCollection से आप पहले ही विकल्प निर्धारित कर सकते हैं — जैसे लॉग के लिए सीमित collection या कोई वैलिडेटर। कोड में इसका एक उदाहरण दिया गया है।
// Create a capped collection explicitly
db.createCollection('appLogs', {
capped: true,
size: 10485760, // 10 MB maximum size
max: 50000 // optional: max 50,000 documents
});
// When full, oldest documents are automatically removedcollections की सूची बनाना और हटाना
कुछ उपयोगी कमांड collections की सूची बनाते, उनकी गिनती करते और उन्हें हटाते हैं। किसी collection को हटाए बिना खाली करने के लिए deleteMany का उपयोग करें — MongoDB में TRUNCATE नहीं होता। कोड में इनके उदाहरण दिए गए हैं।
// Useful collection management commands in mongosh
db.getCollectionNames();
// ['users', 'orders', 'products']
db.users.countDocuments({});
// 4823
db.users.stats().storageSize;
// 2097152 (bytes)
// Delete all documents but keep the collection:
db.users.deleteMany({});
// { acknowledged: true, deletedCount: 4823 }_id फ़ील्ड और प्राथमिक कुंजियाँ
हर collection में _id प्राथमिक कुंजी के रूप में होता है और उसके लिए अपने-आप एक विशिष्ट इंडेक्स बनता है। आप अपना _id भी दे सकते हैं — जैसे किसी उत्पाद का SKU — बशर्ते वह विशिष्ट हो।
// Custom _id values
db.products.insertOne({
_id: 'SKU-HEADPHONES-BLK-42', // string _id
name: 'Wireless Headphones Black',
price: 79.99
});
// Lookup by custom _id is O(log n) via the _id index
db.products.findOne({ _id: 'SKU-HEADPHONES-BLK-42' });इंडेक्स संरचना में अंतर
SQL और MongoDB दोनों B-tree इंडेक्स का उपयोग करते हैं, लेकिन MongoDB नेस्ट किए गए फ़ील्ड और ऐरे के तत्वों पर भी इंडेक्स बना सकता है। इसलिए लचीले स्कीमा के कारण क्वेरी की गति कम नहीं होती।
// Index a nested field and an array field
db.users.createIndex({ 'address.city': 1 });
// Now queries on city use an index:
db.users.find({ 'address.city': 'Chicago' });
// Multikey index on array field - indexes each element
db.products.createIndex({ tags: 1 });
db.products.find({ tags: 'electronics' }); // uses multikey indexलेन-देन: तालिकाएँ बनाम collections
v4.0 से MongoDB बहु-दस्तावेज़ लेन-देन का समर्थन करता है। लेकिन संबंधित डेटा को एक ही दस्तावेज़ में रखकर आप अक्सर बिना लेन-देन के ही परमाणु अपडेट प्राप्त कर सकते हैं।
// Single-document atomicity (always available)
// Updating order status and adding a tracking number
db.orders.updateOne(
{ _id: orderId },
{ $set: { status: 'shipped', trackingNumber: 'UPS123456' } }
);
// These two field updates happen atomically - no transaction neededcollections की जगह तालिकाएँ कब चुनें
कुछ स्थितियों में SQL तालिकाएँ बेहतर विकल्प होती हैं: स्थिर स्कीमा, बहुत अधिक JOIN, या विदेशी-कुंजी की सख्त अखंडता। चलन में होने वाले विकल्प के बजाय सही साधन चुनें।
त्वरित जाँच
इस पाठ में MongoDB और NoSQL डेटाबेस की अवधारणाओं के बारे में अपनी समझ जाँचें।
पाठ का पुनरावलोकन
आपने सीखा कि collections किसी स्कीमा को अनिवार्य नहीं करतीं, MongoDB JOIN से बचने के लिए संबंधित डेटा को साथ रखता है, और हर collection में _id का इंडेक्स अपने-आप बनता है। अगला विषय: डेटाबेस और नेमस्पेस।
एआई शिक्षक के साथ JavaScript सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 30
- पाठ
- 120
अक्सर पूछे जाने वाले प्रश्न
क्या “कलेक्शन बनाम SQL तालिकाएँ” पाठ निःशुल्क है?
हाँ—“कलेक्शन बनाम SQL तालिकाएँ” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और MongoDB Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। MongoDB Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“कलेक्शन बनाम SQL तालिकाएँ” में मैं क्या सीखूँगा?
शिक्षार्थी MongoDB कलेक्शन की रिलेशनल तालिकाओं से तुलना करेंगे और समझेंगे कि लचीला स्कीमा डेटा डिज़ाइन को कैसे बदलता है। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ MongoDB Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या MongoDB Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर MongoDB Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“कलेक्शन बनाम SQL तालिकाएँ” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस MongoDB Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर MongoDB Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- BSON दस्तावेज़ क्या है
- कलेक्शन बनाम SQL तालिकाएँ
- डेटाबेस, कलेक्शन और नेमस्पेस
- mongosh शेल की आवश्यक बातें