मेरे पास एक ऐसा एप्लिकेशन है जो उपयोगकर्ता इंटरैक्शन (उपयोगकर्ता इनपुट नहीं) के आधार पर डेटा भेजता है। भेजा गया डेटा एक पूर्णांक, स्ट्रिंग, दिनांक, या बूलियन मान हो सकता है। 140 कुंजी हैं। हम एक समय में 1 कुंजी मूल्य जोड़ी से कहीं भी 140 हो सकते हैं।टेबल डिज़ाइन विकल्प?
हम सब कुछ स्टोर करना चाहते हैं लेकिन आवेदन के भीतर केवल 140 कुंजी में से 20 का उपयोग करेंगे। शेष का उपयोग बाद में ऑडिट ट्रेल के लिए किया जाएगा - इसलिए हमें अभी भी उन्हें स्टोर करने की आवश्यकता है।
इस डेटा का उपयोग यह तय करने के लिए किया जाता है कि उपयोगकर्ता को कहां जाना है, इसलिए इसे छात्र आईडी द्वारा रिकॉर्ड तक पहुंचने और मिलीसेकंड के भीतर 20 या तो विकल्पों को खींचने की आवश्यकता है। डेटा की अरबों पंक्तियां हो सकती हैं (यह 20,000 से अधिक उपयोगकर्ताओं के साथ मौजूदा एप्लिकेशन में अपग्रेड है) इसलिए प्रदर्शन महत्वपूर्ण है। जब भी वे एप्लिकेशन तक पहुंचते हैं तो उपयोगकर्ता एक नई पंक्ति उत्पन्न करता है।
उदाहरण डेटा:
Score:1
ID:3212
IsLast:False
Action:Completed
मैं ऐसा करने के तरीके और कुछ मदद की तलाश में है, जिस पर सबसे अच्छा है या एक तिहाई एक बेहतर विकल्प विकल्प है पर 2 विचार है।
विकल्प 1:
मेरा पहला विचार मूल्य के लिए एक कॉलम का उपयोग करने के रूप में एक स्ट्रिंग तो संभव डेटा प्रकार के एक लुक-अप तालिका जब मूल्य उपयोग के लिए कास्ट किए जाने की आवश्यकता का उपयोग करना पड़ रहा है।
value | dataType
-----------------------
"1" | int
"Completed" | string
जबकि डेटा भेजा जा रहा है उपयोगकर्ता उत्पन्न नहीं हुआ है, मुझे पता है कि इस विधि में कहीं कहीं गॉचा होना चाहिए। ऐसा करने का एकमात्र कारण यह है कि हम नहीं जानते कि कौन सी कुंजी: जोड़ी भेजी जाएगी (तिथि और आईडी के बाहर) और कुछ कॉलम से अधिक से बचने की कोशिश कर रहा है।
SO प्रश्न How to Handle Unknown Data Type in one Table इसी तरह के विचार का उपयोग करता है।
विकल्प 2: - प्रत्येक कुंजी के लिए एक
अन्य समाधान 140 कॉलम है। हालांकि, उत्पन्न डेटा की मात्रा बहुत बड़ी है (पंक्तियों के अरबों) ताकि इस डेटा को कॉल करना पर्याप्त तेज़ न हो - मुझे नहीं लगता।
तकनीकी विवरण: यह SQL सर्वर 2008 का उपयोग कर रहा है - R2 DotNet C# और रिपोर्टिंग सेवाओं के साथ नहीं।
क्या मुझे यहां कुछ याद आ रहा है - प्रदर्शन के लिए इस तालिका को बनाने का सबसे अच्छा तरीका क्या है?
तीसरा विकल्प: एक्सएमएल के रूप में डेटा प्राप्त करें, एनवीएचकएआर (अधिकतम) डेटा प्रकार में स्टोर करें। –
जब कोई रिपोर्ट उत्पन्न होती है तो यह रिपोर्टिंग सेवाओं को धीमा नहीं करेगा। –
मैं इसे एक एक्सएमएल – arnabmitra