2017-05-24 22 views
6

डायनेमोड के साथ एकत्रीकरण कैसे प्राप्त किया जाता है? मोंगोड और सोफेबेस के पास नक्शा कम करने का नक्शा है।डायनेमोड के साथ मूल एकत्रीकरण कैसे करें?

आइए कहें कि हम एक तकनीकी ब्लॉग बना रहे हैं जहां उपयोगकर्ता लेख पोस्ट कर सकते हैं। और कहें लेख टैग किया जा सकता है।

user 
{ 
    id : 1235, 
    name : "John", 
    ... 
} 

article 
{ 
    id : 789, 
    title: "dynamodb use cases", 
    author : 12345 //userid 
    tags : ["dynamodb","aws","nosql","document database"] 
} 

उपयोगकर्ता इंटरफ़ेस में हम वर्तमान उपयोगकर्ता टैग और संबंधित गिनती के लिए दिखाना चाहते हैं।

निम्नलिखित एकत्रीकरण कैसे प्राप्त करें?

{ 
    userid : 12, 
    tag_stats:{ 
     "dynamodb" : 3, 
     "nosql" : 8 
    } 
} 

हम इस डेटा को एक अतिरिक्त एपीआई के माध्यम से प्रदान करेंगे और इसे अक्सर बुलाया जाएगा। इस जानकारी को ऐप मुख्य पृष्ठ में दिखाया गया है।

  • मैं सभी दस्तावेजों को निकालने और आवेदन स्तर पर एकत्रीकरण करने के बारे में सोच सकता हूं। लेकिन मुझे लगता है कि मेरी पढ़ने की क्षमता इकाइयां समाप्त हो जाएंगी
  • ईएमआर, रेडशिफ्ट, bigquery, aws lambda जैसे टूल का उपयोग कर सकते हैं। लेकिन मुझे लगता है कि ये डाटावायरिंग के उद्देश्य के लिए हैं।

मैं इसे प्राप्त करने के अन्य और बेहतर तरीके जानना चाहता हूं। लोग डायनामिक सरल प्रश्नों को कैसे प्राप्त कर रहे हैं जैसे कि डायनेमोड को प्राथमिक डेटा स्टोर के रूप में लागत और प्रतिक्रिया समय पर विचार करना चुना गया है।

उत्तर

4

लंबी कहानी छोटी: डायनेमो इसका समर्थन नहीं करती है। यह इस उपयोग के मामले के लिए नहीं बनाया गया है। यह कम विलंबता के साथ त्वरित डेटा पहुंच के लिए है। यह बस किसी भी समेकित कार्यक्षमता का समर्थन नहीं करता है।

  • निर्यात DynamoDB Redshift या EMR Hive को डेटा:

    आप तीन मुख्य विकल्प हैं। फिर आप एक पुराने डेटा पर SQL क्वेरी निष्पादित कर सकते हैं। इस दृष्टिकोण का लाभ यह है कि यह केवल एक बार आरसीयू का उपभोग करता है, लेकिन आप पुरानी डेटा के साथ रहेंगे।

  • हाइव के लिए DynamoDB connector का उपयोग करें और डायनेमो डीबी से सीधे पूछताछ करें। फिर आप मनमानी एसक्यूएल प्रश्न लिख सकते हैं, लेकिन इस मामले में यह सीधे डायनेमो डीबी में डेटा तक पहुंच जाएगा। नकारात्मकता यह है कि यह आपके द्वारा किए गए हर प्रश्न पर पढ़ने की क्षमता का उपभोग करेगा।

  • DynamoDB streams का उपयोग कर एक अलग तालिका में एकत्रित डेटा को बनाए रखें। उदाहरण के लिए आपके पास एक विभाजन कुंजी के रूप में UserId तालिका हो सकती है और एक विशेषता के रूप में टैग और गणना के साथ घोंसला वाला नक्शा हो सकता है। आपके मूल डेटा में प्रत्येक अपडेट पर डायनेमो डीबी धाराएं समग्र तालिका को अपडेट करने के लिए आपके होस्ट पर एक लैम्ब्डा फ़ंक्शन या कुछ कोड निष्पादित करेंगी। यह सबसे अधिक लागत प्रभावी तरीका है, लेकिन आपको प्रत्येक नई क्वेरी के लिए अतिरिक्त कोड लागू करने की आवश्यकता होगी।

बेशक आप आवेदन स्तर पर डेटा निकाल सकते हैं और वहाँ यह एकत्र करती हैं, लेकिन मैं यह करने के लिए सिफारिश नहीं होगा। जब तक आपके पास एक छोटी सी टेबल न हो, आपको प्रावधान क्षमता के केवल एक हिस्से का उपयोग करके थ्रॉटलिंग के बारे में सोचना होगा (आप अपने आरसीयू का 20% एकत्रीकरण के लिए और 100% नहीं) का उपभोग करना चाहते हैं, और कई श्रमिकों के बीच अपना काम कैसे वितरित करना है ।

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

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