2010-04-09 17 views
8

मैं एक परियोजना पर काम कर रहा हूं जिसमें स्वादिष्ट वेबसाइट से बड़ी मात्रा में डेटा शामिल है। उपलब्ध डेटा "दिनांक, उपयोगकर्ता आईडी, यूआरएल, टैग" है (प्रत्येक बुकमार्क के लिए)।डाटाबेस डिजाइन बहुत बड़ी मात्रा में डेटा

मैंने अपने डेटाबेस को 3 एनएफ में सामान्यीकृत किया, और उन प्रश्नों की प्रकृति की वजह से जिन्हें हम संयोजन में उपयोग करना चाहते थे, मैं 6 टेबल तक नीचे आया ... डिजाइन ठीक दिखता है, हालांकि, अब बड़ी मात्रा में डेटा डेटाबेस में है, अधिकांश प्रश्नों को उत्तर पाने के लिए कम से कम 2 तालिकाओं में शामिल होने की आवश्यकता है, कभी-कभी 3 या 4। सबसे पहले, हमारे पास कोई प्रदर्शन समस्या नहीं थी, क्योंकि परीक्षण मामलों के लिए हमने बहुत अधिक नहीं जोड़ा था डेटाबेस के लिए डेटा। अब हमारे पास बहुत अधिक डेटा है, बस बहुत बड़ी टेबल में शामिल होने में काफी समय लगता है और हमारी परियोजना के लिए, जो वास्तविक समय होना चाहिए, यह एक आपदा है।

मैं सोच रहा था कि बड़ी कंपनियां इन मुद्दों को कैसे हल करती हैं। ऐसा लगता है कि सामान्यीकृत टेबल केवल जटिलता को जोड़ता है, लेकिन बड़ी कंपनी अपने डेटाबेस में बड़ी मात्रा में डेटा कैसे संभालती है, क्या वे सामान्यीकरण का उपयोग नहीं करते हैं?

धन्यवाद।

उत्तर

13

जब से तुम कैसे बड़ी कंपनियों (आम तौर पर) दृष्टिकोण के बारे में पूछा इस:

वे आमतौर पर एक डीबीए (डेटाबेस व्यवस्थापक) जो रहता है और डेटाबेस कंपनी का उपयोग करता है साँस लेता है।

इसका मतलब है कि उनके पास ऐसे लोग हैं जो टेबल को बेहतर तरीके से डिज़ाइन करने के लिए सब कुछ जानते हैं, क्वेरी और इंडेक्स/ओएस/सर्वर को ट्यून करें, यह जानने के लिए कि RAID नियंत्रक का फर्मवेयर संशोधन किस डेटाबेस के लिए समस्याएं पैदा कर सकता है।

आप इस बारे में ज्यादा बात नहीं करते कि आपने किस प्रकार की ट्यूनिंग की है, उदाहरण के लिए

  • क्या आप MyISAM या InnoDB तालिकाओं का उपयोग कर रहे हैं? उनके प्रदर्शन (और कम से कम उनकी विशेषताएं) अलग-अलग वर्कलोड के लिए मूल रूप से भिन्न नहीं हैं।
  • क्या आपके द्वारा चलाए जाने वाले प्रश्नों के अनुसार तालिकाओं को सही तरीके से अनुक्रमित किया गया है?
  • अपने सभी प्रश्नों पर EXPLAIN चलाएं - जो आपको जोड़ने/हटाए जा सकने वाले कुंजियों की पहचान करने में मदद करेगा, उचित चाबियाँ चुने जाने के लिए गीलेर, प्रश्नों की तुलना करें (एसक्यूएल आपको एक ही चीजों को पूरा करने के लिए बहुत सारे तरीके से छोड़ देता है)
  • है आपने क्वेरी-कैश ट्यून किया है? कुछ वर्कलोड के लिए क्वेरी कैश (डिफ़ॉल्ट पर) काफी मंदी का कारण बन सकता है।
  • आपके बॉक्स में कितनी मेमोरी है, और इसका लाभ लेने के लिए mysql tuned है?
  • क्या आप डेटाबेस सिस्टम और डेटाबेस के प्रति तैयार RAID सेटअप का उपयोग करते हैं?
  • कभी-कभी थोड़ा डी-सामान्यीकरण की आवश्यकता होती है।
  • विभिन्न डेटाबेस उत्पादों में विभिन्न charasteristics होंगे, MySQL कुछ worlkoads के लिए तेजी से तेज हो सकता है, और दूसरों के लिए धीमा हो सकता है।
+3

आपके उत्तर के लिए धन्यवाद। ईमानदारी से, मैं उन चीजों के बारे में सोच नहीं रहा था जिनका आपने यहां उल्लेख किया था। अब मुझे एहसास हुआ कि जब मैं डेटाबेस डिजाइन कर रहा था तो मैंने बहुत कुछ अनदेखा कर दिया है। डेटाबेस MyISAM का उपयोग करता है। मैंने आपके द्वारा उल्लिखित चीजों के बारे में पढ़ा होगा। बहुत बहुत धन्यवाद – Hossein

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