अमेज़ॅन डायनेमोडीबी: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 67: Line 67:
डाइनेमो डी बी अपनी सर्वव्यापकता के कारण अपने वाक्य - विन्यास के लिए [[JSON|जेएसओएन]] का उपयोग करता है। सूची निर्मित क्रिया मात्र तीन तर्कों की अनुरोध करती है: सूची नाम, समाधान योजना--एक सूची जिसमें एक विभाजन समाधान और एक वैकल्पिक संक्षेप समाधान होती है। और विशेषता परिभाषाएँ--परिभाषित की जाने वाली विशेषताओं की एक सूची जिसमें अल्प से अल्प उपयोग की जाने वाली विशेषताओं के लिए परिभाषाएं होनी चाहिए एवं विभाजन और संक्षेप कुंजियाँ है। जबकि सम्बंधित डेटाबेस शक्तिशाली प्रश्नचिहन भाषाएँ प्रदान करते हैं, डाइनेमो डी बी मात्र स्थापित , मार्ग , अद्यतन और विलोपन संचालन प्रदान करता है। स्थापित अनुरोधों में सूची नाम विशेषता और एक मद विशेषता सम्मिलित होती है, जिसमें मद की सभी विशेषताएँ और मान सम्मिलित होते हैं। अद्यतन अनुरोध समान वाक्य - विन्यास का अनुसरण करता है। इसी प्रकार, किसी मद को प्राप्त करने या प्रथक करने के लिए, मात्र एक सूची नाम और समाधान निर्दिष्ट करना है।
डाइनेमो डी बी अपनी सर्वव्यापकता के कारण अपने वाक्य - विन्यास के लिए [[JSON|जेएसओएन]] का उपयोग करता है। सूची निर्मित क्रिया मात्र तीन तर्कों की अनुरोध करती है: सूची नाम, समाधान योजना--एक सूची जिसमें एक विभाजन समाधान और एक वैकल्पिक संक्षेप समाधान होती है। और विशेषता परिभाषाएँ--परिभाषित की जाने वाली विशेषताओं की एक सूची जिसमें अल्प से अल्प उपयोग की जाने वाली विशेषताओं के लिए परिभाषाएं होनी चाहिए एवं विभाजन और संक्षेप कुंजियाँ है। जबकि सम्बंधित डेटाबेस शक्तिशाली प्रश्नचिहन भाषाएँ प्रदान करते हैं, डाइनेमो डी बी मात्र स्थापित , मार्ग , अद्यतन और विलोपन संचालन प्रदान करता है। स्थापित अनुरोधों में सूची नाम विशेषता और एक मद विशेषता सम्मिलित होती है, जिसमें मद की सभी विशेषताएँ और मान सम्मिलित होते हैं। अद्यतन अनुरोध समान वाक्य - विन्यास का अनुसरण करता है। इसी प्रकार, किसी मद को प्राप्त करने या प्रथक करने के लिए, मात्र एक सूची नाम और समाधान निर्दिष्ट करना है।


==सिस्टम आर्किटेक्चर==
==सिस्टम संरचनाएं==
[[File:Dynamodb--table-creation.png|thumb|डाइनेमो डी बी में निर्माण तालिका]]
[[File:Dynamodb--table-creation.png|thumb|डाइनेमो डी बी में निर्माण तालिका]]


Line 93: Line 93:
[[File:Aws-dynamodb-web-console-capacity.png|thumb|क्षमता टैब, प्रवर्धन]]डाइनेमो डी बी प्रदर्शन मेट्रिक्स को उजागर करता है जो उपयोगकर्ताओं को इसे सही ढंग से व्यवस्थित करने में सहायता करता है और डाइनेमो डी बी का उपयोग करने वाले अनुप्रयोगों को सुचारू रूप से चालू रखता है:
[[File:Aws-dynamodb-web-console-capacity.png|thumb|क्षमता टैब, प्रवर्धन]]डाइनेमो डी बी प्रदर्शन मेट्रिक्स को उजागर करता है जो उपयोगकर्ताओं को इसे सही ढंग से व्यवस्थित करने में सहायता करता है और डाइनेमो डी बी का उपयोग करने वाले अनुप्रयोगों को सुचारू रूप से चालू रखता है:
* अनुरोध और गला घोंटना
* अनुरोध और गला घोंटना
*[https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html त्रुटियां]: ProvisionedThoughtputExceededException, सशर्त जांच विफल अपवाद, आंतरिक सर्वर त्रुटि (HTTP 500)
*[https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.Errors.html त्रुटियां]: ProvisionedThoughtputExceededException, सशर्त जांच विफल अपवाद, आंतरिक सर्वर त्रुटि (एचटीटीपी 500)
* [http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.html ग्लोबल सेकेंडरी इंडेक्स] निर्माण से संबंधित मेट्रिक्स<ref>{{cite web|url=https://www.datadoghq.com/blog/top-dynamodb-performance-metrics/|title=शीर्ष DynamoDB प्रदर्शन मेट्रिक्स|date=15 September 2015 }}</ref>
* [http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.html ग्लोबल सेकेंडरी इंडेक्स] निर्माण से संबंधित मेट्रिक्स<ref>{{cite web|url=https://www.datadoghq.com/blog/top-dynamodb-performance-metrics/|title=शीर्ष DynamoDB प्रदर्शन मेट्रिक्स|date=15 September 2015 }}</ref>
इन मेट्रिक्स को अमेज़ॅन वेब सेवाएं मैनेजमेंट कंसोल का उपयोग करके, एडब्ल्यूएस [[कमांड लाइन इंटरफेस|अल्प ांड लाइन इंटरफेस]] का उपयोग करके, या [[अमेज़ॅन क्लाउडवॉच]] के साथ एकीकृत एक निगरानी उपकरण का उपयोग करके ट्रैक किया जा सकता है।<ref>{{cite web|url=https://www.datadoghq.com/blog/how-to-collect-dynamodb-metrics/|title=DynamoDB मेट्रिक्स कैसे एकत्र करें|date=15 September 2015 }}</ref>
इन मेट्रिक्स को अमेज़ॅन वेब सेवाएं मैनेजमेंट कंसोल का उपयोग करके, एडब्ल्यूएस [[कमांड लाइन इंटरफेस|अल्प ांड लाइन इंटरफेस]] का उपयोग करके, या [[अमेज़ॅन क्लाउडवॉच]] के साथ एकीकृत एक निगरानी उपकरण का उपयोग करके ट्रैक किया जा सकता है।<ref>{{cite web|url=https://www.datadoghq.com/blog/how-to-collect-dynamodb-metrics/|title=DynamoDB मेट्रिक्स कैसे एकत्र करें|date=15 September 2015 }}</ref>




==भाषा बाइंडिंग==
==भाषा अनिवार्य==
डायनेमो डीबी भाषा बाइंडिंग वाली भाषाओं और फ्रेमवर्क में [[जावा (प्रोग्रामिंग भाषा)]], [[जावास्क्रिप्ट]], नोड.जेएस, गो (प्रोग्रामिंग भाषा), सी शार्प (प्रोग्रामिंग भाषा)|सी# .NET फ्रेमवर्क|.नेट, [[पर्ल]], [[पीएचपी]], [[पायथन (प्रोग्रामिंग भाषा)]] सम्मिलित हैं। ), [[रूबी (प्रोग्रामिंग भाषा)]], रस्ट (प्रोग्रामिंग भाषा), [[हास्केल (प्रोग्रामिंग भाषा)]], [[एरलांग (प्रोग्रामिंग भाषा)]], डीजेंगो (वेब ​​फ्रेमवर्क), और [[ ग्रेल्स (ढांचा) |ग्रेल्स (ढांचा)]] ।<ref>{{cite web|url=https://aws.amazon.com/blogs/aws/amazon-dynamodb-libraries-mappers-and-mock-implementations-galore/|title=Amazon DynamoDB लाइब्रेरीज़, मैपर्स, और नकली कार्यान्वयन प्रचुर मात्रा में!|website=Amazon Web Services|date=5 April 2012 }}</ref>
डायनेमो डीबी भाषा अनिवार्य वाली भाषाओं और फ्रेमवर्क में [[जावा (प्रोग्रामिंग भाषा)|जावा (कार्यक्रम निर्माण भाषा)]], [[जावास्क्रिप्ट]], नोड.जेएस, गो (कार्यक्रम निर्माण भाषा), सी शार्प (कार्यक्रम निर्माण भाषा)|सी# .NET फ्रेमवर्क|.नेट, [[पर्ल]], [[पीएचपी]], [[पायथन (प्रोग्रामिंग भाषा)|पायथन (कार्यक्रम निर्माण भाषा)]] सम्मिलित हैं। ), [[रूबी (प्रोग्रामिंग भाषा)|रूबी (कार्यक्रम निर्माण भाषा)]], रस्ट (कार्यक्रम निर्माण भाषा), [[हास्केल (प्रोग्रामिंग भाषा)|हास्केल (कार्यक्रम निर्माण भाषा)]], [[एरलांग (प्रोग्रामिंग भाषा)|एरलांग (कार्यक्रम निर्माण भाषा)]], डीजेंगो (वेब ​​फ्रेमवर्क), और [[ ग्रेल्स (ढांचा) |ग्रेल्स (ढांचा)]] ।<ref>{{cite web|url=https://aws.amazon.com/blogs/aws/amazon-dynamodb-libraries-mappers-and-mock-implementations-galore/|title=Amazon DynamoDB लाइब्रेरीज़, मैपर्स, और नकली कार्यान्वयन प्रचुर मात्रा में!|website=Amazon Web Services|date=5 April 2012 }}</ref>




Line 105: Line 105:
[[File:Aws-dynamodb-webconsole-item (cropped).png|thumb|AWS डाइनेमो डी बी : मद दृश्य]]
[[File:Aws-dynamodb-webconsole-item (cropped).png|thumb|AWS डाइनेमो डी बी : मद दृश्य]]


=== HTTP एपीआई ===
=== एचटीटीपी एपीआई ===
[https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html HTTP API] के विरुद्ध, प्रश्नचिहन मद:<syntaxhighlight lang="http">
[https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html एचटीटीपी एपीआई] के विरुद्ध, प्रश्नचिहन मद:<syntaxhighlight lang="http">
POST / HTTP/1.1
POST / HTTP/1.1
Host: dynamodb.<region>.<domain>;
Host: dynamodb.<region>.<domain>;
Line 161: Line 161:




=== जाओ ===
=== पदच्युत ===


गो में मद प्राप्त करें (प्रोग्रामिंग भाषा):<syntaxhighlight lang="go">
पदच्युत में मद प्राप्त करें (कार्यक्रम निर्माण भाषा):<syntaxhighlight lang="go">
getItemInput := &dynamodb.GetItemInput{
getItemInput := &dynamodb.GetItemInput{
TableName: aws.String("happy-marketer"),
TableName: aws.String("happy-marketer"),
Line 176: Line 176:
}
}
getItemOutput, err := dynamodbClient.GetItem(getItemInput)
getItemOutput, err := dynamodbClient.GetItem(getItemInput)
</syntaxhighlight>Go में निष्कासित नाद (प्रोग्रामिंग भाषा):<syntaxhighlight lang="go">
</syntaxhighlight>पदच्युत में निष्कासित मद (कार्यक्रम निर्माण भाषा):<syntaxhighlight lang="go">
deleteItemInput := &dynamodb.DeleteItemInput{
deleteItemInput := &dynamodb.DeleteItemInput{
TableName: aws.String("happy-marketer"),
TableName: aws.String("happy-marketer"),
Line 193: Line 193:
panic(err)
panic(err)
}
}
</syntaxhighlight>[https://docs.aws.amazon.com/sdk-for-go/api/service/dynamodb/expression/#UpdateBuilder UpdateItem] का उपयोग करके गो में [https://aws.amazon.com/blogs/developer/introduction -amazon-dynamodb-expression-builder-in-the-aws-sdk-for-go/ एक्सप्रेशन बिल्डर]:<syntaxhighlight lang="go">
</syntaxhighlight>[https://aws.amazon.com/blogs/developer/introduction अभिव्यक्ति निर्माता] का उपयोग करके पदच्युत में [https://docs.aws.amazon.com/sdk-for-go/api/service/dynamodb/expression/#UpdateBuilder अद्यतन मद]  
 
<syntaxhighlight lang="go">
update := expression.Set(
update := expression.Set(
expression.Name(name),
expression.Name(name),

Revision as of 01:45, 17 July 2023

अमेज़ॅन डायनामो डीबी
Developer(s)अमेजन डॉट कॉम
Initial releaseJanuary 2012; 12 years ago (2012-01)[1]
Written inजावा
Operating systemरेखित-मंच
Available inअंग्रेज़ी
TypeTemplate:समतल सूची
License स्वामित्व
Websiteaws.amazon.com/dynamodb/

अमेज़न डाइनेमो डी बी एक संपूर्ण रूप से प्रबंधित स्वामित्व वाला एनओएसक्यूएल डेटाबेस है जो अमेज़न डॉट कॉम के माध्यम से अमेज़न वेब सेवाएं विभाग के भाग के रूप में प्रस्तुत किया गया है।[2][3] डाइनेमो डी बी प्रतिकृति (कंप्यूटिंग), स्वत: प्रवर्धन, एन्क्रिप्शन स्थिरता और अन्य सुविधाओं के मध्य आवश्यकता होना, पूर्तिकर के लिए अंतर्निहित समर्थन के साथ एक तीव्र सतत डेटा संरचना समाधान-मान डेटा संग्रह प्रदान करता है।[4][5]

इसके पश्चात् भी तीसरे पक्ष के संबंधित डेटाबेस प्रबंधन सिस्टम को अमेज़ॅन के ग्राहक मूल को नियंत्रण के लिए संघर्ष करना पड़ा है।

पृष्ठभूमि

अमेज़न डॉट कॉम के सीटीओ वर्नर वोगल्स ने 2012 की घोषणा में इस परियोजना के लिए प्रेरणा प्रदान की है।[6] अमेज़ॅन का प्रारंभ सेवाओं के विकेन्द्रीकृत नेटवर्क के रूप में हुई थी। मूल रूप से, सेवाओं की एक-दूसरे के डेटाबेस तक प्रत्यक्ष रूप से निकटता थी। जब यह इंजीनियरिंग संचालन पर एक बाधा बन गया तो सेवाएं सार्वजनिक-प्रतिक्रिया वाले एपीआई के पक्ष में इस प्रत्यक्ष रूप से निकटता स्वरूप से दूरस्थ हो गईं है। इसके पश्चात् भी तीसरे पक्ष के संबंधित डेटाबेस प्रबंधन सिस्टम को अमेज़ॅन के ग्राहक मूल को नियंत्रण के लिए संघर्ष करना पड़ा है। इसकी पराकाष्ठा 2004 के छुट्टियों के समय हुई, जब उच्च यातायात के कारण अनेक प्रौद्योगिकियाँ विफल हो गईं थी।


डेटा अतिरेक को अल्प करने के लिए इंजीनियर संबंधपरक में सिस्टम को सामान्य कर रहे थे, जो रचना जो भंडारण के लिए अनुकूलित है। परित्याग के रूप में उन्होंने डेटा के एक दिए गए "मद" (उदाहरण के लिए, उत्पाद डेटाबेस में किसी उत्पाद से संबंधित जानकारी) को अनेक संबंधों में संग्रहीत किया और एक प्रश्न के लिए असंयुक्त भागों को एकत्रित करने में समय लगता है। अमेज़ॅन की अनेक सेवाओं ने अपने डेटा पर अधिकतर प्राथमिक-समाधान अध्ययन की अनुरोध की, और गति को सर्वोच्च प्राथमिकता के साथ, इन भागो एकत्रित रखना अत्यधिक कठिन था।[7]

भंडारण दक्षता से अनुबंध करने वाली सामग्री, अमेज़ॅन की प्रतिक्रिया डायनमो (भंडारण प्रणाली) थी, आंतरिक उपयोग के लिए बनाया गया एक अत्यधिक उपलब्ध समाधान-मान भण्डार है।[6] ऐसा लगता था कि डायनमो में वह सब कुछ था जिसकी उनके इंजीनियरों को आवश्यकता थी, किन्तु इसे अपनाने में विलम्ब हुआ है। अमेज़ॅन के विकासक ने एस3 और सामान्तः डीबी के साथ "उचित कार्य" रचना स्वरूप को चयनित करा है। चूंकि इन प्रणालियों में ध्यान देने योग्य रचना कमजोरियों थीं, किन्तु उन्होंने हार्डवेयर प्रावधान और प्रवर्धन और डेटा को पुनः से विभाजित करने के अतिरिक्त की अनुरोध नहीं किया है। अमेज़ॅन की एनओएसक्यूएल विधि का आगामी संस्करण, डाइनेमो डी बी, इन डेटाबेस प्रबंधन कार्यों को स्वचालित करता है।


अवलोकन

Web console
वेब कंसोल

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

डायनेमो डीबी सूची

डाइनेमो डी बी तालिका वस्तुओं का एक तार्किक समूह है, जो इस तालिका में संग्रहीत डेटा का प्रतिनिधित्व करती है। डाइनेमो डी बी की एनओएसक्यूएल प्रकृति को अवलोकन करते हुए, तालिकाओं के लिए यह आवश्यक नहीं है कि तालिका के सभी मद किसी पूर्व निर्धारित योजना के अनुरूप होता है।[8]


डायनेमो डीबी मद

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

किसी मद को उसकी विशेषताओं के उप-समूह जिसे समाधान कहा जाता है, का उपयोग करके तालिका में विशिष्ट रूप से निर्धारित करा जाता है।[8]

डाइनेमो डी बी कुंजियाँ

प्राथमिक समाधान विशेषताओं का एक समूह है जो डायनेमो डीबी तालिका में विशिष्ट रूप से मद की अभिज्ञान करती है। डाइनेमो डी बी तालिका के निर्माण के लिए प्राथमिक समाधान की परिभाषा की आवश्यकता थी। डायनेमो डीबी तालिका में प्रत्येक मद में प्राथमिक समाधान बनाने वाली सभी विशेषताओं का होना आवश्यक है, और तालिका में किसी भी दो मद में एक ही समाधान नहीं हो सकती है। डायनमो डीबी में प्राथमिक समाधान में एक या दो विशेषताएँ सम्मिलित हो सकती हैं।

जब प्राथमिक समाधान मात्र एक विशेषता से बनी होती है, तब इसे विभाजन समाधान कहा जाता है। विभाजन समाधान डेटा मद का भौतिक स्थान नियुक्त करती है। इस स्थिति में, तालिका में किसी भी दो मद में समान विभाजन कुंजियाँ नहीं हो सकती हैं।

जब प्राथमिक समाधान दो विशेषताओं से बनी होती है, तब प्रथम को विभाजन समाधान और संक्षेप समाधान कहा जाता है। विभाजन समाधान डेटा का भौतिक स्थान नियुक्त करती है, और संक्षेप समाधान उस भौतिक स्थान के अंदर अभिलेख की सापेक्ष तार्किक स्थिति नियुक्त करती है। इस स्थितियों में, तालिका में दो मदों में एक ही विभाजन समाधान हो सकती है, किन्तु विभाजन में किसी भी दो मद में एक ही संक्षेप समाधान नहीं हो सकती है। दूसरे शब्दों में, विभाजन समाधान और संक्षेप समाधान के दिए गए संयोजन की प्रत्याभुति है कि डायनेमो डीबी तालिका में इसके साथ अधिकतम एक मद सम्मलित होता है।[8]


डायनेमो डीबी डेटा प्रकार

डाइनेमो डी बी संख्यात्मक, श्रृंखला, बूलियन, प्रपत्र और समूह डेटा प्रकारों का समर्थन करता है।[9]


डायनेमो डीबी सूचकांक

किसी तालिका की प्राथमिक समाधान डाइनेमो डी बी तालिका का अभाव या प्राथमिक सूचकांक है।

इसके अतिरिक्त, डाइनेमो डी बी तालिका में द्वितीयक सूचकांक हो सकते हैं। एक द्वितीयक सूचकांक को एक विशेषता पर परिभाषित किया जाता है जो प्राथमिक सूचकांक के रूप में विभाजन समाधान या संक्षेप समाधान से भिन्न होता है।

जब एक द्वितीयक सूचकांक में प्राथमिक सूचकांक के समान विभाजन समाधान होती है किन्तु एक प्रथक संक्षेप समाधान होती है, तब इसे स्थानीय माध्यमिक सूचकांक कहा जाता है।

जब प्राथमिक सूचकांक और माध्यमिक सूचकांक में प्रथक -प्रथक विभाजन समाधान होती है, तब माध्यमिक सूचकांक को वैश्विक माध्यमिक सूचकांक के रूप में जाना जाता है।[8]


विकास संबंधी विचार

वाक्य - विन्यास

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

सिस्टम संरचनाएं

डाइनेमो डी बी में निर्माण तालिका

डेटा संरचनाएं

डेटा प्रबंधित करने के लिए डाइनेमो डी बी हैश फंकशन और बी-वृक्ष का उपयोग करता है। प्रवेश पर, डेटा को पहले विभाजन समाधान पर हैशिंग के माध्यम के विभिन्न विभाजनों में वितरित किया जाता है। प्रत्येक विभाजन 10 जीबी तक डेटा संग्रहीत कर सकता है और अभाव रूप से 1,000 लेखन क्षमता इकाइयों (डब्ल्यूसीयू) और 3,000 अध्ययन की क्षमता इकाइयों (आरसीयू) को संभाल सकता है।[10] एक आरसीयू आकार में 4KB तक की वस्तुओं के लिए प्रति सेकंड अध्ययन वाली एक शक्तिशाली स्थिरता या प्रति सेकंड दो अंतिम स्थिरता अध्ययन का प्रतिनिधित्व करता है।[11] एक WCU 1KB आकार तक के मद के लिए प्रति सेकंड एक राइट का प्रतिनिधित्व करता है।

डेटा हानि को रोकने के लिए, डाइनेमो डी बी में प्रतिकृति और दीर्घकालिक भंडारण की दो-स्तरीय पूर्तिकर प्रणाली है।[12] प्रत्येक विभाजन में तीन नोड होते हैं, जिनमें से प्रत्येक में उस विभाजन के डेटा की एक प्रति होती है। प्रत्येक नोड में दो डेटा संरचनाएं भी होती हैं: एक बी ट्री जिसका उपयोग वस्तुओं का पता लगाने के लिए किया जाता है, और एक प्रतिकृति लॉग जो नोड में किए गए सभी परिवर्तनों को नोट करता है। डाइनेमो डी बी समय-समय पर इन दो डेटा संरचनाओं का स्नैपशॉट लेता है और उन्हें अमेज़न S3 में एक महीने के लिए संग्रहीत करता है जिससे इंजीनियर अपने डेटाबेस की पॉइंट-इन-टाइम पुनर्स्थापना कर सकें।

प्रत्येक विभाजन के अंदर, तीन नोड्स में से एक को लीडर नोड नामित किया गया है। सभी लेखन कार्य प्रचार से पहले लीडर नोड के माध्यम से यात्रा करते हैं, जो डाइनेमो डी बी में लेखन को सुसंगत बनाता है। अपनी स्थिति बनाए रखने के लिए, लीडर हर 1.5 सेकंड में एक दूसरे नोड को दिल की धड़कन भेजता है। यदि किसी अन्य नोड को दिल की धड़कन मिलना बंद हो जाए, तब यह एक नए नेता के चुनाव की प्रारंभिक कर सकता है। डाइनेमो डी बी नेताओं का चुनाव करने के लिए Paxos (कंप्यूटर विज्ञान) का उपयोग करता है।

विभाजन और नोड्स के प्रावधान और प्रबंधन जैसे इंजीनियरिंग अतिरिक्त ्स के कारण अमेज़ॅन इंजीनियरों ने मूल रूप से डायनमो से परहेज किया।[7]उत्तर में, डाइनेमो डी बी टीम ने डेटाबेस को प्रबंधित करने के लिए एक सेवा बनाई जिसे वह AutoAdmin कहती है।[12]जब कोई नोड प्रतिक्रिया देना बंद कर देता है तब ऑटोएडमिन उसे दूसरे नोड से डेटा कॉपी करके बदल देता है। जब कोई विभाजन अपनी तीन सीमाओं (RCU, WCU, या 10GB) में से किसी एक से अधिक हो जाता है, तब AutoAdmin डेटा को और अधिक खंडित करने के लिए स्वचालित रूप से अतिरिक्त विभाजन जोड़ देगा।[10]

सम्बंधित मॉडल में इंडेक्सिंग सिस्टम की तरह, डाइनेमो डी बी अनुरोध करता है कि किसी तालिका का कोई भी अद्यतन तालिका के प्रत्येक सूचकांक में दिखाई दे। डाइनेमो डी बी इसे लॉग प्रोपेमार्ग र नामक सेवा का उपयोग करके संभालता है, जो प्रत्येक नोड में प्रतिकृति लॉग की सदस्यता लेता है और आवश्यकतानुसार सूचकांकों को अतिरिक्त स्थापित , अद्यतन और विलोपन अनुरोध भेजता है।[12]क्योंकि सूचकांकों के परिणामस्वरूप लेखन अनुरोधों के लिए पर्याप्त प्रदर्शन हिट होता है, डाइनेमो डी बी किसी उपयोगकर्ता को किसी भी तालिका में उनमें से अधिकतम पांच की अनुमति देता है।[citation needed]

प्रश्नचिहन निष्पादन

मान लीजिए कि एक डाइनेमो डी बी उपयोगकर्ता एक राइट ऑपरेशन (स्थापित , अद्यतन या विलोपन ) जारी करता है। जबकि एक विशिष्ट सम्बंधित सिस्टम SQL प्रश्नचिहन को सम्बंधित बीजगणित में बदल देगा और अनुकूलन एल्गोरिदम चलाएगा, डाइनेमो डी बी दोनों प्रक्रियाओं को छोड़ देता है और काम करने का अधिकार प्राप्त कर लेता है।[12]अनुरोध डाइनेमो डी बी अनुरोध राउटर पर आता है, जो प्रमाणित करता है--क्या अनुरोध वहां से आ रहा है/जिसके होने का प्रमाणित किया गया है? ––और प्राधिकरण की जांच करता है––क्या अनुरोध सबमिट करने वाले उपयोगकर्ता के पास अपेक्षित अनुमतियां हैं? यह मानते हुए कि ये चेक पास हो गए हैं, सिस्टम उचित विभाजन में निकटताने के लिए अनुरोध की विभाजन समाधान को हैश कर देता है। अंदर तीन नोड हैं, प्रत्येक में विभाजन के डेटा की एक प्रति है। सिस्टम पहले लीडर नोड को लिखता है, फिर दूसरे नोड को लिखता है, फिर एक सफलता संदेश भेजता है, और अंत में तीसरे नोड को प्रचारित करता रहता है। लेखन सुसंगत होते हैं क्योंकि वे सदैव लीडर नोड के माध्यम से समात्र े पहले यात्रा करते हैं।

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

अब मान लीजिए कि एक डाइनेमो डी बी उपयोगकर्ता एक मार्ग ऑपरेशन जारी करता है। अनुरोध राउटर प्रमाणीकरण और प्राधिकरण के साथ पहले की तरह आगे बढ़ता है। इसके पश्चात्, जैसा कि ऊपर बताया गया है, उचित हैश में निकटताने के लिए हमारे पास अपनी विभाजन समाधान हैश है। अब, हमें एक समस्या का प्रतिक्रिया करना पड़ता है: तीन नोड्स अंततः एक-दूसरे के साथ संगति में हैं, हम कैसे नियुक्त कर सकते हैं कि किसकी जांच करनी है? रीड जारी करते समय डाइनेमो डी बी उपयोगकर्ता को दो विकल्प प्रदान करता है: सुसंगत और अंततः सुसंगत। लगातार पढ़ा गया लीडर नोड पर जाता है। किन्तु स्थिरता-उपलब्धता व्यापार-बंद यहां पुनः से अपना सिर उठाता है: रीड-हेवी सिस्टम में, सदैव लीडर से अध्ययन से एकल नोड प्रभावित हो सकता है और उपलब्धता अल्प हो सकती है।

दूसरा विकल्प, एक अंततः संगति सुसंगत पढ़ना, एक यादृच्छिक नोड का चयन करता है। व्यवहार में, यह वह स्थान है जहां डाइनेमो डी बी उपलब्धता के लिए स्थिरता का व्यापार करता है। यदि हम यह मार्ग अपनाते हैं, तब असंगति की संभावना क्या है? हमें सफलता लौटाने और तीसरे नोड तक प्रचार प्रारंभिक करने के लिए एक लेखन ऑपरेशन की आवश्यकता होगी, किन्तु समाप्त नहीं। हमें इस तीसरे नोड को लक्षित करने के लिए अपने मार्ग की भी आवश्यकता होगी। इसका कारणहै कि राइट ऑपरेशन के प्रसार विंडो के अंदर असंगतता की 1-में-3 संभावना है। यह खिड़की कितनी लंबी है? किसी भी संख्या में आपदाओं के कारण एक नोड पिछड़ सकता है, किन्तु अधिकांश स्थितियोंमें, तीसरा नोड लीडर के मिलीसेकंड के अंदर अप-टू-डेट होता है।

प्रदर्शन

क्षमता टैब, प्रवर्धन

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

इन मेट्रिक्स को अमेज़ॅन वेब सेवाएं मैनेजमेंट कंसोल का उपयोग करके, एडब्ल्यूएस अल्प ांड लाइन इंटरफेस का उपयोग करके, या अमेज़ॅन क्लाउडवॉच के साथ एकीकृत एक निगरानी उपकरण का उपयोग करके ट्रैक किया जा सकता है।[14]


भाषा अनिवार्य

डायनेमो डीबी भाषा अनिवार्य वाली भाषाओं और फ्रेमवर्क में जावा (कार्यक्रम निर्माण भाषा), जावास्क्रिप्ट, नोड.जेएस, गो (कार्यक्रम निर्माण भाषा), सी शार्प (कार्यक्रम निर्माण भाषा)|सी# .NET फ्रेमवर्क|.नेट, पर्ल, पीएचपी, पायथन (कार्यक्रम निर्माण भाषा) सम्मिलित हैं। ), रूबी (कार्यक्रम निर्माण भाषा), रस्ट (कार्यक्रम निर्माण भाषा), हास्केल (कार्यक्रम निर्माण भाषा), एरलांग (कार्यक्रम निर्माण भाषा), डीजेंगो (वेब ​​फ्रेमवर्क), और ग्रेल्स (ढांचा)[15]


कोड उदाहरण

AWS डाइनेमो डी बी : मद दृश्य

एचटीटीपी एपीआई

एचटीटीपी एपीआई के विरुद्ध, प्रश्नचिहन मद:

POST / HTTP/1.1
Host: dynamodb.<region>.<domain>;
Accept-Encoding: identity
Content-Length: <PayloadSizeBytes>
User-Agent: <UserAgentString>
Content-Type: application/x-amz-json-1.0
Authorization: AWS4-HMAC-SHA256 Credential=<Credential>, SignedHeaders=<Headers>, Signature=<Signature>
X-Amz-Date: <Date>
X-Amz-Target: DynamoDB_20120810.Query

{
    "TableName": "Reply",
    "IndexName": "PostedBy-Index",
    "Limit": 3,
    "ConsistentRead": true,
    "ProjectionExpression": "Id, PostedBy, ReplyDateTime",
    "KeyConditionExpression": "Id = :v1 AND PostedBy BETWEEN :v2a AND :v2b",
    "ExpressionAttributeValues": {
        ":v1": {"S": "Amazon DynamoDB#DynamoDB Thread 1"},
        ":v2a": {"S": "User A"},
        ":v2b": {"S": "User C"}
    },
    "ReturnConsumedCapacity": "TOTAL"
}

नमूना प्रतिक्रिया:

HTTP/1.1 200 OK
x-amzn-RequestId: <RequestId>
x-amz-crc32: <Checksum>
Content-Type: application/x-amz-json-1.0
Content-Length: <PayloadSizeBytes>
Date: <Date>
 {
    "ConsumedCapacity": {
        "CapacityUnits": 1,
        "TableName": "Reply"
    },
    "Count": 2,
    "Items": [
        {
            "ReplyDateTime": {"S": "2015-02-18T20:27:36.165Z"},
            "PostedBy": {"S": "User A"},
            "Id": {"S": "Amazon DynamoDB#DynamoDB Thread 1"}
        },
        {
            "ReplyDateTime": {"S": "2015-02-25T20:27:36.165Z"},
            "PostedBy": {"S": "User B"},
            "Id": {"S": "Amazon DynamoDB#DynamoDB Thread 1"}
        }
    ],
    "ScannedCount": 2
}


पदच्युत

पदच्युत में मद प्राप्त करें (कार्यक्रम निर्माण भाषा):

getItemInput := &dynamodb.GetItemInput{
	TableName: aws.String("happy-marketer"),
	Key: map[string]*dynamodb.AttributeValue{
		"pk": {
			S: aws.String("project"),
		},
		"sk": {
			S: aws.String(email + " " + name),
		},
	},
}
getItemOutput, err := dynamodbClient.GetItem(getItemInput)

पदच्युत में निष्कासित मद (कार्यक्रम निर्माण भाषा):

deleteItemInput := &dynamodb.DeleteItemInput{
	TableName: aws.String("happy-marketer"),
	Key: map[string]*dynamodb.AttributeValue{
		"pk": {
			S: aws.String("project"),
		},
		"sk": {
			S: aws.String(email + " " + name),
		},
	},
}

_, err := dynamodbClient.DeleteItem(deleteItemInput)
if err != nil {
	panic(err)
}

अभिव्यक्ति निर्माता का उपयोग करके पदच्युत में अद्यतन मद

update := expression.Set(
	expression.Name(name),
	expression.Value(value),
)

expr, err := expression.NewBuilder().WithUpdate(update).Build()
if err != nil {
	panic(err)
}

updateItemInput := &dynamodb.UpdateItemInput{
	TableName: aws.String(tableName),
	Key: map[string]*dynamodb.AttributeValue{
		"pk": {
			S: aws.String("project"),
		},
		"sk": {
			S: aws.String("mySortKeyValue"),
		},
	},
	UpdateExpression:          expr.Update(),
	ExpressionAttributeNames:  expr.Names(),
	ExpressionAttributeValues: expr.Values(),
}
fmt.Printf("updateItemInput: %#v\n", updateItemInput)

_, err = dynamodbClient.UpdateItem(updateItemInput)
if err != nil {
	panic(err)
}

-

यह भी देखें

संदर्भ

  1. "Amazon DynamoDB – a Fast and Scalable NoSQL Database Service Designed for Internet Scale Applications - All Things Distributed". www.allthingsdistributed.com. 18 January 2012.
  2. Clark, Jack (2012-01-19). "अमेज़न DynamoDB क्लाउड डेटाबेस सेवा पर स्विच करता है". ZDNet. Retrieved 2012-01-21.
  3. "Fast NoSQL Key-Value Database – Amazon DynamoDB – Amazon Web Services". Amazon Web Services, Inc. (in English). Retrieved 2023-05-28.
  4. "Amazon DynamoDB Features | NoSQL Key-Value Database | Amazon Web Services". Amazon Web Services, Inc. (in English). Retrieved 2023-05-28.
  5. "What is Amazon DynamoDB? - Amazon DynamoDB". docs.aws.amazon.com. Retrieved 2023-05-28.
  6. 6.0 6.1 Vogels, Werner (2012-01-18). "Amazon DynamoDB – a Fast and Scalable NoSQL Database Service Designed for Internet Scale Applications". All Things Distributed blog. Retrieved 2012-01-21.
  7. 7.0 7.1 DeCandia, Giuseppe; Hastorun, Deniz; Jampani, Madan; Kakulapati, Gunavardhan; Lakshman, Avinash; Pilchin, Alex; Sivasubramanian, Swaminathan; Vosshall, Peter; Vogels, Werner (October 2007). "Dynamo: Amazon's Highly Available Key–value Store". SIGOPS Oper. Syst. Rev. 41 (6): 205–220. doi:10.1145/1323293.1294281. ISSN 0163-5980.
  8. 8.0 8.1 8.2 8.3 "Amazon DynamoDB के मुख्य घटक - Amazon DynamoDB". docs.aws.amazon.com. Retrieved 2023-05-28.
  9. "Amazon DynamoDB में समर्थित डेटा प्रकार और नामकरण नियम - Amazon DynamoDB". docs.aws.amazon.com. Retrieved 2023-05-28.
  10. 10.0 10.1 Gunasekara, Archie (2016-06-27). "DynamoDB विभाजन में एक गहरा गोता". Shine Solutions Group (in English). Retrieved 2019-08-03.
  11. "Amazon DynamoDB डेवलपर गाइड". AWS. August 10, 2012. Retrieved July 18, 2019.
  12. 12.0 12.1 12.2 12.3 AWS re:Invent 2018: Amazon DynamoDB Under the Hood: How We Built a Hyper-Scale Database (DAT321) (in English), retrieved 2019-08-03
  13. "शीर्ष DynamoDB प्रदर्शन मेट्रिक्स". 15 September 2015.
  14. "DynamoDB मेट्रिक्स कैसे एकत्र करें". 15 September 2015.
  15. "Amazon DynamoDB लाइब्रेरीज़, मैपर्स, और नकली कार्यान्वयन प्रचुर मात्रा में!". Amazon Web Services. 5 April 2012.


बाहरी संबंध