मेरी सेवा में बड़ी संख्या में उपयोगकर्ता इवेंट हैं, और हम " डी के बाद से इवेंट टाइप टी की गणना" जैसी चीजें करना चाहते हैं ।
हम दो बुनियादी निर्णय लेने की कोशिश कर रहे हैं:
क्या स्टोर करना है? हर ईवेंट बनाम केवल एग्रीगेट को स्टोर करना
- (ईवेंट लॉग स्टाइल) हर ईवेंट को लॉग करें और बाद में उन्हें गिनें;
- (टाइम-सीरीज़ स्टाइल) हर दिन के लिए एक एकल "इवेंट ई के लिए तारीख डी " की कुल एकत्रित करता है
डाटा को कहाँ स्टोर करना है
- एक रिलेशनल डेटाबेस में (विशेष रूप से MySQL)
- एक गैर-संबंधपरक (NoSQL) डेटाबेस में
- फ्लैट लॉग फ़ाइलों में (नेटवर्क के माध्यम से केंद्र पर एकत्र
syslog-ng
)
मानक अभ्यास क्या है / मैं विभिन्न प्रकार की प्रणालियों की तुलना के बारे में अधिक कहां पढ़ सकता हूं?
अतिरिक्त जानकारिया:
- कुल ईवेंट स्ट्रीम बड़ी है, संभावित रूप से प्रति दिन सैकड़ों हजारों प्रविष्टियां हैं
- लेकिन हमारी वर्तमान आवश्यकता केवल कुछ प्रकार की घटनाओं को गिनना है
- हमें आवश्यक रूप से कच्चे डेटा या एकत्रीकरण परिणामों के लिए वास्तविक समय तक पहुंच की आवश्यकता नहीं है
IMHO, "सभी घटनाओं को फाइलों में लॉग इन करें, बाद में उन्हें फ़िल्टर करने और स्ट्रीम को एग्रीगेट करने के लिए क्रॉल करें" एक सुंदर मानक UNIX वे है, लेकिन मेरे रेल-वाई हमवित्रों को लगता है कि कुछ भी वास्तविक नहीं है जब तक कि यह MySQL में न हो।
SELECT...GROUP BY
, आसानी से SELECT
s के परिणामों को स्टोर कर सकता है ), 2) सरल बड़े पैमाने पर एकत्रीकरण और विज़ुअलाइज़ेशन के लिए ग्रेफाइट का उपयोग कर , और 3) संदर्भ के लिए पूर्ण घटनाओं को लॉग करना, और वास्तविक समय में डेटा प्रवाह के विवरण देखने के लिए। प्रत्येक वास्तव में अलग-अलग तरीकों से मूल्यवान रहा है।