मेरे पास एक ईवेंट स्ट्रीम और एक कुंजी-वाल स्टोरेज है। मूल्य का आकार 4Kb तक सीमित है। घटना दर बहुत भारी नहीं है - दिन में अधिकतम सैकड़ों।एकत्रीकरण और स्लाइडिंग विंडोज कार्यान्वयन के लिए जावा फ्रेमवर्क
इस मूल्य में मुझे डेटा संरचना का क्रमबद्ध प्रतिनिधित्व प्रस्तुत करने की आवश्यकता है जो दैनिक और साप्ताहिक एकत्रीकरण और 1/2 की स्लाइडिंग विंडो के साथ 3 महीने की अवधि में एकत्रित घटना गणना को पढ़ने, संग्रहीत करने और अद्यतन करने के लिए एक कुशल तंत्र प्रदान करता है। एक घंटा।
समाधान को सरल घटना गणना समेकन और घटना गणना मानक विचलन दोनों के लिए निम्नलिखित कार्यों को कुशलता से करने की आवश्यकता है। (सभी नीचे वर्णित कार्यों के लिए अधिकतम अवधि 3 महीने है):
- निरंतर अद्यतन (आलसी तरीके से - के रूप में इसी घटना आता है) - मामले में है कि नवीनतम गणना एकत्रित बहुत पुराना हैं - फेंक पुराने डेटा और नए समेकन
- अद्यतन अनुरोधों द्वारा ट्रिगर किए गए अपडेट (उपयोगकर्ता कुछ जानकारी अनुरोध करता है जैसे विशिष्ट उपयोगकर्ता के लिए ईवेंट गिनती, एकल उपयोगकर्ता आदि के लिए ईवेंट गिनती का मानक विचलन) यदि नवीनतम गणना की गई गणना बहुत पुरानी है - उन्हें फेंक दें
मुझे आश्चर्य है: क्या कोई जावा ओपन सोर्स फ्रेमवर्क है जो उपर्युक्त को लागू करने में सहायता कर सकता है?
मैं भी डिजाइन की सिफारिशों का स्वागत करेंगे: डिजाइन पैटर्न आदि
समाधान मानक जावा एपीआई का उपयोग खरोंच से लागू करने के लिए मुश्किल नहीं है, लेकिन यह करने से पहले मैं कुछ खुला स्रोत ढांचे सुझाव (यदि हो तो) की सराहना करेंगे।
समाधान के लिए गुगलिंग ने मुझे कुछ सैद्धांतिक लेख, एसक्यूएल आधारित समाधान और आईबीएम (SPL नामक गैर ओपन सोर्स टूलकिट) को छोड़कर कहीं भी नेतृत्व नहीं किया।