हम एक भारित निर्देशित ग्राफ ठीकरा चाहते हैं,एक भारित निर्देशित ग्राफ (कुंजी/मान डेटाबेस से अधिक)
उपयोगकर्ता नोड्स और किनारों गतिशील रूप में जोड़ सकते हैं, पहले DB/ग्राफ़ खाली है पर विभाजन।
हम एक कुंजी/मान डेटाबेस (शायद Redis) में नोड्स और किनारों रखें: प्रत्येक नोड के लिए, हम कुंजी के रूप में nodeId और संदर्भित नोड्स की चाबियों का एक sortedset sortedSet में प्रत्येक nodeId के स्कोर है होगा किनारे का वजन।
(के बारे में प्रश्न देखें कि यहाँ: Redis: Implement Weighted Directed Graph)
हम एक संतुलन बाधा नहीं है, ग्राफ़ पर सबसे आम कार्रवाई डिज्कस्ट्रा है, और हम मैं/हे कम करने के लिए (में नेटवर्क की तरह था हमारे मामले)
संभव समाधान: प्रत्येक DB सर्वर आईपी के साथ अन्य सर्वर की एक सूची है:
कुंजी: server1, मूल्य: .... 250,1
कुंजी: server2, मूल्य: .... 250.2
कुंजी: server3, मूल्य: .... 250,3
और प्रत्येक nodeId
serverX.originalNodeId हो जाएगा क्या एल्गोरिथ्म है कि निर्णय लेता है जो नोड जहां चला जाता है हो सकता है? क्या हमें नोड की पुन: स्थिति का समर्थन करना चाहिए?
मुझे लगता है कि अनुभवहीन दृष्टिकोण, होगा serverX नोड एक जोड़ने जहां argmax (सर्वर एक्स में नोड्स है कि नोड एक साथ किनारों का #), जब तक पूरी तरह से कब्जा कर लिया serverX नहीं है ..
"शार्ड"? मुझे बूढ़ा होना ही है। इसका क्या मतलब है? –
http://en.wikipedia.org/wiki/Shard_(database_architecture) – DuduAlul