2012-03-22 12 views
6

मैं एक आधार तैयार करने पर काम कर रहा हूं जो शायद 10012 एमबी से छोटा रह जाएगा, इसका अपना सर्वर है, और एक इंट्रानेट जावा ईई वेब एप्लिकेशन के माध्यम से इसे पढ़ और संशोधित किया जा रहा है। मुझे बड़े अड्डों के लिए अनुकूलन पर बहुत सारे संदर्भ मिल गए हैं, और मुझे पता है कि यह एक और अधिक महत्वपूर्ण मुद्दा है, लेकिन मेरे पास बहुत समय है, पढ़ना/सम्मिलन गति एक परियोजना प्राथमिकता है, और मुझे पूरा यकीन है कि मैं किसी भी तरह, इस तरह के एक छोटे से कुल डीबी आकार का लाभ ले सकते हैं। जब तक MySQL पहले से स्वाभाविक रूप से उस तरह के छोटे बेंचमार्क के लिए अनुकूलित नहीं किया जाता है।एक छोटे डेटाबेस को संभालने के लिए MySQL को अनुकूलित करने के लिए कैसे करें, यानी <100mb?

यह निश्चित रूप से स्मृति पर फिट है, लेकिन मुझे वास्तव में डिस्क पर पर, या कम से कम डिस्क पर सहेजा जा सकता है; मैंने कुछ पागल-ध्वनि विकल्पों के बारे में सोचा है, जैसे अनुक्रमिक रूप से पहली बार मेमोरी में पूरे आधार को लोड करने की आवश्यकता है (उपयोगकर्ता कनेक्शन समय, संभवतः?), किसी भी तरह से, और बाद में इसे डिस्क पर ले जा रहा है।

लेकिन मैंने सोचा कि इसे यहां पूछना बेहतर है और देखें कि किसी को इस तरह की स्थिति का सामना करना पड़ता है, और को छोटे बेस आकार से लाभ लेने का एक अच्छा विचार था।

मैं डेटाबेस का उपयोग के संदर्भ में अधिक सोच रहा हूँ और नहीं संरचना, हालांकि वे पहुँच अनुकूलन के मुद्दे पूरी तरह से अप्रासंगिक बनाने के अगर किसी छोटे ठिकानों के लिए संरचना डिजाइन टिप्स है और विश्वास करता है, यह बताते हुए कि शायद के रूप में एक उचित प्रतिक्रिया है कुंआ।

अग्रिम धन्यवाद।

संपादित करें: ऐप थोडा महत्वपूर्ण है और जब मैं कर रहा हूं तो यह उन लोगों द्वारा विकसित किया जाएगा जो अधिकांशतः MySQL के लिए उपयोग किए जाते हैं, इसलिए अलग-अलग डीबीएमएस एक विकल्प नहीं हैं जब तक कि वे MySQL के समान नहीं हैं।

+4

बस सुनिश्चित करें कि mysql के कैश डीबी के आकार से बड़े होने के लिए सेट हैं और यह तालिका पर काम करते समय स्वाभाविक रूप से स्मृति में कैश होगा। –

+0

मैंने इसके बारे में सोचा है, विश्वास नहीं था कि यह इस तरह से काम करेगा। बहुत चिकनी लगता है, मुझे यकीन है कि मैं बस ऐसा करने जा रहा हूं। धन्यवाद! – userBigNum

+0

क्या आप वास्तव में प्रदर्शन समस्याओं में भाग रहे हैं? ऐसा लगता है कि आप समयपूर्व अनुकूलन का प्रयास कर रहे हैं। सबसे पहले, एप्लिकेशन को कार्यान्वित करें, फिर इसे बेंचमार्क करें, और आखिरकार इसे अनुकूलित करें यदि बेंचमार्क गंभीर बाधाओं को दिखाता है। – Barmar

उत्तर

0

आप membase को देखने का प्रयास कर सकते हैं - मुझे प्रदर्शन और दृढ़ता के बारे में बहुत अच्छी चीजें बताई गई हैं। अनिवार्य रूप से एक स्मृति "डेटाबेस" जो डिस्क पर जारी रहता है।

+0

दिलचस्प लगता है, लेकिन मैंने 2011 के मध्य से मेम्बेस बोर्डों में कुछ पोस्ट देखी हैं और यह स्पष्ट था कि यह अभी तक उत्पादन वातावरण में तैनात होने के लिए पर्याप्त स्थिर नहीं था, क्या यह अब बेहतर है? इसके अलावा, यह MySQL के समान कैसे है? परियोजना के साथ किए जाने के बाद मैं इस देश से दूर जा रहा हूं, और जो लोग इसे बाद में बनाए रखने जा रहे हैं वे वास्तव में केवल MySQL के लिए उपयोग किए जाते हैं। धन्यवाद! – userBigNum

+0

जाहिर है इसे अब कोचबेस कहा जाता है? : http://www.couchbase.com/membase तो यह निश्चित रूप से ऐसा लगता है कि यह आपके अंतिम दृश्य से प्रगति की है। जहां तक ​​संगतता चलती है, मैं वास्तव में टिप्पणी नहीं कर सकता - मैंने कुछ php परियोजनाओं में mysql के संयोजन के साथ उपयोग किए गए मेम्बेस को देखा है और हमेशा यह माना जाता है कि वे निकट से संबंधित थे - मैंने उस पर थोड़ा और अधिक माना होगा। – FreudianSlip

+0

दिलचस्प लगता है, यह memcached पर आधारित है, जो पहले से ही काफी स्थिर है, और कुंजी-मूल्य भंडारण निश्चित रूप से मेरी आवश्यकताओं के अनुरूप होगा। फिर भी, अधिकांश नोएसक्यूएल सर्वरों की तरह, ऐसा लगता है कि वितरित समूहों और ऐसे में स्केलिंग के लिए बनाया जाता है। उन PHP परियोजनाओं को आपने देखा है, क्या वे बड़े थे? मुझे चिंतित है कि यह वितरण-अभिविन्यास मेरी एपीआई को मेरी तरह की छोटी परियोजना के लिए थोड़ा बोझिल बना सकता है। – userBigNum

1

डेटाबेस इस तरह की चीज़ को संभालने के लिए बनाए गए थे, इसलिए अधिकांश बुनियादी ढांचे आपके लिए हैं।

जिम्मेदारी केवल आपके पर करने के लिए है:

  • डेटा, volumn और DBMS के आधार पर उपयुक्त अनुक्रमणिका बनाएँ।

  • डेटा सामान्यीकृत करें।

  • अच्छा सत्यापन लागू करें - हर स्थिति के लिए अलग - नहीं Nulls, विशिष्ट आवृत्तियां, आदि

  • उपयोग देखना चाहते हैं कि प्रश्नों को गति जा सकती है, योजना की व्याख्या।

  • प्रदर्शन में सुधार के लिए कैशिंग का उपयोग करें।

  • सुनिश्चित करें कि सभी तालिका में अद्वितीय प्राथमिक कुंजी परिभाषित हैं (स्पष्ट रूप से, लेकिन अभी भी आवश्यक है)।

+0

ठीक है, यह सभी आकारों के आधार के लिए सभी सामान्य ज्ञान है, है ना? हालांकि मुझे लगता है कि आप विशेष रूप से छोटे अड्डों के लिए इंडेक्स को अनुकूलित करने पर कुछ हो सकते हैं, शायद कुछ उच्च-जटिलता-वर्ग संरचना चुनकर जो निम्न-आदेश मामलों में बेहतर हो जाता है ... जब आप कहते हैं कि "प्रदर्शन में सुधार करने के लिए कैशिंग का उपयोग करें" क्या आपका मतलब है कि पूरे आधार को कैशिंग करना और कुछ और अधिक अंतराल? धन्यवाद! – userBigNum

+0

मेरा मतलब है कैशिंग सेट करना ताकि व्यक्तिगत प्रश्नों को दोहराना तेजी से चल सके। –

संबंधित मुद्दे