DyanmoDB सर्वोत्तम अभ्यास यह स्पष्ट करते हैं कि:
आपको डायनमोबडी एप्लिकेशन में यथासंभव कुछ तालिकाओं को बनाए रखना चाहिए। अधिकांश अच्छी तरह से डिज़ाइन किए गए अनुप्रयोगों के लिए केवल एक तालिका की आवश्यकता होती है।
मुझे पता है कि यह मनोरंजक है तो बस हर एक ट्यूटोरियल के बारे में मैंने देखा है कि DyanmoDB के पास एक मल्टी-टेबल डिज़ाइन है।
लेकिन व्यवहार में इसका क्या मतलब है?
आइए तीन मुख्य संस्थाओं के साथ एक साधारण एप्लिकेशन पर विचार करें: उपयोगकर्ता, परियोजनाएं और दस्तावेज। एक उपयोगकर्ता कई परियोजनाओं का मालिक है, और एक परियोजना में कई दस्तावेज़ हो सकते हैं। हमें आमतौर पर एक उपयोगकर्ता के लिए परियोजनाओं पर और एक परियोजना के लिए दस्तावेज़ों पर क्वेरी करनी होती है। पढ़ता है एक महत्वपूर्ण मार्जिन से outnumber लिखता है।
एक भोले ट्यूटोरियल की तालिका डिज़ाइन में तीन तालिकाओं का उपयोग किया जाएगा:
Users
Hash key
user-id
Projects
Hash key Global Index
project-id user-id
Documents
Hash key Global Index
document-id project-id
हम बहुत आसानी से पतन कर सकते हैं Project
और Document
एक Documents
तालिका में:
Documents
Hash key Sort key Global Index
project-id document-id user-id
लेकिन वहाँ क्यों रुकना? उन सभी पर शासन करने के लिए एक टेबल क्यों नहीं? चूंकि User
सब कुछ का मूल है ...
Users
Hash key Sort key
user-id aspect
--------- ---------
foo user email: foo@bar.com ...
foo project:1 title: "The Foo Project"
foo project:1:document:2 document-id: 2 ...
तब हमारे पास एक ग्लोबल इंडेक्स होगा, कहते हैं, email
उपयोगकर्ता रिकॉर्ड लुकअप के लिए फ़ील्ड, और document-id
प्रत्यक्ष दस्तावेज़ लुकअप के लिए फ़ील्ड पर एक और ।
यह है कि यह कैसे काम करने वाला है? क्या इस तरह के बेतहाशा भिन्न प्रकार के डेटा को एक ही तालिका में फेंकना कानूनी है? या दूसरा, दो-टेबल डिजाइन एक बेहतर दृष्टिकोण है?
किस बिंदु पर दूसरी तालिका जोड़ना सही होगा?