मैं रेल में अपनी पहली वास्तविक परियोजना बनाने जा रहा हूं जिसमें 3 मुख्य भाग से बने वेब ऐप शामिल हैं:
- वह स्थैतिक भाग जहाँ कोई डेटाबेस उपयोग नहीं किया जाता है
- उपयोगकर्ता पंजीकरण भाग जिसे डेटाबेस की आवश्यकता होगी और मैं MySQL का उपयोग कर सकता हूं क्योंकि प्रत्येक उपयोगकर्ता की पंक्ति में समान फ़ील्ड होंगे
- "ऐप" जहां उपयोगकर्ता संग्रह में आइटम बनाने, व्यवस्थित करने, संपादित करने ... उन्हें अन्य उपयोगकर्ताओं के साथ साझा करने में सक्षम होंगे
कई आइटम प्रकार होंगे और प्रत्येक के लिए अलग-अलग विकल्प होंगे उदाहरण के लिए मेरे पास निम्नलिखित विकल्पों के साथ "वीडियो" आइटम हो सकते हैं:
- आईडी
- यूज़र आईडी
- collection_id
- शीर्षक
- मंच (यदि एम्बेडेड)
- url (यदि एम्बेडेड है)
- फ़ाइल नाम (यदि मेरे ऐप पर होस्ट किया गया है)
- फ़ाइल का आकार (आईडी मेरे ऐप पर होस्ट की गई)
और "नक्शा" आइटम:
- आईडी
- यूज़र आईडी
- collection_id
- शीर्षक
- मंच (गूगल मैप्स, बिंग मैप्स ...)
- स्थान
- यूआरएल
- नक़्शे का आकार
जैसा कि आप उपयोगकर्ताओं के लिए कर सकते हैं जब मैं आइटम के लिए MySQL का उपयोग कर सकता हूं, तो MongoDB का लचीलापन उपयोगी हो सकता है क्योंकि प्रत्येक आइटम को अलग-अलग विकल्पों की आवश्यकता हो सकती है तब अन्य आइटम
अब तक मैंने हमेशा PHP और MySQL (छोटी परियोजनाओं के लिए साझा होस्टिंग पर) का उपयोग किया है और स्केलेबिलिटी मेरे लिए एक बिल्कुल नया शब्द है।
मेरे पास सीखने के लिए समय है लेकिन मैं 1 महीने की तरह कुछ करने में सक्षम होना चाहूंगा।
मैंने MongoDB और NoSQL बनाम RDMS और MySQL के बारे में बहुत कुछ पढ़ा है और इसे आज़माने के बाद मुझे यह कहना है कि मुझे पसंद है कि MongoDB कैसे काम करता है: कोई तालिका नहीं, कोई पंक्तियाँ और इसके दस्तावेज़ नहीं जैसे JSON:
- मेरी स्थिति में आप क्या सलाह देंगे? क्यों?
- स्केलेबिलिटी के बारे में MongoDB के साथ समस्याएं हो सकती हैं? यदि हाँ, तो (DB आकार की अवधि में) और क्या ये समस्याएं मेरे ऐप को धीमा कर सकती हैं?
संपादित करें: ऐप कैसे काम करेगा
चूंकि कई लोगों ने यह पूछा है कि मैं ऐप को कैसे काम करना चाहूंगा:
- एक उपयोगकर्ता साइन अप
- वह लॉग इन है
- वह अपना पहला संग्रह बनाता है, जिसमें वह अनंत वस्तुएं बना सकता है
- आइटम विभिन्न प्रकार के होते हैं और प्रत्येक प्रकार को डेटाबेस में सहेजने के लिए अलग-अलग डेटा की आवश्यकता होती है और आइटम के प्रकार को जोड़ा या संशोधित किया जा सकता है
उपयोगकर्ता इसके अंदर अन्य संग्रह और आइटम बना सकते हैं।
इसलिए हमारे पास उनके अंदर संग्रह और आइटम के लिए CRUD है और प्रत्येक संग्रह / आइटम को एक विशिष्ट उपयोगकर्ता को संदर्भित किया जाता है
MySQL के साथ मुख्य समस्या यह है कि यह एक लचीला स्कीमा नहीं है, इसे हल करने का एक तरीका है (वर्कअराउंड?)।
NoSQL के बारे में सोचकर मुझे केवल संदेह है कि मैं इसमें शामिल होने के बारे में हूं, उदाहरण के लिए एक निश्चित सामंजस्य दिया गया है जिसे मैं उपयोगकर्ता से संबंधित डेटा = संग्रह में user_id फ़ील्ड के साथ पुनर्प्राप्त करना चाहता हूं
संपादित करें: MySQL का उपयोग करने के लिए विचार
वैकल्पिक सेटिंग्स के साथ "आइटम" तालिका में एक फ़ील्ड बनाएं, प्रत्येक सेटिंग को ए द्वारा विभाजित किया गया है | या एक और प्रतीक।
तब मैं प्रत्येक आइटम वैकल्पिक सेटिंग्स की एक संरचना को बचाऊंगा, उदाहरण के लिए "नोट्स" आइटम प्रकार को दो वैकल्पिक सेटिंग्स "रंग" और "अजीब_सेटिंग" की आवश्यकता होती है, जब मुझे MySQL से डेटा मिलता है तो मैं वैकल्पिक सेटिंग्स के लिए फ़ील्ड को एक में विभाजित करूंगा सरणी जानने कि सरणी में पहला आइटम "रंग" और इतने पर है।
तुम क्या सोचते हो? उस समाधान के साथ कोई समस्या है? क्या आपके पास अन्य विचार हैं?