मुझे कुछ ऐसा बनाने के लिए कहा गया है जो खातों पर एकत्रित करने के लिए दैनिक लागत को ट्रैक करता है, और मैं एक डेटाबेस टेबल स्कीमा का पता लगाने की कोशिश कर रहा हूं जो इसका समर्थन करेगा।
यहाँ मैं जानता हूँ कि क्या है
- कंपनी के 2.5 मिलियन से अधिक खाते हैं
- इनमें से, वे वर्तमान में प्रति माह औसतन 200,000 काम करते हैं (जो कि कर्मचारियों के स्तर के साथ बदलता है, जो वर्तमान में कम हैं)
- उनके पास 13 अलग-अलग लागत प्रकार हैं जिन्हें वे ट्रैक करना चाहते हैं, और उन्होंने चेतावनी दी है कि वे भविष्य में अधिक जोड़ सकते हैं
- वे चाहते हैं कि लागत को प्रतिदिन ट्रैक किया जाए
- लागत पूरी सूची में विभाजित नहीं हैं। वे या तो प्रति माह (200,000) पर काम कर रहे खातों के # भर में विभाजित हो जाते हैं, या उपयोगकर्ता खातों के समूह पर लागत लागू करने के लिए खाता पहचानकर्ताओं को दर्ज कर सकते हैं, या वे केवल यह निर्दिष्ट कर सकते हैं कि लागतों को लागू करने के लिए कौन से खातों को लागू किया जाए।
मेरा पहला विचार एक सामान्यीकृत डेटाबेस था:
खाता पहचान दिनांक CostTypeId रकम
इसके साथ मेरा मुद्दा है, गणित करना। यह तालिका जल्दी से विशाल होने जा रही है। मान लें कि सभी 13 लागत प्रकार चालू माह के लिए सभी काम किए गए खातों पर लागू होते हैं 200k * 13 * N days in month
, जो कि प्रति माह लगभग 75-80 मिलियन रिकॉर्ड है, या प्रति वर्ष एक अरब रिकॉर्ड के करीब है।
मेरा दूसरा विचार यह था कि इसे थोड़ा सा निरूपित किया जाए
खाता पहचान दिनांक कुल लागत CostType1 CostType2 CostType3 CostType4 CostType5 CostType6 CostType7 CostType8 CostType9 CostType10 CostType11 CostType12 CostType13
यह विधि अधिक विकृत है और प्रति माह ( 200k * N days in month
), या प्रति वर्ष लगभग 72 मिलियन तक रिकॉर्ड बना सकती है । यह पहली विधि की तुलना में बहुत कम है, हालांकि अगर कंपनी भविष्य में एक नई लागत प्रकार पर निर्णय लेती है, तो एक और डेटाबेस कॉलम को जोड़ना होगा।
दो तरीकों में से, आप किसे पसंद करते हैं? क्यों? क्या कोई और विकल्प है जिसके बारे में आप सोच सकते हैं कि इससे बेहतर क्या होगा?
मुझे गर्मियों और विस्तृत रिपोर्ट दोनों के प्रदर्शन में दिलचस्पी है। यह कार्य जो खातों में लागतों को फैलाएगा, रात में चलाया जाएगा जब कोई भी आसपास नहीं होगा। एक माध्यमिक चिंता डेटाबेस का आकार है। मौजूदा डेटाबेस पहले से ही लगभग 300GB है, और मेरा मानना है कि डिस्क पर जगह लगभग 500GB है।
डेटाबेस SQL सर्वर 2005 है