डायनेमोडीबी पर विश्लेषण इंजीनियरिंग टीमों को अक्सर DynamoDB से डेटा पर जटिल फ़िल्टर, एकत्रीकरण और टेक्स्ट खोज चलाने की आवश्यकता होती है। हालाँकि, DynamoDB एक ऑपरेशनल डेटाबेस है जो लेनदेन प्रसंस्करण के लिए अनुकूलित है और वास्तविक समय के विश्लेषण के लिए नहीं। नतीजतन, कई इंजीनियरिंग टीमें DynamoDB पर एनालिटिक्स की सीमाओं पर पहुँच जाती हैं और वैकल्पिक विकल्पों की तलाश करती हैं। ऐसा इसलिए है क्योंकि ऑपरेशनल वर्कलोड में जटिल विश्लेषणात्मक वर्कलोड की तुलना में बहुत अलग एक्सेस पैटर्न होते हैं। डायनेमोडीबी केवल सीमित संचालन का समर्थन करता है, जिससे एनालिटिक्स चुनौतीपूर्ण हो जाता है और कुछ स्थितियों में संभव नहीं होता है। डायनेमोडीबी के पीछे की कंपनी भी कंपनियों को एनालिटिक्स को अन्य उद्देश्य-निर्मित समाधानों पर ऑफलोड करने पर विचार करने की सलाह देती है। एक समाधान जिसका आमतौर पर उल्लेख किया जाता है वह है इलास्टिकसर्च जिसके बारे में हम आज बात करेंगे। AWS सबसे लोकप्रिय नोएसक्यूएल डेटाबेस में से एक है और इसका उपयोग गेमिंग, सोशल मीडिया, IoT और वित्तीय सेवाओं में कई वेब-स्केल कंपनियों द्वारा किया जाता है। डायनेमोडीबी अपनी मापनीयता और सरलता के लिए पसंदीदा डेटाबेस है, जो 20M अनुरोध प्रति सेकंड के पैमाने पर एकल-अंकीय मिलीसेकंड प्रदर्शन को सक्षम करता है। इस गति को बड़े पैमाने पर प्राप्त करने के लिए, डायनेमोडीबी परिचालन कार्यभार के लिए प्रदर्शन को बेहतर बनाने पर केंद्रित है- डेटा के व्यक्तिगत रिकॉर्ड पर उच्च आवृत्ति, कम विलंबता संचालन। डायनेमोडीबी एक ओपन-सोर्स वितरित खोज इंजन है जिसे ल्यूसीन पर बनाया गया है और इसका उपयोग टेक्स्ट सर्च और लॉग एनालिटिक्स उपयोग मामलों के लिए किया जाता है। इलास्टिकसर्च बड़े ELK स्टैक का हिस्सा है जिसमें विश्लेषणात्मक डैशबोर्ड के लिए विज़ुअलाइज़ेशन टूल किबाना शामिल है। जबकि इलास्टिकसर्च को लचीला और अत्यधिक अनुकूलन योग्य होने के लिए जाना जाता है, यह एक जटिल वितरित प्रणाली है जिसे प्रदर्शन करने के लिए क्लस्टर और इंडेक्स संचालन और प्रबंधन की आवश्यकता होती है। इलास्टिक और AWS से इलास्टिकसर्च के प्रबंधित ऑफ़र उपलब्ध हैं, इसलिए आपको इसे EC2 इंस्टेंस पर स्वयं चलाने की आवश्यकता नहीं है। इलास्टिकसर्च बेशर्म प्लग: क्लाउड के लिए बनाया गया एक वास्तविक समय विश्लेषण डेटाबेस है। इसमें डायनेमोडीबी के लिए एक अंतर्निहित कनेक्टर है और यह सब-सेकंड सर्च, एग्रीगेशन और जॉइन के लिए डेटा को इन्जेस्ट और इंडेक्स करता है। लेकिन यह पोस्ट डायनेमोडीबी और इलास्टिकसर्च के उपयोग के मामलों को उजागर करने के बारे में है, यदि आप उस विकल्प का पता लगाना चाहते हैं। रॉकसेट AWS लैम्ब्डा का उपयोग करके डायनेमोडीबी को इलास्टिकसर्च से जोड़ना आप विश्लेषण के लिए एलास्टिकसर्च में डायनेमोडीबी डेटा को लगातार लोड करने के लिए AWS लैम्ब्डा का उपयोग कर सकते हैं। यह इस प्रकार काम करता है: से प्रत्येक अपडेट को Elasticsearch में सिंक करने के लिए एक लैम्ब्डा फ़ंक्शन बनाएं DynamoDB स्ट्रीम मौजूदा DynamoDB टेबल का स्नैपशॉट लेने और उसे Elasticsearch को भेजने के लिए एक लैम्ब्डा फ़ंक्शन बनाएँ। DynamoDB टेबल की सामग्री को पढ़ने के लिए आप या उपयोग कर सकते हैं। EC2 स्क्रिप्ट Amazon Kinesis स्ट्रीम का डायनेमोडीबी के लिए शामिल करते हुए इलास्टिकसर्च में डेटा को सिंक करने का एक वैकल्पिक तरीका है, लेकिन यह वर्तमान में समर्थित नहीं है और इसे कॉन्फ़िगर करना जटिल हो सकता है। लॉगस्टैश प्लगइन को इलास्टिकसर्च का उपयोग करके डायनेमोडीबी डेटा पर पाठ खोज टेक्स्ट सर्च किसी दस्तावेज़ के अंदर टेक्स्ट की खोज करना है ताकि सबसे ज़्यादा प्रासंगिक परिणाम मिल सकें। अक्सर, आप सबसे अच्छा परिणाम पाने के लिए किसी शब्द के किसी भाग, शब्दों के समानार्थी या विलोम या शब्दों की एक स्ट्रिंग को एक साथ खोजना चाहेंगे। कुछ एप्लिकेशन खोज शब्दों को उनके महत्व के आधार पर अलग-अलग तौलेंगे। DynamoDB डेटा को फ़िल्टर करने में मदद करने के लिए विभाजन का उपयोग करके कुछ सीमित टेक्स्ट खोज उपयोग मामलों का समर्थन कर सकता है। उदाहरण के लिए, यदि आप एक ईकॉमर्स साइट हैं, तो आप DynamoDB में उत्पाद श्रेणी के आधार पर डेटा का विभाजन कर सकते हैं और फिर इन-मेमोरी में खोज चला सकते हैं। जाहिर है, बहुत सारे टेक्स्ट खोज उपयोग मामलों को इसी तरह संभालता है। DynamoDB एक भी समर्थन करता है जो आपको एक स्ट्रिंग खोजने में सक्षम बनाता है जिसमें डेटा का एक विशेष सबस्ट्रिंग होता है। Amazon.com खुदरा प्रभाग ऐसे सम्मिलित फ़ंक्शन का ई-कॉमर्स साइट उत्पाद श्रेणी के आधार पर डेटा का विभाजन कर सकती है। खोजे जा रहे डेटा के साथ ब्रांड और रंग जैसी अतिरिक्त विशेषताएं भी दिखाई जा सकती हैं। ऐसे परिदृश्यों में जहाँ पूर्ण पाठ खोज आपके अनुप्रयोग का मुख्य हिस्सा है, आप प्रासंगिकता रैंकिंग के साथ Elasticsearch जैसे खोज इंजन का उपयोग करना चाहेंगे। यहाँ बताया गया है कि Elasticsearch में उच्च स्तर पर पाठ खोज कैसे काम करती है: : इलास्टिक्सर्च में एक प्रासंगिकता रैंकिंग होती है जो यह खोज परिणामों को आउट-ऑफ-द-बॉक्स देती है या आप अपने विशिष्ट एप्लिकेशन उपयोग मामले के लिए रैंकिंग को कस्टमाइज़ कर सकते हैं। डिफ़ॉल्ट रूप से, इलास्टिक्सर्च शब्द आवृत्ति, व्युत्क्रम दस्तावेज़ आवृत्ति और फ़ील्ड-लंबाई मानदंड के आधार पर रैंकिंग स्कोर बनाएगा। प्रासंगिकता रैंकिंग : इलास्टिकसर्च डेटा को इंडेक्स करने के लिए टेक्स्ट को टोकन में विभाजित करता है, जिसे टोकनाइज़िंग कहा जाता है। फिर एनालाइज़र को खोज परिणामों को बेहतर बनाने के लिए सामान्यीकृत शब्दों पर लागू किया जाता है। डिफ़ॉल्ट मानक विश्लेषक सामान्य, बहु-भाषा समर्थन प्रदान करने के लिए यूनिकोड कंसोर्टियम के अनुसार टेक्स्ट को विभाजित करता है। टेक्स्ट विश्लेषण इलास्टिकसर्च में फ़ज़ी सर्च, ऑटो-कम्प्लीट सर्च जैसी अवधारणाएं भी हैं और यहां तक कि अधिक उन्नत प्रासंगिकता को आपके एप्लिकेशन की विशिष्टताओं को पूरा करने के लिए कॉन्फ़िगर किया जा सकता है। इलास्टिकसर्च का उपयोग करके डायनेमोडीबी डेटा पर जटिल फ़िल्टर जटिल फ़िल्टर का उपयोग परिणाम सेट को सीमित करने के लिए किया जाता है, जिससे डेटा को तेज़ी से और अधिक कुशलता से पुनर्प्राप्त किया जा सके। कई खोज परिदृश्यों में, आप कई फ़िल्टर को संयोजित करना चाहेंगे या डेटा की एक सीमा पर फ़िल्टर करना चाहेंगे, जैसे कि समय की अवधि में। DynamoDB डेटा को विभाजित करता है और एक अच्छी विभाजन कुंजी चुनने से डेटा को फ़िल्टर करना अधिक कुशल बनाने में मदद मिल सकती है। DynamoDB सेकेंडरी इंडेक्स का भी समर्थन करता है ताकि आप अपने डेटा को दोहरा सकें और अतिरिक्त फ़िल्टर का समर्थन करने के लिए एक अलग प्राथमिक कुंजी का उपयोग कर सकें। तब मददगार हो सकते हैं जब आपके डेटा के लिए कई एक्सेस पैटर्न हों। सेकेंडरी इंडेक्स उदाहरण के लिए, एक लॉजिस्टिक्स एप्लिकेशन को उनकी डिलीवरी स्थिति के आधार पर आइटम फ़िल्टर करने के लिए डिज़ाइन किया जा सकता है। डायनेमोडीबी में इस परिदृश्य को मॉडल करने के लिए, हम की विभाजन कुंजी, की सॉर्ट कुंजी और खरीदार, और विशेषताओं के साथ लॉजिस्टिक्स के लिए एक बेस टेबल बनाएंगे। Item_ID Status ETA SLA हमें DynamoDB में एक अतिरिक्त एक्सेस पैटर्न का समर्थन करने की भी आवश्यकता है, जब डिलीवरी में देरी SLA से अधिक हो। DynamoDB में सेकेंडरी इंडेक्स का उपयोग केवल उन डिलीवरी को फ़िल्टर करने के लिए किया जा सकता है जो SLA से अधिक हैं। फ़ील्ड पर एक इंडेक्स बनाया जाएगा जो बेस टेबल में पहले से मौजूद ETA विशेषता की प्रतिकृति है। यह डेटा में तभी शामिल किया जाता है जब ETA SLA से ज़्यादा हो। सेकेंडरी इंडेक्स एक स्पर्स इंडेक्स है, जो क्वेरी में स्कैन किए जाने वाले डेटा की मात्रा को कम करता है। विभाजन कुंजी है और सॉर्ट कुंजी है। ETADelayedBeyondSLA ETADelayedBeyondSLA buyer ETADelayedBeyondSLA द्वितीयक अनुक्रमणिकाओं का उपयोग अनुप्रयोग में बहुविध पहुँच पैटर्नों को समर्थन देने के लिए किया जा सकता है, जिसमें जटिल फिल्टरों से युक्त पहुँच पैटर्न भी शामिल हैं। DynamoDB के क्वेरी और स्कैन API में ऑपरेशन है, जो किसी एक्सप्रेशन से मेल न खाने वाले परिणामों को फ़िल्टर करता है। केवल क्वेरी या स्कैन टेबल ऑपरेशन के बाद ही लागू होता है, इसलिए आप अभी भी क्वेरी के लिए 1MB डेटा सीमा से बंधे हुए हैं। हालाँकि, एप्लिकेशन लॉजिक को सरल बनाने, प्रतिक्रिया पेलोड आकार को कम करने और टाइम-टू-लाइव एक्सपायरी को मान्य करने में सहायक है। संक्षेप में, आपको अभी भी अपने एप्लिकेशन के एक्सेस पैटर्न के अनुसार अपने डेटा को विभाजित करना होगा या DynamoDB में डेटा फ़िल्टर करने के लिए सेकेंडरी इंडेक्स का उपयोग करना होगा। फ़िल्टरएक्सप्रेशन filterexpression filterexpression डायनेमोडीबी डेटा को तेजी से प्राप्त करने के लिए कुंजियों और मानों में व्यवस्थित करता है और जटिल फ़िल्टरिंग के लिए आदर्श नहीं है। जब आपको जटिल फ़िल्टर की आवश्यकता होती है, तो आप Elasticsearch जैसे सर्च इंजन पर जाना चाह सकते हैं क्योंकि ये सिस्टम घास के ढेर में सुई की तरह काम करने वाले प्रश्नों के लिए आदर्श होते हैं। इलास्टिकसर्च में, डेटा को सर्च इंडेक्स में संग्रहीत किया जाता है, जिसका अर्थ है उन दस्तावेजों की सूची जिसके लिए कॉलम-वैल्यू को पोस्टिंग सूची के रूप में संग्रहीत किया जाता है। कोई भी क्वेरी जिसमें एक प्रेडिकेट (यानी: user=A) होता है, वह प्रेडिकेट को संतुष्ट करने वाले दस्तावेजों की सूची को जल्दी से प्राप्त कर सकता है। जैसे-जैसे पोस्टिंग सूचियाँ क्रमबद्ध होती हैं, उन्हें क्वेरी के समय जल्दी से मर्ज किया जा सकता है ताकि सभी फ़िल्टरिंग मानदंड पूरे हो सकें। इलास्टिकसर्च अक्सर एक्सेस की जाने वाली जटिल फ़िल्टर क्वेरी की पुनर्प्राप्ति प्रक्रिया को तेज़ करने के लिए भी उपयोग करता है। WHERE सरल कैशिंग का फ़िल्टर क्वेरीज़, जिन्हें आमतौर पर इलास्टिक्स सर्च में के रूप में संदर्भित किया जाता है, टेक्स्ट सर्च क्वेरीज़ की तुलना में डेटा को तेज़ी से और अधिक कुशलता से प्राप्त कर सकती हैं। ऐसा इसलिए है क्योंकि इन क्वेरीज़ के लिए प्रासंगिकता की आवश्यकता नहीं है। इसके अलावा, इलास्टिक्स सर्च रेंज क्वेरीज़ का भी समर्थन करता है जिससे ऊपरी और निचली सीमा (यानी: 0-5 के बीच की ) के बीच डेटा को जल्दी से प्राप्त करना संभव हो जाता है। नॉन-स्कोरिंग क्वेरीज़ age इलास्टिकसर्च का उपयोग करके डायनेमोडीबी डेटा पर एकत्रीकरण एकत्रीकरण तब होता है जब डेटा एकत्र किया जाता है और व्यावसायिक बुद्धिमत्ता या प्रवृत्ति विश्लेषण के लिए सारांश रूप में व्यक्त किया जाता है। उदाहरण के लिए, आप अपने एप्लिकेशन के लिए वास्तविक समय में उपयोग मीट्रिक दिखाना चाह सकते हैं। DynamoDB एग्रीगेट फ़ंक्शन का समर्थन नहीं करता है। AWS द्वारा सुझाया गया समाधान DynamoDB तालिका में डेटा का एग्रीगेट दृश्य बनाए रखने के लिए उपयोग करना है। DynamoDB और Lambda का आइए ट्विटर जैसी सोशल मीडिया साइट पर उदाहरण लें। हम प्राथमिक कुंजी बनाएंगे और फिर सॉर्ट कुंजी को वह समय विंडो बनाएंगे जिसके द्वारा हम लाइक को एकत्रित कर रहे हैं। इस मामले में, हम डायनेमोडीबी स्ट्रीम को सक्षम करेंगे और एक लैम्ब्डा फ़ंक्शन संलग्न करेंगे ताकि जैसे ही ट्वीट को पसंद किया जाता है (या नापसंद किया जाता है) उन्हें टाइमस्टैम्प (यानी: ) के साथ में सारणीबद्ध किया जाता है। लाइक को एकत्रित करने का tweet_ID last_ updated like_count इस परिदृश्य में, DynamoDB स्ट्रीम और लैम्ब्डा फ़ंक्शन का उपयोग तालिका पर एक विशेषता के रूप में like_count को सारणीबद्ध करने के लिए किया जाता है। एक अन्य विकल्प एग्रीगेशन को दूसरे डेटाबेस में ऑफलोड करना है, जैसे कि इलास्टिकसर्च। इलास्टिकसर्च अपने मूल में एक खोज इंडेक्स है और इसमें एग्रीगेशन फ़ंक्शन का समर्थन करने के लिए एक्सटेंशन जोड़े गए हैं। उन एक्सटेंशन में से एक है , एक संरचना जो कॉलम-ओरिएंटेड तरीके से दस्तावेज़ मानों को संग्रहीत करने के लिए इंडेक्स समय पर बनाई गई है। संरचना डिफ़ॉल्ट रूप से उन फ़ील्ड पर लागू होती है जो डॉक वैल्यू का समर्थन करती हैं और डॉक वैल्यू के साथ कुछ स्टोरेज ब्लोट आता है। यदि आपको केवल डायनेमोडीबी डेटा पर एग्रीगेशन के लिए समर्थन की आवश्यकता है, तो डेटा वेयरहाउस का उपयोग करना अधिक लागत प्रभावी हो सकता है जो व्यापक डेटासेट पर विश्लेषणात्मक प्रश्नों के लिए डेटा को कुशलतापूर्वक संपीड़ित कर सकता है। डॉक वैल्यूज यहाँ ढांचे का एक उच्च-स्तरीय अवलोकन दिया गया है: Elasticsearch के एकत्रीकरण : आप SQL डेटाबेस की दुनिया में बकेटिंग को के समान समझ सकते हैं। आप फ़ील्ड मानों या श्रेणियों के आधार पर दस्तावेज़ों को समूहीकृत कर सकते हैं। इलास्टिक्सर्च बकेट एग्रीगेशन में नेस्टेड एग्रीगेशन और पैरेंट-चाइल्ड एग्रीगेशन भी शामिल हैं जो जॉइन सपोर्ट की कमी के लिए सामान्य समाधान हैं। बकेट एग्रीगेशन GROUP BY मीट्रिक आपको दस्तावेज़ों के एक सेट पर , , , , , आदि जैसी गणनाएँ करने की अनुमति देता है। मीट्रिक का उपयोग बकेट एकत्रीकरण के लिए मानों की गणना करने के लिए भी किया जा सकता है। मीट्रिक एकत्रीकरण: SUM COUNT AVG MIN MAX : पाइपलाइन एकत्रीकरण पर इनपुट दस्तावेजों के बजाय अन्य एकत्रीकरण हैं। आम उपयोगों में मीट्रिक के आधार पर औसत और सॉर्टिंग शामिल हैं। पाइपलाइन एकत्रीकरण एकत्रीकरण का उपयोग करते समय प्रदर्शन संबंधी निहितार्थ हो सकते हैं, विशेष रूप से जब आप । Elasticsearch को स्केल करते हैं डायनेमोडीबी पर खोज, एकत्रीकरण और जोड़ों के लिए इलास्टिकसर्च का विकल्प जबकि Elasticsearch DynamoDB से डेटा पर जटिल खोज और एकत्रीकरण करने के लिए एक समाधान है, कई इस विकल्प के साथ चिंताओं को दोहराया है। इंजीनियरिंग टीमें DynamoDB को चुनती हैं क्योंकि यह सर्वरलेस है और बहुत कम परिचालन ओवरहेड के साथ बड़े पैमाने पर इस्तेमाल किया जा सकता है। हमने सेटअप, रखरखाव, क्वेरी क्षमता और विलंबता की आसानी पर के लिए कुछ अन्य विकल्पों का मूल्यांकन किया है, जिसमें एथेना, स्पार्क और रॉकसेट शामिल हैं। सर्वरलेस समर्थकों ने DynamoDB पर एनालिटिक्स रॉकसेट इलास्टिकसर्च का एक विकल्प है और एलेक्स डेब्री ने रॉकसेट पर SQL का उपयोग करके बारे में बताया है। रॉकसेट एक क्लाउड-नेटिव डेटाबेस है जिसमें है, जिससे इसे शुरू करना और विश्लेषणात्मक उपयोग के मामलों को स्केल करना आसान हो जाता है, जिसमें जटिल जॉइन से जुड़े उपयोग के मामले भी शामिल हैं। आप $300 क्रेडिट के साथ हमारे में इलास्टिकसर्च के विकल्प के रूप में रॉकसेट का पता लगा सकते हैं। क्वेरीज़ को फ़िल्टर करने और एकत्र करने के डायनेमोडीबी के लिए एक बिल्ट-इन कनेक्टर निःशुल्क परीक्षण