AWS MySQL RDS बनाम AWS DynamoDB [बंद]


109

मैं MySQL का उपयोग अब मेले के लिए कर रहा हूं और मैं इसकी संरचना और SQL क्वेरी आदि के साथ सहज हूं।

वर्तमान में AWS में एक नई प्रणाली का निर्माण और मैं DynamoDB देख रहा हूं। वर्तमान में मैं केवल इसके बारे में थोड़ा जानता हूं।

क्या एक बेहतर है तो दूसरा?

DynamoDB के क्या लाभ हैं?

इस फ्लैट शैली DB के लिए MySQL प्रश्नों आदि से संक्रमण क्या है?

जवाबों:


66

आप इसके बारे में AWS स्पष्टीकरण यहाँ पढ़ सकते हैं ।

संक्षेप में, यदि आपके पास मुख्य रूप से लुकअप क्वेरीज़ (और क्वेरीज़ ज्वाइन नहीं हैं), डायनमोबीडीबी (और अन्य NoSQL DB) बेहतर है। यदि आपको बहुत अधिक डेटा को संभालने की आवश्यकता है , तो आप MySQL (और अन्य RDBMS) का उपयोग करते समय सीमित रहेंगे।

आप अपने MySQL प्रश्नों और अपने डेटा स्कीमा का पुन: उपयोग नहीं कर सकते हैं, लेकिन यदि आप NoSQL सीखने के प्रयास में खर्च करते हैं, तो आप अपने टूल बॉक्स में एक महत्वपूर्ण टूल जोड़ देंगे। ऐसे कई मामले हैं जहां डायनमोडीबी सबसे सरल समाधान दे रहा है।


262

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

यदि, उदाहरण के लिए, आप ऐसे डेटा संग्रहीत कर रहे हैं जो अपने आप को एक संबंधपरक स्कीमा (पेड़ संरचनाओं, स्कीमा-कम JSON अभ्यावेदन, आदि) के लिए अच्छी तरह से उधार नहीं देता है, जिसे एक एकल कुंजी या एक कुंजी / रेंज संयोजन के खिलाफ देखा जा सकता है तो डायनामिक या कुछ अन्य NoSQL स्टोर) संभवतः आपकी सबसे अच्छी शर्त होगी।

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

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

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

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


10
यदि मैं आपके उत्तर को 100 तक बढ़ा सकता हूं, तो मैं करूंगा।
सलिल

एक सूचना मॉडल में कुछ प्रकार की समस्याएं NoSQL तरह के कार्यान्वयन के लिए अच्छी तरह से होती हैं। जब आप इस तरह की समस्याओं से घिर जाते हैं, तो अपने आप से एक सवाल पूछें कि क्या इसका मतलब NoSQL Db होगा। इनमें से कुछ
इकाइयाँ

150

हमने अपने सभी डायनमोडी टेबल को RDS MySQL में स्थानांतरित कर दिया है।

विशिष्ट कार्यों के लिए डायनमोडीबी का उपयोग करते समय यह समझ में आ सकता है कि डायनमोडीबी के शीर्ष पर एक नई प्रणाली का निर्माण वास्तव में एक बुरा विचार है। सर्वश्रेष्ठ रखी गई योजनाएं आदि, आपको हमेशा अपने डीबी से अतिरिक्त लचीलेपन की आवश्यकता होती है।

यहां हमारे कारण हैं कि हम डायनमोडीबी से चले गए:

  1. अनुक्रमण - एक नई तालिका बनाए बिना उड़ान में कुंजियों को बदलना या जोड़ना असंभव है।
  2. क्वेरी - क्वेरी डेटा बेहद सीमित है। खासकर यदि आप गैर-अनुक्रमित डेटा को क्वेरी करना चाहते हैं। निश्चित रूप से जुड़ाव असंभव है, इसलिए आपको अपने कोड / कैश लेयर पर जटिल डेटा संबंधों का प्रबंधन करना होगा।
  3. बैकअप - RDS के स्लीक बैकअप की तुलना में ऐसी थकाऊ बैकअप प्रक्रिया एक निराशाजनक आश्चर्य है
  4. जीयूआई - बुरा यूएक्स, सीमित खोज, कोई मज़ा नहीं।
  5. गति - आरडीएस की तुलना में प्रतिक्रिया समय समस्याग्रस्त है। आप अपने आप को आरडीएस के आंतरिक कैशिंग के लिए तय किए गए स्थानों पर इसकी भरपाई करने के लिए विस्तृत कैशिंग तंत्र का निर्माण करते हैं।
  6. डेटा इंटीग्रिटी - जबकि द्रव डेटा संरचना की अवधारणा के साथ शुरू करने के लिए अच्छा लगता है, आपका कुछ डेटा बेहतर "पत्थर में सेट" है। जब एक छोटा सा बग आपके डेटाबेस को नष्ट करने की कोशिश करता है तो मजबूत टाइपिंग एक आशीर्वाद है। DynamoDB के साथ कुछ भी संभव है और वास्तव में कुछ भी गलत हो सकता है।

अब हम कुछ प्रणालियों के लिए डायनेमोडीबी को एक बैकअप के रूप में उपयोग करते हैं और मुझे यकीन है कि हम भविष्य में इसे विशिष्ट, अच्छी तरह से परिभाषित कार्यों के लिए उपयोग करेंगे। यह एक बुरा डीबी नहीं है, यह आपके मुख्य प्रणाली के 100% की सेवा करने के लिए डीबी नहीं है।

जहां तक ​​फायदे हैं, मैं कहूंगा कि स्कैलेबिलिटी और ड्यूरेबिलिटी। यह अविश्वसनीय रूप से और पारदर्शी रूप से तराजू है और यह (प्रकार) हमेशा ऊपर है। ये वास्तव में महान विशेषताएं हैं, लेकिन वे नकारात्मक पहलुओं के लिए किसी भी तरह से क्षतिपूर्ति नहीं करते हैं।


11
बहुत विशिष्ट पेशेवरों / विपक्ष। महान उत्तर
स्टीवेंडेसु

10
इसमें से कुछ पुराने हैं। उदाहरण के लिए, 1 अब सत्य नहीं है।
mbroshi

2
बहुत अच्छी तरह से प्रलेखित उत्तर। हालांकि, इन चिंताओं में से कुछ दुर्लभ उपयोग के मामलों के लिए विशिष्ट हो सकते हैं। नंबर 2 - "जॉइंट्स निश्चित रूप से असंभव हैं" - डायनेमोडीबी डेटा संरचनाओं का कोई संबंध नहीं होना चाहिए - अवधि। तालिका को पूरी तरह से सामान्यीकृत किया जाना चाहिए। इसका मतलब है कि कुछ विशेषताओं को दोहराया जाता है। ऐसे मामलों के लिए, डायनेमो ट्रिगर या सशर्त लिखते हैं। यदि उपयोगकर्ता सशर्त लिखने के लिए विलंबता से नहीं निपट सकते हैं, तो एप्लिकेशन और डायनेमो के बीच एक SQS कतार लगाएं। इसके अलावा, बिंदु संख्या 6 को इस बात के लिए गलत माना जाता है कि यह डायनामोबीडी की "अखंडता" पर संदेह पैदा करता है - जो कि इरादा नहीं हो सकता है ...
doles

1
डायनमो में अभी भी प्रश्नों का लचीलापन नहीं है। हालांकि जीएसआई एक बड़ी मदद है लेकिन फिर भी हम आरडीबीएमएस स्कीमा के साथ अपने डेटा को बेहतर तरीके से मॉडल कर सकते हैं।
पावन

1
मुझे लगता है कि DynamoDB के भीतर क्वेरी क्षमताओं कुछ "gotchas" होगा। उदाहरण के लिए, यदि आपकी प्राथमिक कुंजी में केवल हैश है, तो डायनामो क्वेरी केवल 1 प्रविष्टि ही वापस कर सकती है, आप क्वेरी समय पर हैश-केवल कुंजी के लिए कोई सीमा प्रदान नहीं कर सकते, और न ही विशिष्ट हैश को जाने बिना आप क्वेरी कर सकते हैं। आइटम आप के लिए देख रहे हैं। बैचगेट केवल 100 अनुरोध स्वीकार करता है, 1MB कुल प्रतिक्रिया-आकार या 1MB कुल क्वेरी-आकार, जो भी पहले आता है। स्कैन आपको लचीला खोज देता है, लेकिन अत्यधिक अक्षम और महंगा है, फ़िल्टर करने से पहले पूरी तालिका लौटाता है।
ब्रूक्स

12

डायनमोडीबी का उपयोग करते समय आपको यह भी पता होना चाहिए कि डायनमोडीबी में आइटम / रिकॉर्ड 400KB तक सीमित हैं ( डायनमोडी सीमा देखें )। कई उपयोग मामलों के लिए यह काम नहीं करेगा। तो डायनमोडीबी कुछ चीजों के लिए अच्छा होगा लेकिन सभी के लिए नहीं। वही अन्य NoSQL डेटाबेस के कई के लिए चला जाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.