कुछ समय पहले मैंने अपने बहु-मिलियन उपयोगकर्ता वेबसाइट के लिए, हमारे ग्राहकों के लिए उपयोगकर्ता-क्रियाओं को लॉग और रिपोर्ट करने के लिए एक नई सांख्यिकी प्रणाली को सोचा था।30 मिलियन रिकॉर्ड एक दिन, एसक्यूएल सर्वर नहीं रख सकता है, अन्य प्रकार की डेटाबेस सिस्टम की आवश्यकता है?
डेटाबेस-डिज़ाइन एक साधारण है, जिसमें एक विदेशी आईडी (200,000 अलग-अलग आईडी), एक डेटाटाइम फ़ील्ड, एक एक्शनआईडी (30 अलग-अलग आईडी), और दो मेटा-सूचना (केवल छोटे-छोटे) वाले दो फ़ील्ड होते हैं। । अन्य तालिकाओं में कोई बाधा नहीं है। इसके अलावा हमारे पास दो फ़ील्ड हैं जिनमें प्रत्येक 4 फ़ील्ड हैं, जिन्हें छोड़ा नहीं जा सकता है, क्योंकि जब उपयोगकर्ता छोटे इंडेक्स होते हैं तो उपयोगकर्ता टाइमआउट प्राप्त कर रहे हैं। विदेशी आईडी सबसे महत्वपूर्ण क्षेत्र है, क्योंकि प्रत्येक और प्रत्येक क्वेरी में यह क्षेत्र होता है।
हमने SQL सर्वर का उपयोग करना चुना, लेकिन कार्यान्वयन के बाद एक रिलेशनल डेटाबेस एकदम सही फिट नहीं लगता है, क्योंकि हम एक दिन में 30 मिलियन रिकॉर्ड नहीं डाल सकते हैं (यह केवल सम्मिलित है, हम कोई अपडेट नहीं करते हैं) जब भी डेटाबेस पर यादृच्छिक पढ़ने के बहुत सारे कर रहे हैं; क्योंकि इंडेक्स को पर्याप्त तेज़ी से अपडेट नहीं किया जा सकता है। Ergo: हमें एक बड़ी समस्या है :-) हमने अस्थायी रूप से समस्या हल की है, फिर भी
एक रिलेशनल डेटाबेस इस समस्या के लिए उपयुक्त नहीं प्रतीत होता है!
क्या बिगटेबल जैसे डेटाबेस बेहतर विकल्प होंगे, और क्यों? या इस तरह की समस्याओं से निपटने के दौरान बेहतर विकल्प हैं?
एनबी। इस बिंदु पर हम 4 जीबी मेमोरी और विन 2003 32-बिट के साथ एक एकल 8-कोर ज़ीऑन सिस्टम का उपयोग करते हैं। जहां तक मुझे पता है RAID10 एससीएसआई। सूचकांक आकार तालिका आकार के बारे में 1.5x है।
आपका क्या मतलब है कि यह "जारी नहीं रह सकता है?" क्या असफल रहा है? क्या नेटवर्क I/O एक मुद्दा है? क्या आप सीपीयू उपयोग पर pegged हैं? क्या यह सभी हार्डवेयर सिस्टम पर सामान्य उपयोग के साथ पर्याप्त तेज़ प्रतिक्रिया नहीं देता है? यह एक सर्वर मुद्दा हो सकता है। आपके डीबी सर्वर चश्मा क्या हैं? –
उनकी समस्या इंडेक्स ओवरहेड का परिणाम प्रतीत होती है। वह अपनी इंडेक्स से छुटकारा नहीं पा सकता है, लेकिन दिन में 30 एम बार भारी मेज पर इंडेक्स अपडेट करना महंगा है। – timdev
मुझे कोई कारण नहीं है कि क्यों SQL सर्वर ऐसा करने में सक्षम नहीं होना चाहिए। मुझे यह निष्कर्ष निकालना है कि या तो डेटा डिज़ाइन या कॉन्फ़िगरेशन समस्या है। क्या आप कृपया इसकी कुंजी और इंडेक्स के साथ-साथ दो संबंधित तालिकाओं पर इंडेक्स के साथ तालिका की CREATE स्क्रिप्ट भी दिखा सकते हैं? – RBarryYoung