मैं एक वेब एप्लिकेशन विकसित कर रहा हूं जो विभिन्न डेटा के लिए MS SQL का उपयोग करता है: जिसमें उपयोगकर्ता, उपयोगकर्ता खाते, उपयोगकर्ता लाइसेंस, लाइसेंस मूल्य, चालान शामिल हैं।
मुझे सिस्टम के उपयोगकर्ताओं के वास्तविक-समय उपयोग का उपयोग करने की आवश्यकता है, और मासिक बिलिंग के लिए इसका उपयोग करें: उदाहरण के लिए, जब भी कोई उपयोगकर्ता एक विशिष्ट पृष्ठ / URL प्राप्त करता है और उपयोगकर्ताओं को उनके द्वारा प्राप्त किए गए पृष्ठों की संख्या के आधार पर महीने के अंत में बिल देता है।
क्या मुझे अपने MS SQL डेटाबेस में इन लॉग ईवेंट को किसी तालिका में लिखना चाहिए?
क्या मुझे इन लॉग ईवेंट को गैर-SQL परिशिष्ट-लॉग फ़ाइल में लिखना चाहिए?
क्या मुझे इन लॉग ईवेंट को प्रत्येक उपयोगकर्ता के लिए एक अलग लॉग फ़ाइल में लिखना चाहिए?
यह विशेष रूप से उच्च-मात्रा वाली वेब साइट नहीं है: उदाहरण के लिए, प्रत्येक अधिकतम 5 लॉग करने योग्य घटनाओं / दिन => 50,000 घटनाओं / दिन = 30 घटनाओं / मिनट = 18,000,000 घटनाओं / वर्ष में औसतन 10,000 उपयोगकर्ता।
मैं पूछ रहा हूं क्योंकि या तो विकल्प व्यवहार्य लगता है और मैं नहीं देखता कि क्या एक स्पष्ट लाभ है।
एक बिलयोग्य घटना से जुड़ा डेटा सरल है, जैसे:
- उपयोगकर्ता आईडी (SQL में उपयोगकर्ता तालिका के लिए विदेशी कुंजी संबंध)
- दिनांक और समय
- बिल योग्य पृष्ठ का URL
इस प्रश्न का मेरा अपना उत्तर इस प्रकार है:
डेटाबेस तालिका में लॉग लिखने के कुछ लाभ:
- संबंधपरक अखंडता: उदाहरण के लिए लॉग की गई घटनाएं वैध उपयोगकर्ता आईडी से जुड़ी होती हैं (उपयोगकर्ता आईडी को तालिकाओं के बीच एक विदेशी कुंजी के रूप में परिभाषित करके)
- बिलिंग के लिए पढ़ने में आसान:
SELECT COUNT GROUP BY
प्रति उपयोगकर्ता लॉग इवेंट की संख्या की एक संख्या प्राप्त करने के लिए
लॉग फ़ाइल में लिखने के कुछ लाभ:
- आसान प्रदर्शन: SQL का उपयोग अक्सर कम किया जाता है जैसे केवल उपयोगकर्ता लॉग-इन घटनाओं के लिए, और ज्यादातर केवल पढ़ने के लिए उपयोग किया जाता है
- आसान प्रबंधन: डेटाबेस से हटाने / संग्रह करने के बजाय पुरानी लॉग फ़ाइलों को स्थानांतरित करके पुराने डेटा को संग्रहित करना आसान है।
कृपया मुझे बताएं कि क्या मेरा उत्तर गलत है; या कुछ के महत्व को अतिरंजित करता है; या कुछ महत्वपूर्ण विचार को भूल गया है।
और / या कृपया मुझे बताएं कि आपका जवाब क्या है, अगर यह मेरा अलग है।