7

हम अपने वित्तीय एप्लिकेशन में से एक के लिए नए फीचर सेट बना रहे हैं। हमारे पास अपना स्वयं का SQL सर्वर डेटाबेस है और हम एकाधिक RESTful API को कॉल करेंगे जो JSON प्रतिक्रियाएं लौटाते हैं। उदाहरण के लिए कुछ समाचार डेटा लौटाते हैं, कुछ स्टॉक की जानकारी लौटाते हैं, कुछ वित्त डेटा लौटाते हैं और हमारे स्वयं के एसक्यूएल सर्वर डेटाबेस में कर्मचारी डेटा होता है। तो, वे सभी अपने स्वयं के अलग-अलग डेटा प्रारूप के साथ आते हैं। यह नया ऐप जो हम बना रहे हैं, वे सभी डेटा एकत्रित करने जा रहे हैं, इसे mint.com की तरह वेब पर सार्थक प्रदर्शन में बदल दें।विभिन्न तृतीय पक्ष API से डेटा लाने और बदलने के लिए बैकएंड समाधान

  • वेब अनुप्रयोग इन आंकड़ों के आधार पर विश्लेषणात्मक रिपोर्ट प्रदर्शित करेगा
  • वहाँ विभिन्न टेम्पलेट्स के माध्यम से रिपोर्ट डाउनलोड करने का विकल्प होगा

हम अपने बैकएंड और मध्यम के लिए प्रौद्योगिकी ढेर के मामले में पूरी तरह से खुले हैं स्तरीय। एक पहले विचार के रूप में खोज और रिपोर्टिंग के लिए mongodb और elasticsearch जैसे NoSQL हमारे दिमाग में आता है। इन डेटा के शीर्ष पर एक वेब एप्लिकेशन बनाया जाएगा (एपीआई से संग्रहीत या पुनर्प्राप्त), एएसपीनेट एमवीसी में सबसे अधिक संभावना है।

हमें आपके इनपुट की आवश्यकता है, विशेष रूप से यदि आपके पास समान उद्यम समाधान बनाने के अनुभव हैं।

आप अपने विचार साझा करते कृपया,

  1. क्या कुछ अच्छी तकनीक ढेर आप इस अनुप्रयोग के लिए चुनेंगे कर रहे हैं?
  2. एपीआई डेटा प्रारूप में परिवर्तन के समय अब ​​और भविष्य में यह स्केल कैसा होगा।
  3. प्रदर्शन भी महत्वपूर्ण है क्योंकि वेब यूआई पर डेटा प्रदर्शित किया जाएगा।
+1

विषय बंद (राय आधारित और उपकरण/पुस्तकालयों के लिए सिफारिश के लिए पूछ)। –

उत्तर

3

हमारे पास एएसपी.NET एमवीसी का उपयोग एलैस्टिक सर्च (एसएसएल सर्वर रिलेशनशिप डेटा के लिए एसक्यूएल सर्वर, समय-समय पर अद्यतन करने के लिए) का उपयोग करके, आप कई उल्लेखों से डेटा (एक्सएमएल/जेएसओएन) को एकत्रित करने के उद्देश्य से, जैसा कि आप उल्लेख कर रहे हैं, के लिए एक समान सेटअप है, हालांकि रिपोर्टिंग के बजाय खोज और फ़िल्टरिंग परिणामों में सुधार। हालांकि, मैं उम्मीद करता हूं कि आप जिस परिदृश्य को देख रहे हैं वह आपकी विशिष्ट आवश्यकताओं के आधार पर, लोचदार खोज के लिए एक उपयुक्त मैच भी होगा।

1) चूंकि आप पहले से ही SQL सर्वर का उपयोग कर रहे हैं (और मुझे उम्मीद है कि इससे परिचित हैं), मैं एलैस्टिकशर्च के साथ संयोजन का सुझाव दूंगा - अतिरिक्त मैंगोडब परत अनावश्यक लगती है, एक और तकनीक के रखरखाव के मामले में और फिट करने के लिए विकास एकीकरण। एक बहुत अच्छा सी # लाइब्रेरी है (दो वास्तव में, ElasticSearch.Net और NEST, एक साथ उपयोग किया जाता है) जो अधिकांश ES कार्यक्षमता का खुलासा करता है।

2) हम लचीलेपन के साथ संयोजन में अपनी क्षमता के लिए ElasticSearch चुना है और आसानी से उपयोग। एक चुनौती जिसे आप सामना कर सकते हैं, सी # कक्षाओं से एलैस्टिकशर्च दस्तावेज़ों के दस्तावेजों का मानचित्रण कर सकता है। संक्षेप में, यह सेट अप करने के लिए अविश्वसनीय रूप से आसान है, हालांकि आपको डेटा को इंडेक्स करने के लिए कुछ योजना बनाने की आवश्यकता है, जिस तरह से आप इसे खोजना चाहते हैं और इसे पुनर्प्राप्त करना चाहते हैं। तो यदि प्लेट को प्लेटफॉर्म के रूप में चुनते हैं, तो दस्तावेज़ों की संरचना के साथ कुछ समय बिताएं - डिफ़ॉल्ट रूप से, dynamic mapping सक्षम है, इसलिए आप किसी भी JSON को किसी दस्तावेज़ में फेंक सकते हैं। हालांकि, एक उत्पादन वातावरण के लिए, इसे बंद करना बेहतर है और एक या अधिक मैपिंग सेट अप हैं, इसलिए उन्हें एक मानक तरीके से पूछताछ की जा सकती है।

3) प्रदर्शन हमारे लिए एक महत्वपूर्ण कारक भी है, यही कारण है कि हम शोध करते समय ल्यूसीन आधारित इंजन जैसे सोलर और लोचदार खोज को देख रहे थे, साथ ही नोएसक्यूएल डेटाबेस के साथ। ElasticSearch अधिकांश परिदृश्यों में 10 से 1 या बेहतर द्वारा SQL सर्वर से बेहतर प्रदर्शन करता है। सोलर बनाम लोचदार खोज प्रदर्शन परिदृश्य, बेंचमार्क और comparisons पर निर्भर करता है यदि आप उन्हें Google करते हैं। अपवाद हो सकता है यदि एक प्रश्न में कई दस्तावेजों को पुनर्प्राप्त किया जाना चाहिए - ईएस (या ल्यूसीन) उस उपयोग के मामले के लिए नहीं बनाया गया है, यह प्रति पृष्ठ के परिणाम (Google के प्रति पृष्ठ परिणाम गणना के समान) के तेज़ी से पुनर्प्राप्ति के लिए सबसे अच्छा है। यदि आपको प्रति पृष्ठ/परिणाम के 1000 दस्तावेज़ों की आवश्यकता है, तो कोई NoSQL डेटाबेस बेहतर विकल्प हो सकता है।

ElasticSearch उठना तेजी से और चल रहा है - एक स्थानीय विकास बॉक्स पर इसे स्थापित करने और इसे आज़माने के लिए, आप अगर यह फिट बैठता है का एहसास दिलाने में मिल जाएगा।

+0

कैली, हाँ, मुझे लगता है कि एसक्यूएल सर्वर सबकुछ संभालने में सक्षम हो सकता है लेकिन खोज। बस उत्सुक, जब आप एकाधिक स्रोतों से डेटा प्राप्त करते हैं, तो क्या आप उन डेटा के किसी भी हिस्से को स्टोर करते हैं - अस्थायी या स्थायी? आप तृतीय पक्ष स्रोत से उन XML/json प्रतिक्रियाओं के बदलते प्रारूप के साथ कैसे निपटते हैं? एसक्यूएल सर्वर स्कीमा को नए प्रारूप को पूरा करने के लिए बदला जाना होगा। – Priyank

+1

@Priyank, हम SQL सर्वर में हमारी डेटा संरचना में XML/JSON को परिवर्तित करने के लिए C# का उपयोग करते हैं। XSLT परिवर्तन का उपयोग करने की संभावना होगी, लेकिन मेरे पास इसका अच्छा अनुभव नहीं है। इसके बजाए, हमने सामान्य denominators की पहचान की है और उस पर आधारित हमारी डेटा संरचना का निर्माण किया है, तो हम सी # तर्क का उपयोग कर दस्तावेजों के प्रत्येक सेट को उसमें परिवर्तित करते हैं। कुछ सीधे मूल्यों की प्रतिलिपि बना रहे हैं, कुछ को बदलने के लिए बहुत से व्यवसाय तर्क की आवश्यकता होती है। – Calle

+0

धन्यवाद कैली, मेरा प्रश्न वास्तविक एसक्यूएल सर्वर डेटाबेस तालिका स्कीमा के लिए था, आज मैं 10 कॉलम और कल के साथ एक टेबल डिज़ाइन करता हूं, एपीआई ने अपने एक्सएमएल/जेसन प्रतिक्रिया में फ़ील्ड बदल दिए और कुछ डेटा हटा दिए/जोड़े, आपको टेबल डिज़ाइन को बदलना होगा उस नई प्रतिक्रिया सही फिट करें। यह सामान्य प्रक्रिया थी जिसे मैं जानता था और सोच रहा था कि इसका कोई बेहतर समाधान है या नहीं। – Priyank

3

मेरे अनुभव से, रिपोर्टिंग के लिए मोंगोडब सबसे खराब विकल्प है, खासकर एकत्रीकरण के लिए। इसमें अच्छी समेकन कार्यक्षमता की कमी है, इसमें कुछ डेटा प्रकार के विवाद हैं (जैसे कि दशकों को तारों के रूप में संग्रहीत किया जा रहा है, जिसे आप इसे एग्रीगेशन फ्रेमवर्क एपीआई में निर्मित नहीं कर सकते हैं) और आपको शायद जावास्क्रिप्ट में मानचित्र-कम कार्यों को बनाए रखना होगा परिदृश्यों का।

यदि आपके एप्लिकेशन की असली प्रकृति केवल रिपोर्ट है, और उन्हें रीयलटाइम में अपडेट करने की आवश्यकता नहीं है, तो मैं ऑन-डिमांड आरपीसी कॉल को बाहरी एपीआई में छोड़ दूंगा। मैं जितना संभव हो उतना डेटा कॉपी करने और इसे एक स्कीमा के तहत संग्रहीत करने पर विचार करता हूं जो आपके लिए काम करने के लिए सबसे सुविधाजनक है, और अनुसूचित अंतराल के बाद इसे बाद में सिंक्रनाइज़ कर रहा है।

मैं उस डेटा के बारे में धारणाओं को हर समय उपलब्ध होने में जल्दबाजी में नहीं रहूंगा और न ही यह हमेशा आपके प्रारूप में होना चाहिए। आप अपनी खुद की प्रतिलिपि चलाने पर ऑप्टिमाइज़ेशन लाभ भी प्राप्त करते हैं, जिस तरह से आप चाहते हैं कि अनुक्रमित किया गया है, यह जानने की बजाय कि कौन सी आरपीसी आपकी बाधा है।

अपने प्रश्नों के लिए के रूप में:

1) आप अजगर का उपयोग कर कोई आपत्ति नहीं है, मैं Django PostgresSQL डेटाबेस के शीर्ष पर लेने जाएगा। Django एक पूरी तरह से विशेषीकृत मजबूत ओआरएम + वेब ढांचा है जो इस तरह के काम के लिए उत्कृष्ट है। यदि नहीं, तो बस एक रिलेशनल SQL डेटाबेस से चिपके रहें। मैंने कैसंद्रा के चमत्कार सुना लेकिन अभी तक कोशिश नहीं की है।

2 + 3) जैसा कि मैंने पहले उल्लेख किया था, डेटा को अपने स्वयं के अच्छे के लिए जितना संभव हो सके। सबकुछ "घर में" होने के बाद आप इसे क्लस्टर कर सकते हैं और इसे स्वतंत्र रूप से ट्विक कर सकते हैं। भारी ग्राहक अनुरोधों के खिलाफ एक वितरित कैश का उपयोग करना मांग पर हर बार उन रिपोर्टों को उत्पन्न करने के बजाय, एक अच्छा विचार (जैसे कि रेडिस) भी है।

+0

मुझे आपके द्वारा बनाए गए सभी अंक पसंद आया।मैंने postgresSQL में देखा और सीखा कि यह JSON प्रकार कॉलम का भी समर्थन करता है। अभी के लिए, एसक्यूएल सर्वर पर चिपकने के बारे में सोचने के बाद से हम पहले से ही इसमें निवेश कर चुके हैं। मैं स्थानीय रूप से एपीआई प्रतिक्रियाओं की प्रतिलिपि संग्रहीत करने के बारे में चिंतित हूं, प्रदाता के नियम और शर्तों की जांच करनी है क्योंकि उनमें से कुछ कैशिंग डेटा की अनुमति नहीं देते हैं और कुछ सीमित अवधि के लिए करते हैं। – Priyank

1

मैं जैस्पर का उपयोग कर रिपोर्ट करता है और जैस्पर सर्वर रिपोर्ट हमारी वेब एप्लिकेशन में एकीकृत करने के। जैस्पर जेएसओएन और एसक्यूएल सर्वर सहित कई अलग-अलग डेटासोर्स प्रकार स्वीकार करता है। मूल संस्करण मुफ्त है और आपको उच्च जटिलता के उत्पाद एचटीएमएल एमडीडी पीडीएफ रिपोर्टों की अनुमति देता है। सर्वर के साथ भुगतान संस्करण आपको अपने वेब ऐप में आसानी से एकीकृत करने की अनुमति देता है। मूल जावा स्प्रिंग (आंशिक रूप से खुला स्रोत) है जो टॉमकैट/जेबॉस पर चल रहा है और आप अपने वेब फ्रंट एंड के लिए REST वेब सेवाओं या visualize.js लाइब्रेरी का उपयोग करके इसके साथ बातचीत कर सकते हैं। यह हाईचार्ट्स का उपयोग करता है जो कुछ सुंदर परिणाम उत्पन्न कर सकते हैं और कई रिपोर्टों से निर्मित विज्ञापन रिपोर्टिंग और डैशबोर्ड के विकल्प हैं। यहाँ

डेमो देखें: http://www.jaspersoft.com/

यह है अपने बैकएंड डाटाबेस के और डेटा स्रोतों, जावा स्प्रिंग, वेब सामने अंत HTML/जावास्क्रिप्ट के साथ बिल्ला की एक ग्रहण ढेर।

उपकरण सहित अमेज़न तो scalibility तो एक मुद्दा नहीं होना चाहिए कई बड़े उद्यमों द्वारा प्रयोग किया जाता है।

अपने डेटा के प्रारूप में परिवर्तन आप रिपोर्ट को बदलने के लिए की आवश्यकता होगी। यह WYSIWYG के साथ जीयूआई द्वारा संपादित एक्सएमएल प्रारूपित है।

संबंधित मुद्दे