MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

MongoDB डेटाबेस संरचना और सर्वोत्तम अभ्यास सहायता

आप डेटाबेस स्कीमा मेरे लिए 'क्लासिक' रिलेशनल डेटाबेस स्कीमा के रूप में दिखते हैं। डेटा डीनोर्मलाइज़ेशन के लिए मोंगोडब अच्छा फिट है। मुझे लगता है कि जब आप मार्ग प्रदर्शित करते हैं तो आप सभी संबंधित ग्राहकों, ड्राइवर, ट्रक को लोड कर रहे होते हैं।

यदि आप अपने सिस्टम को वास्तव में तेज़ बनाना चाहते हैं तो आप रूट संग्रह में सब कुछ एम्बेड कर सकते हैं।

इसलिए मैं आपके स्कीमा के निम्नलिखित संशोधनों का सुझाव देता हूं:

  1. ग्राहक - जैसा है वैसा ही
  2. ट्रक - जैसा है वैसा ही
  3. ड्राइवर - जैसा है वैसा ही
  4. मार्ग-सूची:

    संदर्भ के बजाय स्टॉप के अंदर ग्राहकों के बारे में डेटा एम्बेड करें। ट्रक भी लगाया। इस मामले में स्कीमा होगा:

     {
         "route_name": "monday_1",
         "day": "monday",
         "truck": {
             _id = 1,
             // here will be all truck data
         },
         "stops": [{
             "customer": {
                 _id = 1,
                 //here will be all customer data
             }
         }, {
             "customer": {
                 _id = 2,
                 //here will be all customer data
             }
         }]
     }
    
  5. मार्ग:

    जब ड्राइवर नया रूट शुरू करता है तो रूट-लिस्ट से रूट कॉपी करता है और इसके अलावा ड्राइवर की जानकारी एम्बेड करता है:

     {
         //copy all route-list data (just make new id for the current route and leave reference to routes-list. In this case you will able to sync route with route-list.)
         "_id": "1",
         route_list_id: 1,
         "start_time": "04:31 AM",
         "status": "active",
         driver: {
             //embedd all driver data here
         },
         "stops": [{
             "customer": {
                 //all customer data
             },
             "status": "complete",
             "start_time": "04:45 AM",
             "finish_time": "04:48 AM",
             "elapsed_time": "3"
         }]
     }
    

मुझे लगता है कि आप अपने आप से पूछ रहे हैं कि मुख्य संग्रह में ड्राइवर, ग्राहक या अन्य असामान्य डेटा बदल जाने पर क्या करें। हाँ, आपको अन्य संग्रहों में सभी असामान्य डेटा को अपडेट करने की आवश्यकता है। आपको शायद अरबों दस्तावेज़ों को अपडेट करने की आवश्यकता होगी (आपके सिस्टम के आकार पर निर्भर करता है) और यह ठीक है। यदि अधिक समय लगेगा तो आप इसे एसिंक्स कर सकते हैं।

उपरोक्त डेटा संरचना में क्या लाभ होता है?

  1. प्रत्येक दस्तावेज़ में वह सभी डेटा होता है जिसे आपको अपने आवेदन में प्रदर्शित करने की आवश्यकता हो सकती है। इसलिए, उदाहरण के लिए, जब आपको प्रदर्शन मार्गों की आवश्यकता होती है, तो आपको लोड से संबंधित ग्राहकों, ड्राइवर, ट्रक की आवश्यकता नहीं होती है।
  2. आप अपने डेटाबेस में कोई भी कठिन प्रश्न पूछ सकते हैं। उदाहरण के लिए आपकी स्कीमा में आप क्वेरी बना सकते हैं जो सभी मार्गों को वापस कर देगी जिसमें नाम ="बिल" के साथ ग्राहक के स्टॉप में स्टॉप शामिल हैं (आपको पहले नाम से लोड ग्राहक की आवश्यकता है, आईडी प्राप्त करें, और अपनी वर्तमान स्कीमा में ग्राहक आईडी देखें)।

शायद आप खुद से पूछ रहे हैं कि कुछ मामलों में आपका डेटा अनसिंक्रनाइज़ किया जा सकता है, लेकिन इसे हल करने के लिए आपको बस कुछ यूनिट टेस्ट बनाने की ज़रूरत है ताकि यह सुनिश्चित हो सके कि आप अपने डीनॉर्मोलाइज़्ड डेटा को सही तरीके से अपडेट करते हैं।

आशा है कि उपरोक्त आपको दस्तावेज़ डेटाबेस के दृष्टिकोण से दुनिया को गैर-संबंधपरक पक्ष से देखने में मदद करेगा।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB में अब से 7 दिन पहले के रिकॉर्ड खोजें

  2. पीएचपी स्टार्टअप मोंगो:मॉड्यूल शुरू करने में असमर्थ

  3. एमजीओ (गो) में मॉडल के रूप में इंटरफ़ेस प्रकार का उपयोग कैसे करें?

  4. MongoDB - MySQL SUM (केस कब) समतुल्य?

  5. दूरस्थ mongodb सर्वर को django/djongo से कनेक्ट नहीं कर सकता