एक माइक्रोब्लॉगिंग प्रकार का आवेदन है। शून्य पर दो मुख्य मूल डेटाबेस स्टोर हैं: MySQL या MongoDB।कई JSON फ़ील्ड के साथ MongoDB बनाम MySQL का उपयोग कर?
मैं बहुत सारे डेटा को denormalize करने की योजना बना रहा हूँ Ie. किसी पोस्ट पर किए गए वोट को मतदान तालिका में संग्रहीत किया जाता है, मुख्य पोस्ट तालिका में भी गणना की जाती है। पोस्ट के साथ अन्य क्रियाएं भी शामिल हैं (जैसे, वोट करें)।
यदि मैं MySQL का उपयोग करता हूं, तो कुछ डेटा तेजी से लुकअप के लिए निश्चित स्कीमा से JSON के रूप में बेहतर सूट।
उदा।
POST_ID | activity_data
213423424 | { 'likes': {'count':213,'recent_likers' :
['john','jack',..fixed list of recent N users]} , 'smiles' :
{'count':345,'recent_smilers' :
['mary','jack',..fixed list of recent N users]} }
आवेदन के अन्य घटक भी हैं, जहां JSON का उपयोग प्रस्तावित किया जा रहा है। तो, एक JSON क्षेत्र अद्यतन करने के लिए, अनुक्रम है:
अजगर स्क्रिप्ट में JSON पढ़ें।
JSON अपडेट करें
स्टोर JSON वापस MySQL में।
यह $push
, $inc
, $pull
आदि जैसे परमाणु संचालन के साथ MongoDB में एक ऑपरेशन हो गया होता भी MongoDB के दस्तावेज़ संरचना अच्छी तरह से अपने डेटा सूट।
डेटा स्टोर चुनते समय मेरे विचार।
MySQL के बारे में:
- स्थिर और परिचित।
- बैकअप और पुनर्स्थापित करना आसान है।
- कुछ भविष्य स्कीमा परिवर्तनों को कुछ क्षेत्रों का उपयोग स्कीमालेस जेएसओएन के रूप में टाला जा सकता है।
- को मेमकैच की शुरुआत में परत का उपयोग करना पड़ सकता है।
- जेएसओएन ब्लब्स मुख्य पदों जैसे कुछ तालिकाओं में स्थिर होंगे, हालांकि पोस्ट वोट और पसंद जैसे कुछ अन्य तालिकाओं में बहुत कुछ अपडेट किया जाएगा।
MongoDB के बारे में:
- बेहतर दुकान स्कीमा कम दस्तावेजों के रूप में डेटा के लिए अनुकूल।
- कैशिंग को बाद के चरण तक टाला जा सकता है।
- कभी-कभी ऐप लिखने में गहन हो सकता है, मोंगो डीबी उन बिंदुओं पर बेहतर प्रदर्शन कर सकता है जहां असुरक्षित लिखना कोई मुद्दा नहीं है।
- स्थिरता और विश्वसनीयता के बारे में निश्चित नहीं है।
- यह सुनिश्चित नहीं है कि बैकअप और पुनर्स्थापित करना कितना आसान है।
सवाल:
- हम MongoDB चुना दूँ, तो डेटा के आधे स्कीमा-है, और अगर MySQL का उपयोग कर JSON के रूप में जमा किया जा रहा है?
मुख्य पदों जैसे कुछ डेटा महत्वपूर्ण हैं, इसलिए इसे सुरक्षित लिखने, काउंटर इत्यादि का उपयोग करके सहेजा जाएगा असुरक्षित लिखने का उपयोग करके सहेजा जाएगा। क्या यह नीति डेटा के महत्व पर आधारित है, और तीव्रता सही लिखती है?
MySQL की तुलना में MongoDB की निगरानी, बैकअप और पुनर्स्थापित करना कितना आसान है? हमें आवधिक बैकअप (दैनिक कहने) की योजना बनाने की आवश्यकता है, और आपदा के मामले में उन्हें आसानी से बहाल करना होगा। आवेदन के लिए इसे सुरक्षित शर्त बनाने के लिए मोंगो डीबी के साथ मेरे पास सबसे अच्छे विकल्प क्या हैं।
स्थिरता, बैकअप, फोटो, बहाल करने, व्यापक गोद लेने I.e.database स्थायित्व मुझे ओर इशारा करते हुए के रूप में आरडीबीएमएस + NoSQL MySQL का उपयोग करने के भले ही एक NoSQL दस्तावेज़ संग्रहण मेरा उद्देश्य बेहतर सेवा कर सकता है कारण हैं।
कृपया मेरे विचारों को ध्यान में रखते हुए डेटाबेस डिज़ाइन पर विचार करते हुए MySQL और MongoDB के बीच की पसंद पर अपने विचारों पर ध्यान केंद्रित करें। मुझे पता है कि आरडीबीएमएस या मोंगोडीबी दस्तावेजों के साथ डेटाबेस डिजाइन की योजना बनाने के बेहतर तरीके हो सकते हैं। लेकिन यह मेरे प्रश्न का वर्तमान फोकस नहीं है।
अद्यतन: MySQL 5.7 के बाद से, MySQL एक अमीर देशी JSON डेटाप्रकार जो डेटा लचीलापन के साथ ही अमीर JSON क्वेरी प्रदान करता है समर्थन करता है।
https://dev.mysql.com/doc/refman/5.7/en/json.html
गंभीरता से ऐसा न करें। आपको एसएसएल में जेसन का उपयोग नहीं करना चाहिए क्योंकि आपके पास इसकी क्वेरी करने की क्षमता नहीं होगी। यदि आपको उस डेटा से पूछताछ करने की आवश्यकता नहीं है तो आप किसी भी बाइनरी प्रारूप का उपयोग कर सकते हैं (जिसमें जेसन शामिल है)। मोंगोड जेसन का उपयोग करता है क्योंकि यह इसे समझता है और इसे पूछ सकता है। postgresql इसका समर्थन कर सकता है मैं कोशिश की है। लेकिन वैसे भी आपको सामान्य mysql तरीके से mysql का उपयोग करना चाहिए। जब तक आपके पास सेवा करने के लिए एक समर्पित मशीन न हो और आपके पास लिखने की मात्रा बढ़ने के बाद तक आपको किसी और चीज की आवश्यकता नहीं है। यदि आप मोंगोडब को खिलौना ऐप बनाने की कोशिश करना चाहते हैं या खुद को तैयार/सीखने/बग या अन्य फिक्स को बनाए रखने में बहुत समय व्यतीत करना चाहते हैं। –
@ acidzombie24 मैं जेसन के अंदर डेटा पूछताछ या खोज नहीं करूँगा। जब कोई कार्रवाई होती है तो उन्हें केवल लिखने के लिए संसाधित किया जाता है, लेकिन हमेशा प्राथमिक जेएस के रूप में प्राथमिक कुंजी द्वारा पढ़ा जाता है। – DhruvPathak
हम्म ठीक है लेकिन मेरी आखिरी वाक्य। सुरक्षित लेखन (जो अवरुद्ध है) के बारे में भी जागरूक रहें और 32 बिट्स का अर्थ है कि आपका डीबी 2 जीबी तक सीमित है –