मैं अपनी अस्वीकार संग्रह कंपनी के लिए रूट ट्रैकिंग/ऑप्टिमाइज़ेशन सॉफ़्टवेयर विकसित करने की प्रक्रिया में हूं और मेरी वर्तमान डेटा संरचना/स्थिति पर कुछ फीडबैक चाहूंगा। डेटा संग्रह सभी ग्राहक डेटा वाली -मोंगोडीबी डाटाबेस स्ट्रक्चर और बेस्ट प्रैक्टिस मदद
"ग्राहकों":
डेटाबेस:: डेटा
संग्रह
यहाँ मेरी MongoDB संरचना का एक सरलीकृत संस्करण है।
[
{
"cust_id": "1001",
"name": "Customer 1",
"address": "123 Fake St",
"city": "Boston"
},
{
"cust_id": "1002",
"name": "Customer 2",
"address": "123 Real St",
"city": "Boston"
},
{
"cust_id": "1003",
"name": "Customer 3",
"address": "12 Elm St",
"city": "Boston"
},
{
"cust_id": "1004",
"name": "Customer 4",
"address": "16 Union St",
"city": "Boston"
},
{
"cust_id": "1005",
"name": "Customer 5",
"address": "13 Massachusetts Ave",
"city": "Boston"
}, { ... }, { ... }, ...
]
"ट्रकों" - डेटा सभी ट्रक डेटा वाली संग्रह।
[
{
"truckid": "21",
"type": "Refuse",
"year": "2011",
"make": "Mack",
"model": "TerraPro Cabover",
"body": "Mcneilus Rear Loader XC",
"capacity": "25 cubic yards"
},
{
"truckid": "22",
"type": "Refuse",
"year": "2009",
"make": "Mack",
"model": "TerraPro Cabover",
"body": "Mcneilus Rear Loader XC",
"capacity": "25 cubic yards"
},
{
"truckid": "12",
"type": "Dump",
"year": "2006",
"make": "Chevrolet",
"model": "C3500 HD",
"body": "Rugby Hydraulic Dump",
"capacity": "15 cubic yards"
}
]
"ड्राइवरों" - डेटा सभी ड्राइवर डेटा वाली संग्रह।
[
{
"driverid": "1234",
"name": "John Doe"
},
{
"driverid": "4321",
"name": "Jack Smith"
},
{
"driverid": "3421",
"name": "Don Johnson"
}
]
"मार्ग-सूची" - डेटा सभी पूर्व निर्धारित मार्ग सूचियों वाले संग्रह।
[
{
"route_name": "monday_1",
"day": "monday",
"truck": "21",
"stops": [
{
"cust_id": "1001"
},
{
"cust_id": "1010"
},
{
"cust_id": "1002"
}
]
},
{
"route_name": "friday_1",
"day": "friday",
"truck": "12",
"stops": [
{
"cust_id": "1003"
},
{
"cust_id": "1004"
},
{
"cust_id": "1012"
}
]
}
]
"मार्गों" - डेटा सभी सक्रिय और पूरा मार्गों के लिए डेटा वाली संग्रह।
प्रत्येक दिन ड्राइवरों एक नया मार्ग शुरू से शुरू:
[
{
"routeid": "1",
"route_name": "monday1",
"start_time": "04:31 AM",
"status": "active",
"stops": [
{
"customerid": "1001",
"status": "complete",
"start_time": "04:45 AM",
"finish_time": "04:48 AM",
"elapsed_time": "3"
},
{
"customerid": "1010",
"status": "complete",
"start_time": "04:50 AM",
"finish_time": "04:52 AM",
"elapsed_time": "2"
},
{
"customerid": "1002",
"status": "incomplete",
"start_time": "",
"finish_time": "",
"elapsed_time": ""
},
{
"customerid": "1005",
"status": "incomplete",
"start_time": "",
"finish_time": "",
"elapsed_time": ""
}
]
}
]
यहाँ इस प्रक्रिया इस प्रकार दूर है।एक नया मार्ग ड्राइवरों शुरू करने से पहले करना चाहिए पहला इनपुट डेटा:
- driverid
- तारीख
- ट्रक
एक बार सभी डेटा सही ढंग से दर्ज किया गया है प्रारंभ एक नया मार्ग होगा शुरू करें:
- "मार्गों"
- क्वेरी संग्रह "मार्ग सूचियों" "दिन" के लिए + "ट्रक" मैच संग्रह में नई वस्तु बना सकते हैं और लौटने "बंद हो जाता है"
- सम्मिलित " मार्ग सूचियों मार्गों " संग्रह
के रूप में" में डेटा " "मार्ग" संग्रह के अनुसार चालक अपने दैनिक स्टॉप/कार्यों के साथ आगे बढ़ता है।
सभी कार्यों को पूरा करने पर ड्राइवर के पास "मार्ग" फ़ील्ड को "मार्ग" संग्रह में "पूर्ण" से "सक्रिय" में बदलकर रूट प्रक्रिया को पूरा करने की क्षमता होगी।
यह बताता है कि यह बताता है। कोई प्रतिक्रिया, राय, टिप्पणियां, लिंक, अनुकूलन रणनीति की सराहना की जाती है।
आपके समय के लिए अग्रिम धन्यवाद।
क्या होगा यदि ग्राहक या ट्रक या ड्राइवर जानकारी सिस्टम में अपडेट की गई हो। यह डेटा की अस्पष्टता बनाएगी। बेहतर अन्य मॉडल के केवल आईडी रखें। –